From 92665177e7975d83e6ef7dfe6a35a1daf602ac43 Mon Sep 17 00:00:00 2001 From: JulianWielga Date: Thu, 28 Nov 2024 21:22:04 +0100 Subject: [PATCH] fix RemoteAuthStrategy (#7263) --- .../client/src/components/RemoteComponent.tsx | 27 ++++++++++--------- .../RemoteAuthStrategy/RemoteAuthStrategy.tsx | 6 ++--- .../client/src/windowManager/useWindows.ts | 10 ++++++- 3 files changed, 27 insertions(+), 16 deletions(-) diff --git a/designer/client/src/components/RemoteComponent.tsx b/designer/client/src/components/RemoteComponent.tsx index ddca29f0e1b..9f6c7a2b19a 100644 --- a/designer/client/src/components/RemoteComponent.tsx +++ b/designer/client/src/components/RemoteComponent.tsx @@ -1,9 +1,9 @@ -import React, { useMemo } from "react"; -import LoaderSpinner from "./spinner/Spinner"; import { FederatedComponent, FederatedComponentProps, getFederatedComponentLoader } from "@touk/federated-component"; -import { NuThemeProvider } from "../containers/theme/nuThemeProvider"; +import React, { useMemo } from "react"; import SystemUtils from "../common/SystemUtils"; +import { NuThemeProvider } from "../containers/theme/nuThemeProvider"; import { useWindows, WindowKind } from "../windowManager"; +import LoaderSpinner from "./spinner/Spinner"; export const loadExternalReactModule = getFederatedComponentLoader({ Wrapper: NuThemeProvider }); export const loadExternalReactModuleWithAuth = getFederatedComponentLoader({ @@ -14,6 +14,17 @@ export const loadExternalReactModuleWithAuth = getFederatedComponentLoader({ window["loadExternalReactModule"] = loadExternalReactModule; window["loadExternalReactModuleWithAuth"] = loadExternalReactModuleWithAuth; +function PlainRemoteComponentRender

, T = unknown>( + props: FederatedComponentProps

, + ref: React.ForwardedRef, +) { + return ref={ref} {...props} fallback={} buildHash={__BUILD_HASH__} />; +} + +export const PlainRemoteComponent = React.forwardRef(PlainRemoteComponentRender) as

, T = unknown>( + props: FederatedComponentProps

& React.RefAttributes, +) => React.ReactElement; + export type RemoteToolbarContentProps = { openRemoteModuleWindow:

>(props: P & { url?: string; title?: string }) => void; }; @@ -32,15 +43,7 @@ function RemoteComponentRender

, T = unknown>(prop [open], ); - return ( - - ref={ref} - {...sharedContext} - {...props} - fallback={} - buildHash={__BUILD_HASH__} - /> - ); + return ref={ref} {...sharedContext} {...props} />; } export const RemoteComponent = React.forwardRef(RemoteComponentRender) as

, T = unknown>( diff --git a/designer/client/src/containers/Auth/strategies/RemoteAuthStrategy/RemoteAuthStrategy.tsx b/designer/client/src/containers/Auth/strategies/RemoteAuthStrategy/RemoteAuthStrategy.tsx index d73cd088d19..6fc679b173d 100644 --- a/designer/client/src/containers/Auth/strategies/RemoteAuthStrategy/RemoteAuthStrategy.tsx +++ b/designer/client/src/containers/Auth/strategies/RemoteAuthStrategy/RemoteAuthStrategy.tsx @@ -3,7 +3,7 @@ import React, { FunctionComponent, PropsWithChildren } from "react"; import { PendingPromise } from "../../../../common/PendingPromise"; import SystemUtils from "../../../../common/SystemUtils"; import { ErrorBoundary } from "../../../../components/common/error-boundary"; -import { RemoteComponent } from "../../../../components/RemoteComponent"; +import { PlainRemoteComponent } from "../../../../components/RemoteComponent"; import { RemoteAuthenticationSettings } from "../../../../reducers/settings"; import { AuthErrorCodes } from "../../AuthErrorCodes"; import { Strategy, StrategyConstructor } from "../../Strategy"; @@ -18,9 +18,9 @@ function createAuthWrapper(url: ModuleUrl, onInit: AuthLibCallback): FunctionCom return function Wrapper({ children }: PropsWithChildren) { return ( - url={url} onInit={onInit}> + url={url} onInit={onInit}> {children} - + ); }; diff --git a/designer/client/src/windowManager/useWindows.ts b/designer/client/src/windowManager/useWindows.ts index 7a1c3d11768..ee63050554b 100644 --- a/designer/client/src/windowManager/useWindows.ts +++ b/designer/client/src/windowManager/useWindows.ts @@ -33,7 +33,15 @@ const useRemoveFocusOnEscKey = (isWindowOpen: boolean) => { }; export function useWindows(parent?: WindowId) { - const { open: _open, closeAll, windows } = useWindowManager(parent); + let windowManager: ReturnType; + + try { + windowManager = useWindowManager(parent); + } catch (e) { + throw "used outside WindowManager context"; + } + + const { open: _open, closeAll, windows } = windowManager; useRemoveFocusOnEscKey(windows.length > 0); const [settings] = useUserSettings(); const forceDisableModals = useMemo(() => settings["debug.forceDisableModals"], [settings]);