diff --git a/packages/flat-pages/src/UserSettingPage/GeneralSettingPage/index.tsx b/packages/flat-pages/src/UserSettingPage/GeneralSettingPage/index.tsx index 1656d6d916a..a3be3478e94 100644 --- a/packages/flat-pages/src/UserSettingPage/GeneralSettingPage/index.tsx +++ b/packages/flat-pages/src/UserSettingPage/GeneralSettingPage/index.tsx @@ -129,10 +129,10 @@ export const GeneralSettingPage = observer(function GeneralSettingPage() { onOk: async () => { try { await sp(deleteAccount()); - globalStore.updateUserInfo(null); - globalStore.updatePmi(null); - globalStore.updatePmiRoomList([]); - globalStore.deleteCurrentAccountFromHistory(); + + // reset user status + globalStore.deleteAccount(); + pushHistory(RouteNameType.LoginPage); } catch (err) { errorTips(err); diff --git a/packages/flat-server-api/src/pmi.ts b/packages/flat-server-api/src/pmi.ts index 810db42d05e..3fa7e60f4bc 100644 --- a/packages/flat-server-api/src/pmi.ts +++ b/packages/flat-server-api/src/pmi.ts @@ -28,6 +28,8 @@ export interface CreateOrGetPmiResult { pmi: string; } -export function createOrGetPmi(payload: CreateOrGetPmiPayload): Promise { - return postV2("user/pmi", payload); +export function createOrGetPmi(payload: CreateOrGetPmiPayload): Promise { + return postV2("user/pmi", payload).then( + e => e.pmi, + ); } diff --git a/packages/flat-stores/src/global-store.ts b/packages/flat-stores/src/global-store.ts index 41dad5c7b51..ca13381c36a 100644 --- a/packages/flat-stores/src/global-store.ts +++ b/packages/flat-stores/src/global-store.ts @@ -48,7 +48,7 @@ export class GlobalStore { public isTurnOffDeviceTest = false; public userInfo: UserInfo | null = null; public pmi: string | null = null; - public pmiRoomList: PmiRoom[] = []; + public pmiRoomList: PmiRoom[] | null = []; // login with password public currentAccount: Account | null = null; @@ -88,11 +88,11 @@ export class GlobalStore { public hideAvatarsRoomUUIDs: string[] | undefined = undefined; public get pmiRoomExist(): boolean { - return this.pmiRoomList.length > 0; + return (this.pmiRoomList && this.pmiRoomList.length > 0) || false; } public get pmiRoomUUID(): string { - return this.pmiRoomList[0]?.roomUUID; + return (this.pmiRoomList && this.pmiRoomList[0]?.roomUUID) || ""; } public get userUUID(): string | undefined { @@ -132,15 +132,11 @@ export class GlobalStore { }); } - public updatePmi = async (pmi?: string | null): Promise => { - if (pmi) { + public updatePmi = async (): Promise => { + const pmi = (await createOrGetPmi({ create: true })) || null; + runInAction(() => { this.pmi = pmi; - } else { - const pmi = (await createOrGetPmi({ create: true }))?.pmi || null; - runInAction(() => { - this.pmi = pmi; - }); - } + }); }; public updatePmiRoomListByRoomUUID = (roomUUID: string): void => { @@ -149,15 +145,11 @@ export class GlobalStore { } }; - public updatePmiRoomList = async (pmiRoomList?: PmiRoom[]): Promise => { - if (pmiRoomList) { + public updatePmiRoomList = async (): Promise => { + const pmiRoomList = (await listPmi()) || []; + runInAction(() => { this.pmiRoomList = pmiRoomList; - } else { - const pmiRoomList = (await listPmi()) || []; - runInAction(() => { - this.pmiRoomList = pmiRoomList; - }); - } + }); }; public updateUserInfo = (userInfo: UserInfo | null): void => { @@ -243,12 +235,23 @@ export class GlobalStore { } }; + public deleteAccount = (): void => { + globalStore.updateUserInfo(null); + globalStore.deleteCurrentAccountFromHistory(); + + this.pmi = null; + this.pmiRoomList = null; + this.roomHistory = []; + }; + public logout = (): void => { this.userInfo = null; this.currentAccount = null; this.lastLoginCheck = null; this.onStageRoomUUIDs = []; this.roomHistory = []; + this.pmi = null; + this.pmiRoomList = null; document.cookie = "flatJWTToken=; SameSite=Lax; domain=whiteboard.agora.io; max-age=0"; };