Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor(flat-components): update title of absent avatars #1829

Merged
merged 1 commit into from
Feb 7, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,21 @@ export interface VideoAvatarAbsentProps {
isAvatarUserCreator: boolean;
}

export const VideoAvatarAbsent: FC<VideoAvatarAbsentProps> = ({ small, isAvatarUserCreator }) => {
export const VideoAvatarAbsent: FC<VideoAvatarAbsentProps> = ({
avatarUser,
small,
isAvatarUserCreator,
}) => {
const t = useTranslate();
return (
<div className={classnames("video-avatar-absent", { "is-small": small })}>
<img className="video-avatar-absent-img" draggable={false} src={placeholderSVG} />
<span className="video-avatar-absent-content">
{t(`${isAvatarUserCreator ? "teacher" : "student"}-left-temporarily`)}
{isAvatarUserCreator
? t("teacher-left-temporarily")
: avatarUser
? t("user-left-temporarily", { name: avatarUser.name })
: t("student-left-temporarily")}
</span>
</div>
);
Expand Down
1 change: 1 addition & 0 deletions packages/flat-i18n/locales/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@
"student-sure-to-exit-the-room": "Sure to exit the room",
"teacher-left-temporarily": "Teacher has left",
"student-left-temporarily": "Student has left",
"user-left-temporarily": "{{name}} has left",
"the-room-has-ended-and-is-about-to-exit": "The room has ended and is about to exit...",
"you-have-entered-the-room-at-another-device": "You have entered the room at another device",
"class-picker-text": {
Expand Down
1 change: 1 addition & 0 deletions packages/flat-i18n/locales/zh-CN.json
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@
"you-have-entered-the-room-at-another-device": "你已在另外一台设备进入房间",
"teacher-left-temporarily": "老师暂时离开",
"student-left-temporarily": "学生暂时离开",
"user-left-temporarily": "{{name}} 暂时离开",
"signal-text": "上行:{{up}},下行:{{down}}",
"client-to-edge-server-network-latency": "客户端到边缘服务器的网络延迟",
"delay": "延迟:",
Expand Down
2 changes: 1 addition & 1 deletion packages/flat-pages/src/SmallClassPage/utils.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ export function useDraggable(): Draggable {

const stopListenDown = listen(div, "pointerdown", ev => {
// is dragging avatar, not the buttons on it
const isAvatar = (ev.target as HTMLElement).classList?.contains("video-avatar");
const isAvatar = (ev.target as HTMLElement).className?.includes("video-avatar");
if (isAvatar && ev.pointerType === "mouse" && ev.isPrimary && ev.button === 0) {
div.setPointerCapture(ev.pointerId);
start.current = [ev.clientX, div.scrollLeft];
Expand Down
4 changes: 2 additions & 2 deletions packages/flat-pages/src/components/UsersButton.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ export const UsersButton = observer<UsersButtonProps>(function UsersButton({ cla

// not including teacher
const users = useComputed(() => {
const { speakingJoiners, handRaisingJoiners, otherJoiners, offlineJoiners } =
classroom.users;
const { offlineJoiners } = classroom;
const { speakingJoiners, handRaisingJoiners, otherJoiners } = classroom.users;
return [...speakingJoiners, ...handRaisingJoiners, ...offlineJoiners, ...otherJoiners];
}).get();

Expand Down
21 changes: 2 additions & 19 deletions packages/flat-server-api/src/storage.ts
Original file line number Diff line number Diff line change
Expand Up @@ -171,41 +171,24 @@ export function getWhiteboardTaskData(
resourceType: ResourceType,
meta: metaType,
): WhiteboardConvertPayload | WhiteboardProjectorPayload | null {
let data: WhiteboardConvertPayload | WhiteboardProjectorPayload | null = null;

switch (resourceType) {
case "WhiteboardProjector": {
data = {
return {
taskUUID: meta.whiteboardProjector!.taskUUID,
taskToken: meta.whiteboardProjector!.taskToken,
convertStep: meta.whiteboardProjector!.convertStep,
region: meta.whiteboardProjector!.region,
};
break;
}
case "WhiteboardConvert": {
data = {
return {
taskUUID: meta.whiteboardConvert!.taskUUID,
taskToken: meta.whiteboardConvert!.taskToken,
convertStep: meta.whiteboardConvert!.convertStep,
region: meta.whiteboardConvert!.region,
};
break;
}
}

if (data && assertAllFieldsPresent(data)) {
return data;
}

return null;
}

function assertAllFieldsPresent(obj: Record<string, any>): boolean {
for (const key in obj) {
if (obj[key] === undefined) {
return false;
}
}
return true;
}
11 changes: 10 additions & 1 deletion packages/flat-stores/src/classroom-store/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -304,6 +304,16 @@ export class ClassroomStore {
: undefined;
}

public get offlineJoiners(): User[] {
const result: User[] = [];
for (const user of this.users.cachedUsers.values()) {
if (this.onStageUserUUIDs.includes(user.userUUID) && user.hasLeft) {
result.push(user);
}
}
return result;
}

public async init(): Promise<void> {
await roomStore.syncOrdinaryRoomInfo(this.roomUUID);

Expand Down Expand Up @@ -493,7 +503,6 @@ export class ClassroomStore {
user.camera = false;
}
});
this.users.updateOfflineJoiners(onStageUsers);

if (!this.isCreator) {
const isJoinerOnStage = Boolean(onStageUsersStorage.state[this.userUUID]);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,26 +42,42 @@ export class ConvertStatusManager {
}

if (convertStep === FileConvertStep.None) {
const startResult = await processor.startConvert(file);
if (startResult) {
if (startResult.resourceType === FileResourceType.WhiteboardProjector) {
runInAction(() => {
if (file.meta.whiteboardProjector) {
file.meta.whiteboardProjector.convertStep = FileConvertStep.Converting;
file.meta.whiteboardProjector.taskUUID = startResult.taskUUID;
file.meta.whiteboardProjector.taskToken = startResult.taskToken;
}
});
}
if (startResult.resourceType === FileResourceType.WhiteboardConvert) {
runInAction(() => {
if (file.meta.whiteboardConvert) {
file.meta.whiteboardConvert.convertStep = FileConvertStep.Converting;
file.meta.whiteboardConvert.taskUUID = startResult.taskUUID;
file.meta.whiteboardConvert.taskToken = startResult.taskToken;
}
});
try {
const startResult = await processor.startConvert(file);
if (startResult) {
if (startResult.resourceType === FileResourceType.WhiteboardProjector) {
runInAction(() => {
if (file.meta.whiteboardProjector) {
file.meta.whiteboardProjector.convertStep =
FileConvertStep.Converting;
file.meta.whiteboardProjector.taskUUID = startResult.taskUUID;
file.meta.whiteboardProjector.taskToken = startResult.taskToken;
}
});
}
if (startResult.resourceType === FileResourceType.WhiteboardConvert) {
runInAction(() => {
if (file.meta.whiteboardConvert) {
file.meta.whiteboardConvert.convertStep =
FileConvertStep.Converting;
file.meta.whiteboardConvert.taskUUID = startResult.taskUUID;
file.meta.whiteboardConvert.taskToken = startResult.taskToken;
}
});
}
}
} catch (error) {
console.error(error);
runInAction(() => {
if (file.meta.whiteboardProjector) {
file.meta.whiteboardProjector.convertStep = FileConvertStep.Failed;
}
if (file.meta.whiteboardConvert) {
file.meta.whiteboardConvert.convertStep = FileConvertStep.Failed;
}
});
await convertFinish({ fileUUID: file.fileUUID });
return;
}
}

Expand Down
12 changes: 0 additions & 12 deletions packages/flat-stores/src/user-store.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,6 @@ export class UserStore {
public handRaisingJoiners = observable.array<User>([]);
/** the rest joiners */
public otherJoiners = observable.array<User>([]);
/** joiners who have left */
public offlineJoiners = observable.array<User>([]);

public get joiners(): User[] {
return [...this.speakingJoiners, ...this.handRaisingJoiners, ...this.otherJoiners];
Expand Down Expand Up @@ -153,16 +151,6 @@ export class UserStore {
unSortedUsers.forEach(this.sortUser);
};

public updateOfflineJoiners(onStageUserUUIDs: string[]): void {
this.offlineJoiners.clear();
for (const userUUID of onStageUserUUIDs) {
const user = this.cachedUsers.get(userUUID);
if (user && user.hasLeft) {
this.offlineJoiners.push(user);
}
}
}

/**
* Fetch info of users who have left the room.
* For RTM message title.
Expand Down
43 changes: 20 additions & 23 deletions service-providers/file-convert-netless/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,32 +17,29 @@ export class FileConvertNetless implements IServiceFileConvert {
): Promise<
{ taskUUID: string; taskToken: string; resourceType: FileResourceType } | undefined
> {
try {
const convertResult = await convertStart({
fileUUID: file.fileUUID,
});
const { resourceType, whiteboardProjector, whiteboardConvert } = convertResult;
const convertResult = await convertStart({
fileUUID: file.fileUUID,
});
const { resourceType, whiteboardProjector, whiteboardConvert } = convertResult;

if (whiteboardProjector) {
const { taskUUID, taskToken } = whiteboardProjector;
return {
taskUUID,
taskToken,
resourceType,
};
}
if (whiteboardProjector) {
const { taskUUID, taskToken } = whiteboardProjector;
return {
taskUUID,
taskToken,
resourceType,
};
}

if (whiteboardConvert) {
const { taskUUID, taskToken } = whiteboardConvert;
return {
taskUUID,
taskToken,
resourceType,
};
}
} catch (e) {
console.error(e);
if (whiteboardConvert) {
const { taskUUID, taskToken } = whiteboardConvert;
return {
taskUUID,
taskToken,
resourceType,
};
}

return;
}

Expand Down