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

View File

@@ -7,12 +7,7 @@ import { useCallback, useState } from 'react';
import { pushNotificationAtom } from '../notification-center';
import { AuthPageContainer } from './auth-page-container';
import { SetPassword } from './set-password';
type User = {
id: string;
name: string;
email: string;
image: string;
};
import type { User } from './type';
export const ChangePasswordPage: FC<{
user: User;

View File

@@ -13,3 +13,4 @@ export * from './set-password-page';
export * from './sign-in-page-container';
export * from './sign-in-success-page';
export * from './sign-up-page';
export type { User } from './type';

View File

@@ -7,13 +7,7 @@ import { useCallback, useState } from 'react';
import { pushNotificationAtom } from '../notification-center';
import { AuthPageContainer } from './auth-page-container';
import { SetPassword } from './set-password';
type User = {
id: string;
name: string;
email: string;
image: string;
};
import type { User } from './type';
export const SetPasswordPage: FC<{
user: User;

View File

@@ -7,12 +7,7 @@ import { useCallback, useState } from 'react';
import { pushNotificationAtom } from '../notification-center';
import { AuthPageContainer } from './auth-page-container';
import { SetPassword } from './set-password';
type User = {
id: string;
name: string;
email: string;
image: string;
};
import type { User } from './type';
export const SignUpPage: FC<{
user: User;

View File

@@ -0,0 +1,6 @@
export interface User {
id: string;
name: string;
email: string;
image?: string | null;
}