diff --git a/src/frontend/apps/impress/src/features/docs/doc-editor/components/DocEditor.tsx b/src/frontend/apps/impress/src/features/docs/doc-editor/components/DocEditor.tsx index d8070664..ad49ebfa 100644 --- a/src/frontend/apps/impress/src/features/docs/doc-editor/components/DocEditor.tsx +++ b/src/frontend/apps/impress/src/features/docs/doc-editor/components/DocEditor.tsx @@ -90,7 +90,7 @@ export const DocEditor = ({ doc }: DocEditorProps) => { } }, [isProviderReady, setIsSkeletonVisible]); - if (!isProviderReady) { + if (!isProviderReady || provider?.configuration.name !== doc.id) { return ; } diff --git a/src/frontend/apps/impress/src/features/docs/doc-management/stores/useProviderStore.tsx b/src/frontend/apps/impress/src/features/docs/doc-management/stores/useProviderStore.tsx index 33eb3d6a..f1c8d511 100644 --- a/src/frontend/apps/impress/src/features/docs/doc-management/stores/useProviderStore.tsx +++ b/src/frontend/apps/impress/src/features/docs/doc-management/stores/useProviderStore.tsx @@ -52,13 +52,29 @@ export const useProviderStore = create((set, get) => ({ } }, onAuthenticationFailed() { - set({ isReady: true }); + set({ isReady: true, isConnected: false }); + }, + onAuthenticated() { + set({ isReady: true, isConnected: true }); }, onStatus: ({ status }) => { set((state) => { const nextConnected = status === WebSocketStatus.Connected; + + /** + * status === WebSocketStatus.Connected does not mean we are totally connected + * because authentication can still be in progress and failed + * So we only update isConnected when we loose the connection + */ + const connected = + status !== WebSocketStatus.Connected + ? { + isConnected: false, + } + : undefined; + return { - isConnected: nextConnected, + ...connected, isReady: state.isReady || status === WebSocketStatus.Disconnected, hasLostConnection: state.isConnected && !nextConnected