From e69a7bf6bea3165d161b233af7d0688945d049ae Mon Sep 17 00:00:00 2001 From: Kalle <38327916+Sendouc@users.noreply.github.com> Date: Sat, 14 Mar 2026 16:37:04 +0200 Subject: [PATCH] ChatCodes revisited --- app/features/chat/useChatContext.ts | 2 ++ app/features/scrims/loaders/scrims.$id.server.ts | 2 +- app/features/sendouq-match/loaders/q.match.$id.server.ts | 3 +-- app/features/sendouq/loaders/q.looking.server.ts | 1 + .../tournament-bracket/loaders/to.$id.matches.$mid.server.ts | 4 ++-- 5 files changed, 7 insertions(+), 5 deletions(-) diff --git a/app/features/chat/useChatContext.ts b/app/features/chat/useChatContext.ts index 7e83cac53..968fcdecb 100644 --- a/app/features/chat/useChatContext.ts +++ b/app/features/chat/useChatContext.ts @@ -1,6 +1,8 @@ import * as React from "react"; import type { ChatContextValue } from "./chat-provider-types"; +// xxx: think how chats should expire in relation to chatCode getting returned from loaders etc. + export const ChatContext = React.createContext(null); export function useChatContext(): ChatContextValue | null { diff --git a/app/features/scrims/loaders/scrims.$id.server.ts b/app/features/scrims/loaders/scrims.$id.server.ts index 4981496b9..f37b44da6 100644 --- a/app/features/scrims/loaders/scrims.$id.server.ts +++ b/app/features/scrims/loaders/scrims.$id.server.ts @@ -29,7 +29,7 @@ export const loader = async ({ params }: LoaderFunctionArgs) => { return { post, chatCode: - user.roles.includes("STAFF") && !participantIds.includes(user.id) + user.roles.includes("STAFF") || participantIds.includes(user.id) ? post.chatCode : undefined, anyUserPrefersNoScreen: diff --git a/app/features/sendouq-match/loaders/q.match.$id.server.ts b/app/features/sendouq-match/loaders/q.match.$id.server.ts index 79a474526..97c1379ff 100644 --- a/app/features/sendouq-match/loaders/q.match.$id.server.ts +++ b/app/features/sendouq-match/loaders/q.match.$id.server.ts @@ -43,9 +43,8 @@ export const loader = async ({ params }: LoaderFunctionArgs) => { }) : null, rawReportedWeapons, - // xxx: as a safety measure, it'd be good to send chat code also when user is in the match chatCode: - user?.roles.includes("STAFF") && !matchUsers.includes(user.id) + user?.roles.includes("STAFF") || (user && matchUsers.includes(user.id)) ? match.chatCode : null, }; diff --git a/app/features/sendouq/loaders/q.looking.server.ts b/app/features/sendouq/loaders/q.looking.server.ts index dbdbb2780..4094a2e8a 100644 --- a/app/features/sendouq/loaders/q.looking.server.ts +++ b/app/features/sendouq/loaders/q.looking.server.ts @@ -46,5 +46,6 @@ export const loader = async ({ request }: LoaderFunctionArgs) => { }, lastUpdated: Date.now(), streamsCount: (await cachedStreams()).length, + chatCode: ownGroup ? ownGroup.chatCode : null, }; }; diff --git a/app/features/tournament-bracket/loaders/to.$id.matches.$mid.server.ts b/app/features/tournament-bracket/loaders/to.$id.matches.$mid.server.ts index 09b507a3b..affc6e129 100644 --- a/app/features/tournament-bracket/loaders/to.$id.matches.$mid.server.ts +++ b/app/features/tournament-bracket/loaders/to.$id.matches.$mid.server.ts @@ -123,8 +123,8 @@ export const loader = async ({ params }: LoaderFunctionArgs) => { endedEarly, noScreen, chatCode: - tournament.isOrganizerOrStreamer(user) && - !match.players.some((p) => p.id === user?.id) + tournament.isOrganizerOrStreamer(user) || + match.players.some((p) => p.id === user?.id) ? match.chatCode : undefined, };