diff --git a/apps/client/src/pages/App.tsx b/apps/client/src/pages/App.tsx index 362e0eb..e55dad2 100644 --- a/apps/client/src/pages/App.tsx +++ b/apps/client/src/pages/App.tsx @@ -56,6 +56,7 @@ function App() { const videoRef = useRef(null) const [relaySubscribed, setRelaySubscribed] = useState(false) + const hasAutoSubscribedRef = useRef(false) // Routing state const [currentPage, setCurrentPage] = useState<'lobby' | 'room'>('lobby') @@ -132,6 +133,22 @@ function App() { } }, []) + // Auto-subscribe to relay once when app loads + useEffect(() => { + const autoSubscribe = async () => { + if (!hasAutoSubscribedRef.current && isWebTransportSupported) { + try { + await subscribeToDemo() + setRelaySubscribed(true) + hasAutoSubscribedRef.current = true + } catch (err) { + console.error('[App] Auto-subscribe failed:', err) + } + } + } + autoSubscribe() + }, [isWebTransportSupported]) + // Update URL when page changes useEffect(() => { if (currentPage === 'lobby') { @@ -522,22 +539,6 @@ function App() { } }, []) // Empty dependency array - only create service once - // Handle relay subscription - const handleSubscribeClick = async () => { - try { - setRequestState({ isLoading: true, error: null }) - await subscribeToDemo() - setRelaySubscribed(true) - setRequestState({ isLoading: false, error: null }) - } catch (err) { - console.error('[App] Subscribe failed', err) - setRequestState({ - isLoading: false, - error: err instanceof Error ? err.message : String(err), - }) - } - } - const handleRequestRooms = useCallback(() => { if (syncService && syncService.isConnected()) { syncService.requestRoomsList() @@ -600,11 +601,6 @@ function App() { setCurrentRoomId(roomId) setCurrentPage('room') - if (!relaySubscribed) { - await subscribeToDemo() - setRelaySubscribed(true) - } - await handleJoinRoomClick(role) } catch (err) { @@ -1051,38 +1047,6 @@ function App() { )} - {/* Optional Subscribe Button */} -
- -

- {relaySubscribed - ? 'Relay connection established' - : 'Subscribe manually if needed (auto-subscribes on join)'} -

-
-