diff --git a/packages/flat-components/src/components/UsersPanel/index.tsx b/packages/flat-components/src/components/UsersPanel/index.tsx index 19a047899c7..eb862c06746 100644 --- a/packages/flat-components/src/components/UsersPanel/index.tsx +++ b/packages/flat-components/src/components/UsersPanel/index.tsx @@ -102,6 +102,9 @@ export const UsersPanel = /* @__PURE__ */ observer(function Use ))} + {users.length === 0 && ( +
{t("no-students")}
+ )} ); diff --git a/packages/flat-components/src/components/UsersPanel/style.less b/packages/flat-components/src/components/UsersPanel/style.less index 0e3d2ec52bb..02b9eb9f46f 100644 --- a/packages/flat-components/src/components/UsersPanel/style.less +++ b/packages/flat-components/src/components/UsersPanel/style.less @@ -70,6 +70,14 @@ } } +.users-panel-list-empty { + flex: 1; + display: flex; + align-items: center; + justify-content: center; + color: var(--text-weaker); +} + .users-panel-list-item { font-size: 0; position: relative; diff --git a/packages/flat-i18n/locales/en.json b/packages/flat-i18n/locales/en.json index be7c6410e68..f3f0c77d2c7 100644 --- a/packages/flat-i18n/locales/en.json +++ b/packages/flat-i18n/locales/en.json @@ -27,6 +27,7 @@ "raised-hand": "(Hand raised)", "has-left": "(Has left)", "offline": "offline", + "no-students": "No students", "say-something": "Say something...", "send": "send", "teacher": "Teacher", diff --git a/packages/flat-i18n/locales/zh-CN.json b/packages/flat-i18n/locales/zh-CN.json index 4d613938d33..58f95f01c24 100644 --- a/packages/flat-i18n/locales/zh-CN.json +++ b/packages/flat-i18n/locales/zh-CN.json @@ -27,6 +27,7 @@ "raised-hand": "(已举手)", "has-left": "(已离开)", "offline": "已离线", + "no-students": "暂无学生", "agree": "通过", "me": "(我)", "cancel-hand-raising": "取消举手", diff --git a/packages/flat-stores/src/room-store.ts b/packages/flat-stores/src/room-store.ts index aad3ce5fea9..4dc19545a26 100644 --- a/packages/flat-stores/src/room-store.ts +++ b/packages/flat-stores/src/room-store.ts @@ -21,6 +21,7 @@ import { recordInfo, RoomStatus, RoomType, + usersInfo, } from "@netless/flat-server-api"; import { globalStore } from "./global-store"; import { preferencesStore } from "./preferences-store"; @@ -132,10 +133,16 @@ export class RoomStore { public async syncOrdinaryRoomInfo(roomUUID: string): Promise { const { roomInfo, ...restInfo } = await ordinaryRoomInfo(roomUUID); + // always include owner avatar url in full room info + const { [roomInfo.ownerUUID]: owner } = await usersInfo({ + roomUUID, + usersUUID: [roomInfo.ownerUUID], + }); this.updateRoom(roomUUID, roomInfo.ownerUUID, { ...restInfo, ...roomInfo, roomUUID, + ownerAvatarURL: owner.avatarURL, }); }