Skip to content

Commit f03f5ad

Browse files
committed
♻️(frontend) isConnected when authenticated
WebSocketStatus.Connected does not mean we are totally connected because authentication can still be in progress and failed. So we will use the event onAuthenticated to assert that we are fully connected.
1 parent 734be4c commit f03f5ad

File tree

1 file changed

+18
-2
lines changed

1 file changed

+18
-2
lines changed

src/frontend/apps/impress/src/features/docs/doc-management/stores/useProviderStore.tsx

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,13 +52,29 @@ export const useProviderStore = create<UseCollaborationStore>((set, get) => ({
5252
}
5353
},
5454
onAuthenticationFailed() {
55-
set({ isReady: true });
55+
set({ isReady: true, isConnected: false });
56+
},
57+
onAuthenticated() {
58+
set({ isReady: true, isConnected: true });
5659
},
5760
onStatus: ({ status }) => {
5861
set((state) => {
5962
const nextConnected = status === WebSocketStatus.Connected;
63+
64+
/**
65+
* status === WebSocketStatus.Connected does not mean we are totally connected
66+
* because authentication can still be in progress and failed
67+
* So we only update isConnected when we loose the connection
68+
*/
69+
const connected =
70+
status !== WebSocketStatus.Connected
71+
? {
72+
isConnected: false,
73+
}
74+
: undefined;
75+
6076
return {
61-
isConnected: nextConnected,
77+
...connected,
6278
isReady: state.isReady || status === WebSocketStatus.Disconnected,
6379
hasLostConnection:
6480
state.isConnected && !nextConnected

0 commit comments

Comments
 (0)