diff --git a/src/frontend/src/states/ApiState.tsx b/src/frontend/src/states/ApiState.tsx index a1b74a5c12..e2ace8c689 100644 --- a/src/frontend/src/states/ApiState.tsx +++ b/src/frontend/src/states/ApiState.tsx @@ -11,7 +11,7 @@ import type { ServerAPIProps } from './states'; interface ServerApiStateProps { server: ServerAPIProps; setServer: (newServer: ServerAPIProps) => void; - fetchServerApiState: () => void; + fetchServerApiState: () => Promise; auth_config?: AuthConfig; auth_context?: AuthContext; setAuthContext: (auth_context: AuthContext) => void; diff --git a/src/frontend/src/states/StatusState.tsx b/src/frontend/src/states/StatusState.tsx index 5044508df0..96ea847c8b 100644 --- a/src/frontend/src/states/StatusState.tsx +++ b/src/frontend/src/states/StatusState.tsx @@ -14,7 +14,7 @@ export type StatusLookup = Record; interface ServerStateProps { status?: StatusLookup; setStatus: (newStatus: StatusLookup) => void; - fetchStatus: () => void; + fetchStatus: () => Promise; } export const useGlobalStatusState = create()( diff --git a/src/frontend/src/states/states.tsx b/src/frontend/src/states/states.tsx index b54d6bf1fe..03c39ae001 100644 --- a/src/frontend/src/states/states.tsx +++ b/src/frontend/src/states/states.tsx @@ -56,14 +56,19 @@ export async function fetchGlobalStates( setApiDefaults(); - useServerApiState.getState().fetchServerApiState(); + await useServerApiState.getState().fetchServerApiState(); const result = await useUserSettingsState.getState().fetchSettings(); + if (!result && navigate) { console.log('MFA is required - setting up'); // call mfa setup navigate('/mfa-setup'); + return; } - useGlobalSettingsState.getState().fetchSettings(); - useGlobalStatusState.getState().fetchStatus(); - useIconState.getState().fetchIcons(); + + await Promise.all([ + useGlobalSettingsState.getState().fetchSettings(), + useGlobalStatusState.getState().fetchStatus(), + useIconState.getState().fetchIcons() + ]); }