Skip to content

Commit d82f2f3

Browse files
committed
add a guard to prevent issue when we switch app
1 parent ae3ce2e commit d82f2f3

File tree

1 file changed

+28
-15
lines changed

1 file changed

+28
-15
lines changed

src/react/FederableApp.tsx

Lines changed: 28 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,11 @@ import { LocationAdapterProvider } from './next-architecture/ui/LocationAdapterP
1010
import MetricsAdapterProvider from './next-architecture/ui/MetricsAdapterProvider';
1111
import ZenkoUI from './ZenkoUI';
1212

13+
import { ShellHooksProvider, useBasenameRelativeNavigate, useCurrentApp } from '@scality/module-federation';
1314
import React, { useEffect, useMemo } from 'react';
15+
import { ArtescaLibraryProvider } from './next-architecture/ui/ArtescaLibraryProvider';
1416
import { XCoreLibraryProvider } from './next-architecture/ui/XCoreLibraryProvider';
1517
import zenkoUIReducer from './reducers';
16-
import { useBasenameRelativeNavigate } from '@scality/module-federation';
17-
import { ShellHooksProvider } from '@scality/module-federation';
18-
import { ArtescaLibraryProvider } from './next-architecture/ui/ArtescaLibraryProvider';
1918

2019
//@ts-expect-error fix this when you are working on it
2120
const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;
@@ -51,6 +50,18 @@ const HistoryPushEventListener = () => {
5150
return <></>;
5251
};
5352

53+
// This component prevent the app to be rendered if the current app is not a zenko-ui
54+
// This happens when the app is in transition to another app
55+
const ZenkoUIGuard = ({ children }: { children: React.ReactNode }) => {
56+
const { kind } = useCurrentApp();
57+
58+
if (kind !== 'zenko-ui') {
59+
return null;
60+
}
61+
return <>{children}</>;
62+
};
63+
64+
5465
const FederableApp = (props) => {
5566
return (
5667
<ShellHooksProvider
@@ -61,18 +72,20 @@ const FederableApp = (props) => {
6172
<ArtescaLibraryProvider>
6273
<InternalRouter>
6374
<HistoryPushEventListener />
64-
<AccountsLocationsEndpointsAdapterProvider>
65-
<LocationAdapterProvider>
66-
<AccessibleAccountsAdapterProvider>
67-
<MetricsAdapterProvider>
68-
<ToastProvider>
69-
<ZenkoUI />
70-
</ToastProvider>
71-
<ReactQueryDevtools initialIsOpen={false} />
72-
</MetricsAdapterProvider>
73-
</AccessibleAccountsAdapterProvider>
74-
</LocationAdapterProvider>
75-
</AccountsLocationsEndpointsAdapterProvider>
75+
<ZenkoUIGuard>
76+
<AccountsLocationsEndpointsAdapterProvider>
77+
<LocationAdapterProvider>
78+
<AccessibleAccountsAdapterProvider>
79+
<MetricsAdapterProvider>
80+
<ToastProvider>
81+
<ZenkoUI />
82+
</ToastProvider>
83+
<ReactQueryDevtools initialIsOpen={false} />
84+
</MetricsAdapterProvider>
85+
</AccessibleAccountsAdapterProvider>
86+
</LocationAdapterProvider>
87+
</AccountsLocationsEndpointsAdapterProvider>
88+
</ZenkoUIGuard>
7689
</InternalRouter>
7790
</ArtescaLibraryProvider>
7891
</XCoreLibraryProvider>

0 commit comments

Comments
 (0)