From dac6bfe142ab427694d8398d4840a084560240e8 Mon Sep 17 00:00:00 2001 From: lebaudantoine Date: Thu, 17 Jul 2025 11:35:39 +0200 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8F(frontend)=20refactor=20feedb?= =?UTF-8?q?ack=20redirect=20to=20global=20onDisconnect=20hook?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Centralize disconnect handling to ensure all client-initiated disconnects trigger feedback page navigation. More extensible for future disconnect event routing needs, especially when errors happen. --- src/frontend/src/features/rooms/components/Conference.tsx | 8 +++++++- .../rooms/livekit/components/controls/LeaveButton.tsx | 4 ---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/frontend/src/features/rooms/components/Conference.tsx b/src/frontend/src/features/rooms/components/Conference.tsx index 93e841bb..e96c4e46 100644 --- a/src/frontend/src/features/rooms/components/Conference.tsx +++ b/src/frontend/src/features/rooms/components/Conference.tsx @@ -2,7 +2,7 @@ import { useEffect, useMemo, useState } from 'react' import { useQuery } from '@tanstack/react-query' import { useTranslation } from 'react-i18next' import { LiveKitRoom } from '@livekit/components-react' -import { Room, RoomOptions } from 'livekit-client' +import { DisconnectReason, Room, RoomOptions } from 'livekit-client' import { keys } from '@/api/queryKeys' import { queryClient } from '@/api/queryClient' import { Screen } from '@/layout/Screen' @@ -17,6 +17,7 @@ import posthog from 'posthog-js' import { css } from '@/styled-system/css' import { BackgroundProcessorFactory } from '../livekit/components/blur' import { LocalUserChoices } from '@/stores/userChoices' +import { navigateTo } from '@/navigation/navigateTo' export const Conference = ({ roomId, @@ -124,6 +125,11 @@ export const Conference = ({ className={css({ backgroundColor: 'primaryDark.50 !important', })} + onDisconnected={(e) => { + if (e == DisconnectReason.CLIENT_INITIATED) { + navigateTo('feedback') + } + }} > {showInviteDialog && ( diff --git a/src/frontend/src/features/rooms/livekit/components/controls/LeaveButton.tsx b/src/frontend/src/features/rooms/livekit/components/controls/LeaveButton.tsx index d456903a..c12cde61 100644 --- a/src/frontend/src/features/rooms/livekit/components/controls/LeaveButton.tsx +++ b/src/frontend/src/features/rooms/livekit/components/controls/LeaveButton.tsx @@ -1,6 +1,5 @@ import { useConnectionState, useRoomContext } from '@livekit/components-react' import { Button } from '@/primitives' -import { navigateTo } from '@/navigation/navigateTo' import { RiPhoneFill } from '@remixicon/react' import { useTranslation } from 'react-i18next' import { ConnectionState } from 'livekit-client' @@ -21,9 +20,6 @@ export const LeaveButton = () => { .catch((e) => console.error('An error occurred while disconnecting:', e) ) - .finally(() => { - navigateTo('feedback') - }) }} data-attr="controls-leave" >