diff --git a/app/vision/page.tsx b/app/vision/page.tsx index e9ebf42..99cbe4e 100644 --- a/app/vision/page.tsx +++ b/app/vision/page.tsx @@ -406,6 +406,43 @@ export default function VisionPage() { return canJoin; }; + // Get meeting status for display + const getMeetingStatus = (meeting: ScheduledMeeting): 'before' | 'active' | 'ended' | 'no-link' => { + if (!meeting.location) { + return 'no-link'; + } + + if (!meeting.start || !meeting.end) { + return 'no-link'; + } + + const now = new Date(); + const start = new Date(meeting.start); + const end = new Date(meeting.end); + + // Validate dates + if (isNaN(start.getTime()) || isNaN(end.getTime())) { + return 'no-link'; + } + + // Calculate 5 minutes before start + const fiveMinutesBeforeStart = new Date(start); + fiveMinutesBeforeStart.setMinutes(fiveMinutesBeforeStart.getMinutes() - 5); + + // Check if meeting has ended + if (now > end) { + return 'ended'; + } + + // Check if meeting is active (5 minutes before start until end) + if (now >= fiveMinutesBeforeStart && now <= end) { + return 'active'; + } + + // Before the meeting starts + return 'before'; + }; + // Check if there's an active meeting for a group or mission (5 minutes before start until end) const hasActiveMeeting = (type: "group" | "mission", entityId: string): boolean => { const now = new Date(); @@ -810,20 +847,39 @@ export default function VisionPage() {