Minor calendar fixes (#9339)

Signed-off-by: Denis Bykhov <bykhov.denis@gmail.com>
This commit is contained in:
Denis Bykhov
2025-06-23 19:45:43 +05:00
committed by GitHub
parent a97ad110ff
commit d45d11ffbc
3 changed files with 8 additions and 2 deletions
+1
View File
@@ -465,6 +465,7 @@ export interface CalendarItem {
date: Timestamp
dueDate: Timestamp
day: number
blockTime: boolean
access: 'freeBusyReader' | 'reader' | 'writer' | 'owner'
}
@@ -118,6 +118,7 @@
allDay: event.allDay,
date: eventStart,
dueDate: eventEnd,
blockTime: event.blockTime,
day,
access: event.access
})
@@ -136,6 +137,7 @@
result.push({
_id: event._id,
allDay: event.allDay,
blockTime: event.blockTime,
date: eventStart,
dueDate: eventEnd,
day: -1,
@@ -343,8 +345,9 @@
}
}
const calcTime = (events: CalendarItem[]): number => {
if (events.length === 0) return 0
const calcTime = (_events: CalendarItem[]): number => {
if (_events.length === 0) return 0
const events = _events.filter((ev) => ev.blockTime)
// Extract and sort intervals by start time
const intervals = events.map((it) => [it.date, it.dueDate]).sort((a, b) => a[0] - b[0])
@@ -372,6 +372,7 @@ async function onEventCreate (ctx: TxCreateDoc<Event>, control: TriggerControl):
const { _class, space, attachedTo, attachedToClass, collection, ...attr } = event
const data = attr as any as Data<Event>
const calendars = await control.findAll(control.ctx, calendar.class.Calendar, { hidden: false })
const events = await control.findAll(control.ctx, calendar.class.Event, { eventId: event.eventId })
const access = 'reader'
for (const part of event.participants) {
const socialIds = await getSocialIds(control, part as Ref<Person>)
@@ -382,6 +383,7 @@ async function onEventCreate (ctx: TxCreateDoc<Event>, control: TriggerControl):
const user = primarySocialString
const calendar = getCalendar(calendars, socialStrings)
if (calendar === undefined) continue
if (events.find((p) => p.user === user) !== undefined) continue
const innerTx = control.txFactory.createTxCreateDoc(
_class,
space,