From 5138268b6dbb4337338209384ee1614bb051ef92 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw=20Zatorski?= Date: Fri, 4 Sep 2026 09:05:00 +0200 Subject: [PATCH] Zakladka Oferta wylacznie dla uczestnika Prowadzacy widzial zakladke, ktora u niego nie mogla zadzialac: endpoint `/offer-form` szuka tokenu w `registrations`, a prelegent tam nie istnieje (nie przechodzi przez formularz zapisu i ma wlasny token w `webinar_speakers`). Zadanie konczylo sie bledem 404, a panel zostawal na "Wczytywanie..." bez konca, bo front nie obslugiwal bledu. Zakladka i tak nie mialaby sensu: zapytanie ofertowe wysyla uczestnik, a prowadzacy oglada zgloszenia w panelu prowadzenia. Warunek jest w dwoch miejscach celowo: przy liscie zakladek i przy renderowaniu tresci. Stan `tab` przezywa zmiane roli, wiec sama krotsza lista nie wystarcza. Co-Authored-By: Claude Opus 5 --- .../src/pages/public/InteractionPanel.tsx | 30 +++++++++++++------ 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/frontend/src/pages/public/InteractionPanel.tsx b/frontend/src/pages/public/InteractionPanel.tsx index 9da79e9..2bdc781 100644 --- a/frontend/src/pages/public/InteractionPanel.tsx +++ b/frontend/src/pages/public/InteractionPanel.tsx @@ -93,17 +93,29 @@ export function InteractionPanel({ const chatOff = history.chatMode === 'DISABLED' const speakersOnly = history.chatMode === 'SPEAKERS_ONLY' && !history.speaker + /* + * Zapytanie ofertowe wysyla UCZESTNIK, wiec prowadzacy tej zakladki nie ma. + * + * Endpoint `/offer-form` szuka tokenu w `registrations`, a prelegent tam nie + * istnieje: nie przechodzi przez formularz zapisu i ma wlasny token + * w `webinar_speakers`. Zapytanie konczylo sie wiec bledem 404, a panel + * zostawal na "Wczytywanie..." bez konca. Zakladka i tak nie mialaby sensu: + * prowadzacy nie wysyla zapytania ofertowego sam do siebie, a zgloszenia + * uczestnikow oglada w panelu prowadzenia. + */ + const tabs = ( + [ + ['chat', 'Czat', 'message-square', unread.chat], + ['questions', 'Pytania', 'circle-alert', unread.questions], + ['tasks', 'Zadania', 'check-circle', 0], + ['offer', 'Oferta', 'send', 0], + ] as const + ).filter(([id]) => !(id === 'offer' && history.speaker)) + return (