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,17 +104,21 @@ export function useMeetingAlerts(onMeetingStart = null) {
} }
} }
// At start time: full-screen TV alert, clear dashboard toasts // At start time: full-screen TV alert, clear dashboard toasts.
if (secs <= 0 && secs >= -15 && !triggered.has(keyStart)) { // 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) triggered.add(keyStart)
dashboardAlerts.value = dashboardAlerts.value.filter(a => a.blockId !== block.id) dashboardAlerts.value = dashboardAlerts.value.filter(a => a.blockId !== block.id)
playChime(false) // Only play chime and show TV overlay when meeting just started (within 30s)
if (onMeetingStart) onMeetingStart(block.id) if (secs >= -30) {
tvAlert.value = { playChime(false)
blockId: block.id, tvAlert.value = {
label: blockLabel(block), blockId: block.id,
autoDismissAt: new Date(Date.now() + 30000), label: blockLabel(block),
autoDismissAt: new Date(Date.now() + 30000),
}
} }
if (onMeetingStart) onMeetingStart(block.id)
} }
}) })
}, 1000) }, 1000)

View File

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