From 952e6970f078845f6b1708d6a9c857e141744224 Mon Sep 17 00:00:00 2001 From: Emmanuel Pelletier Date: Tue, 30 Jul 2024 01:47:03 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B(room)=20do=20not=20show=20feedback?= =?UTF-8?q?=20info=20when=20reloading=20room=20page?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit the livekit prefab component doesn't expose what we want, rely on the dom for now until we redo the component from scratch --- .../features/rooms/components/Conference.tsx | 24 +++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/src/frontend/src/features/rooms/components/Conference.tsx b/src/frontend/src/features/rooms/components/Conference.tsx index 2bdcae21..0e820338 100644 --- a/src/frontend/src/features/rooms/components/Conference.tsx +++ b/src/frontend/src/features/rooms/components/Conference.tsx @@ -1,4 +1,4 @@ -import { useMemo, useState } from 'react' +import { useEffect, useMemo, useState } from 'react' import { useQuery } from '@tanstack/react-query' import { LiveKitRoom, @@ -46,6 +46,25 @@ export const Conference = ({ const [showInviteDialog, setShowInviteDialog] = useState(mode === 'create') + /** + * checks for actual click on the leave button instead of + * relying on LiveKitRoom onDisconnected because onDisconnected + * triggers even on page reload, it's not a user "onLeave" event really. + * Here we want to react to the user actually deciding to leave. + */ + useEffect(() => { + const checkOnLeaveClick = (event: MouseEvent) => { + const target = event.target as HTMLElement + if (target.classList.contains('lk-disconnect-button')) { + navigateTo('feedback') + } + } + document.body.addEventListener('click', checkOnLeaveClick) + return () => { + document.body.removeEventListener('click', checkOnLeaveClick) + } + }, []) + return ( { - navigateTo('feedback') - }} > {showInviteDialog && (