fix(core): handle the getSession network error properly (#4909)

If network offline or API error happens, the `session` returned by the `useSession` hook will be null, so we can't assume it is not null.

There should be following changes:
1. create a page in ErrorBoundary to let the user refetch the session.
2. The `SessionProvider` stop to pull the new session once the session is null, we need to figure out a way to pull the new session when the network is back or the user click the refetch button.
This commit is contained in:
LongYinan
2023-11-17 16:50:48 +08:00
committed by 李华桥
parent 57d42bf491
commit 7f09652cca
14 changed files with 385 additions and 157 deletions
@@ -23,6 +23,7 @@ import { getUIAdapter } from '../../adapters/workspace';
import { setPageModeAtom } from '../../atoms';
import { collectionsCRUDAtom } from '../../atoms/collections';
import { currentModeAtom } from '../../atoms/mode';
import { AffineErrorBoundary } from '../../components/affine/affine-error-boundary';
import { WorkspaceHeader } from '../../components/workspace-header';
import { useRegisterBlocksuiteEditorCommands } from '../../hooks/affine/use-register-blocksuite-editor-commands';
import { useCurrentSyncEngineStatus } from '../../hooks/current/use-current-sync-engine';
@@ -214,5 +215,9 @@ export const Component = () => {
}
}, [params, setContentLayout, setCurrentPageId, setCurrentWorkspaceId]);
return <DetailPage />;
return (
<AffineErrorBoundary>
<DetailPage />
</AffineErrorBoundary>
);
};