Open
Conversation
Handle fatal errors from Daily.co SDK (connection-error, exp-room, ejected, etc.) with user-friendly messages and appropriate actions. Improve join failure display to show actual API error detail.
When Cal.com events appear in an aggregated ICS feed, the same event gets two different UIDs (one from Cal.com, one from Google Calendar). This caused duplicate meetings to be created for the same time slot. Add time-window dedup check in create_upcoming_meetings_for_event: after verifying no meeting exists for the calendar_event_id, also check if a meeting already exists for the same room + start_date + end_date.
… type params, fix mock signature
…ken cases, remove dead end_date fallback
Contributor
PR Reviewer Guide 🔍Here are some key observations to aid the review process:
|
Comment on lines
+308
to
+314
| const handleError = useCallback((ev: DailyEventObjectFatalError) => { | ||
| const error: FatalError = { | ||
| type: ev.error?.type ?? "unknown", | ||
| message: ev.errorMsg, | ||
| }; | ||
| setFatalError(error); | ||
| }, []); |
Contributor
There was a problem hiding this comment.
Suggestion: The error handler should log the error to the console for debugging purposes, especially since it's handling fatal errors that could impact user experience. [general, importance: 5]
Suggested change
| const handleError = useCallback((ev: DailyEventObjectFatalError) => { | |
| const error: FatalError = { | |
| type: ev.error?.type ?? "unknown", | |
| message: ev.errorMsg, | |
| }; | |
| setFatalError(error); | |
| }, []); | |
| const handleError = useCallback((ev: DailyEventObjectFatalError) => { | |
| console.error("Daily fatal error:", ev.errorMsg, ev.error); | |
| const error: FatalError = { | |
| type: ev.error?.type ?? "unknown", | |
| message: ev.errorMsg, | |
| }; | |
| setFatalError(error); | |
| }, []); |
smankovsky
approved these changes
Feb 10, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
User description
user report: user.fm would pull duplicate events from Cal.com and google calendar - normal workflow causes duped meetings
also, people kicked from expired meetings with unhelpful error
LLM DESCRIPTION PROOFRED:
Summary
Context
Feb 2 incident: user kicked from Max's room, saw "Failed to join meeting" with no way to recover. Investigation found two issues: (1) no error context shown to users on disconnect, (2) duplicate meetings created from aggregated calendar feed containing both Cal.com
and Google Calendar copies of each event.
Changes
Daily.co error UX (
DailyRoom.tsx)errorevent (previously onlyleft-meetingwas handled)DailyFatalErrorType:connection-error,exp-room,ejected, with appropriate recovery actionsICS meeting dedup (
meetings.py,ics_sync.py)(start_date, end_date)ics_uidvaluescalendar_eventrows are left intact (they are technically different records)Test plan
test_ics_dedup.py)PR Type
Bug fix, Enhancement
Description
Fix duplicate meetings from aggregated calendar feeds
Improve Daily.co error handling with specific messages
Add time-window deduplication for calendar events
Create user-friendly error screens with recovery options
Changes walkthrough 📝
meetings.py
Add method to detect duplicate meetings by time windowserver/reflector/db/meetings.py
get_by_room_and_time_windowto check if a meetingalready exists for a room with the same time window
potential duplicates
DailyRoom.tsx
Enhance Daily.co error handling and UIwww/app/[roomName]/components/DailyRoom.tsx
messages
FatalErrorScreencomponent to display appropriate errormessages
non-rejoinable)
ics_sync.py
Implement calendar event deduplication logicserver/reflector/worker/ics_sync.py
create_upcoming_meetings_for_eventto check for existingmeetings with same time window
aggregated calendar feeds
test_ics_dedup.py
Add tests for calendar event deduplicationserver/tests/test_ics_dedup.py
deduplication
meeting
meetings
apiHooks.ts
Add reference marker for ApiError type issuewww/app/lib/apiHooks.ts