From cd5ecb235267bf88ecb7b200d7cf095a97dc9110 Mon Sep 17 00:00:00 2001 From: Robin Date: Fri, 21 Mar 2025 15:07:15 -0400 Subject: [PATCH] Rename error boundary hook It doesn't check whether it's actually used inside a GroupCallErrorBoundary, and it's generally useful for interacting with any error boundary, so I'm giving it a generic name to reflect this. --- src/livekit/openIDSFU.ts | 12 ++++++------ ...orBoundary.test.tsx => useErrorBoundary.test.tsx} | 12 ++++++------ .../useCallErrorBoundary.ts => useErrorBoundary.ts} | 10 ++++------ 3 files changed, 16 insertions(+), 18 deletions(-) rename src/{room/useCallErrorBoundary.test.tsx => useErrorBoundary.test.tsx} (75%) rename src/{room/useCallErrorBoundary.ts => useErrorBoundary.ts} (54%) diff --git a/src/livekit/openIDSFU.ts b/src/livekit/openIDSFU.ts index 4a82de23..ac44db9b 100644 --- a/src/livekit/openIDSFU.ts +++ b/src/livekit/openIDSFU.ts @@ -12,9 +12,9 @@ import { useEffect, useState } from "react"; import { type LivekitFocus } from "matrix-js-sdk/src/matrixrtc/LivekitFocus"; import { useActiveLivekitFocus } from "../room/useActiveFocus"; -import { useGroupCallErrorBoundary } from "../room/useCallErrorBoundary.ts"; -import { FailToGetOpenIdToken } from "../utils/errors.ts"; -import { doNetworkOperationWithRetry } from "../utils/matrix.ts"; +import { useErrorBoundary } from "../useErrorBoundary"; +import { FailToGetOpenIdToken } from "../utils/errors"; +import { doNetworkOperationWithRetry } from "../utils/matrix"; export interface SFUConfig { url: string; @@ -41,7 +41,7 @@ export function useOpenIDSFU( const [sfuConfig, setSFUConfig] = useState(undefined); const activeFocus = useActiveLivekitFocus(rtcSession); - const { showGroupCallErrorBoundary } = useGroupCallErrorBoundary(); + const { showErrorBoundary } = useErrorBoundary(); useEffect(() => { if (activeFocus) { @@ -50,14 +50,14 @@ export function useOpenIDSFU( setSFUConfig(sfuConfig); }, (e) => { - showGroupCallErrorBoundary(new FailToGetOpenIdToken(e)); + showErrorBoundary(new FailToGetOpenIdToken(e)); logger.error("Failed to get SFU config", e); }, ); } else { setSFUConfig(undefined); } - }, [client, activeFocus, showGroupCallErrorBoundary]); + }, [client, activeFocus, showErrorBoundary]); return sfuConfig; } diff --git a/src/room/useCallErrorBoundary.test.tsx b/src/useErrorBoundary.test.tsx similarity index 75% rename from src/room/useCallErrorBoundary.test.tsx rename to src/useErrorBoundary.test.tsx index eccb8039..13fa43bb 100644 --- a/src/room/useCallErrorBoundary.test.tsx +++ b/src/useErrorBoundary.test.tsx @@ -11,19 +11,19 @@ import { type ReactElement, useCallback } from "react"; import userEvent from "@testing-library/user-event"; import { BrowserRouter } from "react-router-dom"; -import { GroupCallErrorBoundary } from "./GroupCallErrorBoundary.tsx"; -import { useGroupCallErrorBoundary } from "./useCallErrorBoundary.ts"; -import { ConnectionLostError } from "../utils/errors.ts"; +import { GroupCallErrorBoundary } from "./room/GroupCallErrorBoundary"; +import { useErrorBoundary } from "./useErrorBoundary"; +import { ConnectionLostError } from "./utils/errors"; it("should show async error", async () => { const user = userEvent.setup(); const TestComponent = (): ReactElement => { - const { showGroupCallErrorBoundary } = useGroupCallErrorBoundary(); + const { showErrorBoundary } = useErrorBoundary(); const onClick = useCallback((): void => { - showGroupCallErrorBoundary(new ConnectionLostError()); - }, [showGroupCallErrorBoundary]); + showErrorBoundary(new ConnectionLostError()); + }, [showErrorBoundary]); return (
diff --git a/src/room/useCallErrorBoundary.ts b/src/useErrorBoundary.ts similarity index 54% rename from src/room/useCallErrorBoundary.ts rename to src/useErrorBoundary.ts index f89abf77..4430394e 100644 --- a/src/room/useCallErrorBoundary.ts +++ b/src/useErrorBoundary.ts @@ -7,18 +7,16 @@ Please see LICENSE in the repository root for full details. import { useMemo, useState } from "react"; -import type { ElementCallError } from "../utils/errors.ts"; - export type UseErrorBoundaryApi = { - showGroupCallErrorBoundary: (error: ElementCallError) => void; + showErrorBoundary: (error: Error) => void; }; -export function useGroupCallErrorBoundary(): UseErrorBoundaryApi { - const [error, setError] = useState(null); +export function useErrorBoundary(): UseErrorBoundaryApi { + const [error, setError] = useState(null); const memoized: UseErrorBoundaryApi = useMemo( () => ({ - showGroupCallErrorBoundary: (error: ElementCallError) => setError(error), + showErrorBoundary: (error: Error) => setError(error), }), [], );