sendou.ink/app/components
Kalle 747a63edbc Show current route's chat in room list even when expired
Non-participants (e.g. tournament organizers) viewing a tournament
match chat could see the chat auto-open correctly, but clicking the
back arrow to the room list left the chat invisible — the only way
back was to leave the route and return.

The match chat appears in chatContext.rooms via the SUBSCRIBE
response, which (unlike the initial-payload path that participants
go through) does not check room expiry on the skalop side. So an
organizer viewing an old match ends up with an expired room in
their rooms list. ChatView already handles this gracefully with a
read-only banner, but RoomList was filtering on
expiresAt > Date.now() and dropping it.

Cleanup in useChatRouteSync removes the room from chatContext.rooms
on navigation, so exempting the current route's chatCode from the
expiry filter only affects the page that subscribed to it.
2026-05-02 11:36:56 +03:00
..
elements
fuse
icons
layout
AbilitiesSelector.module.css
AbilitiesSelector.tsx
Ability.module.css
Ability.tsx
Alert.module.css
Alert.tsx
Avatar.module.css
Avatar.tsx
Badge.tsx
BuildCard.module.css
BuildCard.tsx
Catcher.tsx
Chart.module.css
Chart.tsx
CopyToClipboardPopover.tsx
CustomThemeSelector.module.css
CustomThemeSelector.tsx
DateInput.tsx
Divider.module.css
Divider.tsx
EventsList.module.css
EventsList.tsx
Flag.tsx
FormErrors.module.css
FormErrors.tsx
FormMessage.module.css
FormMessage.tsx
FormWithConfirm.tsx
FriendCodeInput.tsx
FriendCodePopover.tsx
GearSelect.tsx
Image.module.css
Image.tsx
InfoPopover.module.css
InfoPopover.tsx
Input.module.css
Input.tsx
Label.module.css
Label.tsx
Main.module.css
Main.tsx
MapPoolSelector.module.css
MapPoolSelector.tsx
Markdown.tsx
MobileNav.module.css
MobileNav.tsx
NotificationDot.module.css
NotificationDot.tsx
Pagination.module.css
Pagination.tsx
Placeholder.module.css
Placeholder.tsx
Placement.tsx
Redirect.tsx
RelativeTime.tsx
RequiredHiddenInput.module.css
RequiredHiddenInput.tsx
Section.module.css
Section.tsx
SideNav.module.css
SideNav.tsx
StageSelect.module.css
StageSelect.tsx
StreamListItems.module.css
StreamListItems.tsx
SubmitButton.tsx
SubNav.module.css
SubNav.tsx
Table.module.css
Table.tsx
TierPill.module.css
TierPill.tsx
TimePopover.module.css
TimePopover.tsx
WeaponSelect.module.css
WeaponSelect.tsx
YouTubeEmbed.module.css
YouTubeEmbed.tsx