From a6dfae23798d2ba7093ff9a5bb4220d67699e66e Mon Sep 17 00:00:00 2001 From: hyrious Date: Fri, 28 May 2021 14:19:34 +0800 Subject: [PATCH] fix(desktop): creator exits room cause bug in homepage room list (#679) --- .../src/components/Modal/RemoveHistoryRoomModal.tsx | 3 ++- desktop/renderer-app/src/pages/ReplayPage/index.tsx | 3 +-- desktop/renderer-app/src/stores/ClassRoomStore.ts | 4 +++- desktop/renderer-app/src/stores/WhiteboardStore.ts | 13 +++++++++++-- packages/flat-components/src/index.ts | 1 + 5 files changed, 18 insertions(+), 6 deletions(-) diff --git a/desktop/renderer-app/src/components/Modal/RemoveHistoryRoomModal.tsx b/desktop/renderer-app/src/components/Modal/RemoveHistoryRoomModal.tsx index 4d4fed997b5..978b32db73f 100644 --- a/desktop/renderer-app/src/components/Modal/RemoveHistoryRoomModal.tsx +++ b/desktop/renderer-app/src/components/Modal/RemoveHistoryRoomModal.tsx @@ -13,7 +13,7 @@ export const RemoveHistoryRoomModal = observer( function RemoveHistoryRoomModal({ visible, onCancel, onConfirm, loading }) { return ( ( 确定 , ]} + destroyOnClose > 确定删除当前房间记录? diff --git a/desktop/renderer-app/src/pages/ReplayPage/index.tsx b/desktop/renderer-app/src/pages/ReplayPage/index.tsx index 00fa8d0fe80..55724bde163 100644 --- a/desktop/renderer-app/src/pages/ReplayPage/index.tsx +++ b/desktop/renderer-app/src/pages/ReplayPage/index.tsx @@ -1,10 +1,9 @@ import React, { useEffect, useRef, useState } from "react"; import { RouteComponentProps, useParams, useHistory } from "react-router-dom"; import { useTranslation } from "react-i18next"; -import { LoadingPage } from "flat-components"; +import { ErrorPage, LoadingPage } from "flat-components"; import PlayerController from "@netless/player-controller"; import { ipcAsyncByMainWindow, ipcReceive, ipcReceiveRemove } from "../../utils/ipc"; -import { ErrorPage } from "flat-components"; import { RealtimePanel } from "../../components/RealtimePanel"; import { ChatPanelReplay } from "../../components/ChatPanelReplay"; import { OrdinaryRoomInfo } from "../../apiMiddleware/flatServer"; diff --git a/desktop/renderer-app/src/stores/ClassRoomStore.ts b/desktop/renderer-app/src/stores/ClassRoomStore.ts index 2a1991fab26..cdaf1dc062d 100644 --- a/desktop/renderer-app/src/stores/ClassRoomStore.ts +++ b/desktop/renderer-app/src/stores/ClassRoomStore.ts @@ -143,7 +143,9 @@ export class ClassRoomStore { autorun(reaction => { if (this.whiteboardStore.isKicked) { reaction.dispose(); - this.roomStatusOverride = RoomStatus.Stopped; + runInAction(() => { + this.roomStatusOverride = RoomStatus.Stopped; + }); } }); } diff --git a/desktop/renderer-app/src/stores/WhiteboardStore.ts b/desktop/renderer-app/src/stores/WhiteboardStore.ts index a9feabbf94d..dd8eb2a538a 100644 --- a/desktop/renderer-app/src/stores/WhiteboardStore.ts +++ b/desktop/renderer-app/src/stores/WhiteboardStore.ts @@ -1,4 +1,4 @@ -import { makeAutoObservable, observable } from "mobx"; +import { makeAutoObservable, observable, runInAction } from "mobx"; import { createPlugins, DefaultHotKeys, @@ -159,7 +159,16 @@ export class WhiteboardStore { reason === "roomDelete" || reason === "roomBan" ) { - this.isKicked = true; + // Kick in-room joiners when creator cancels room + // from the homepage list menu + runInAction(() => { + // Room creator do not need to listen to this event + // as they are in control of exiting room. + // Listening to this may interrupt the stop room process. + if (!this.isCreator) { + this.isKicked = true; + } + }); } }, }, diff --git a/packages/flat-components/src/index.ts b/packages/flat-components/src/index.ts index 79433e281ff..4311c401b3b 100644 --- a/packages/flat-components/src/index.ts +++ b/packages/flat-components/src/index.ts @@ -7,6 +7,7 @@ export * from "./components/ChatPanel"; export * from "./components/ClassroomPage"; export * from "./components/CloudStorage"; export * from "./components/EditRoomPage"; +export * from "./components/ErrorPage"; export * from "./components/HomePage"; export * from "./components/InviteModal"; export * from "./components/LoadingPage";