Fix meeting alert catch-up window and skip redundant block switch

- Extend start-time trigger window from 15s to 5 min so opening the
  dashboard late still marks the meeting as started
- Only play chime and show TV overlay when within 30s of start time
- Skip switchBlock call when the session is already on that block

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-31 08:43:44 -07:00
parent 1204e0c1b2
commit 8e92ae6073
2 changed files with 13 additions and 8 deletions

View File

@@ -104,18 +104,22 @@ export function useMeetingAlerts(onMeetingStart = null) {
}
}
// At start time: full-screen TV alert, clear dashboard toasts
if (secs <= 0 && secs >= -15 && !triggered.has(keyStart)) {
// At start time: full-screen TV alert, clear dashboard toasts.
// Use a 5-minute catch-up window so opening the dashboard late still triggers.
if (secs <= 0 && secs >= -300 && !triggered.has(keyStart)) {
triggered.add(keyStart)
dashboardAlerts.value = dashboardAlerts.value.filter(a => a.blockId !== block.id)
// Only play chime and show TV overlay when meeting just started (within 30s)
if (secs >= -30) {
playChime(false)
if (onMeetingStart) onMeetingStart(block.id)
tvAlert.value = {
blockId: block.id,
label: blockLabel(block),
autoDismissAt: new Date(Date.now() + 30000),
}
}
if (onMeetingStart) onMeetingStart(block.id)
}
})
}, 1000)

View File

@@ -283,6 +283,7 @@ const scheduleStore = useScheduleStore()
const activeChild = computed(() => childrenStore.activeChild)
const meetingAlerts = useMeetingAlerts((blockId) => {
if (!scheduleStore.session) return
if (scheduleStore.session.current_block_id === blockId) return
scheduleStore.switchBlock(scheduleStore.session.id, blockId)
})