- Shipped
- September 17, 2026 at 4:06 PM UTC
- Author
- Kamo
- Commit
- e77cf0b
The Support badge now takes a presenter to My Scheduled Webinars when a session is booked with them (mediaservice 0212445). That tab — and the wizard's Join Existing table and confirm step — were typed against a ScheduledWebinarDTO the server never sent: scheduledDate, presenterName, meetingRoomName, elapsedMinutes. /api/webinar/* is a passthrough, so each read undefined at runtime: - the date column was blank and the times were raw ISO instants; - the presenter column was blank; - Join never appeared (isJoinable parsed "undefinedT<instant>") and could not open a room; - expanding a row fetched GET **************** which MediaService does not serve (live 404), so every session read "No attendees"; - the presenter was offered Leave, which removes an attendee row they do not have. app/types/webinar.ts now mirrors the Java ScheduledWebinarDTO and WebinarAttendeeDTO field for field, and the compiler found each stale read. Dates and times go through useFormatters in the member's zone; the roster comes with each session from /my; Join uses roomName; Leave is hidden when role is PRESENTER. No new strings. MyWebinarsTab.test.tsx renders the tab from a payload in the Java shape: all three cases fail against the previous component and pass now. tsc clean; eslint 0 errors on the touched files (the warnings are pre-existing unused variables); the npm test guards pass.