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(service-providers): pass whiteboard region #2009

Merged
merged 3 commits into from
Aug 18, 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
14 changes: 10 additions & 4 deletions desktop/renderer-app/src/tasks/init-flat-services.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import { runtime } from "../utils/runtime";
import { portalWindowManager } from "../utils/portal-window-manager";
import { ipcAsyncByApp, ipcAsyncByPreviewFileWindow } from "../utils/ipc";
import { globalStore } from "@netless/flat-stores";
import { Region } from "@netless/flat-server-api";

export function initFlatServices(): void {
const config = globalStore.serverRegionConfig;
Expand Down Expand Up @@ -280,7 +281,7 @@ export function initFlatServices(): void {
const { FileConvertNetless } = await import(
"@netless/flat-service-provider-file-convert-netless"
);
return new FileConvertNetless();
return new FileConvertNetless(config.whiteboard.convertRegion as Region);
},
);

Expand All @@ -305,7 +306,12 @@ export function initFlatServices(): void {
);
const service = await flatServices.requestService("whiteboard");
if (service instanceof Fastboard) {
return new FastboardFileInsert(service, flatI18n, toaster);
return new FastboardFileInsert(
service,
flatI18n,
toaster,
config.whiteboard.convertRegion as Region,
);
}
}
return null;
Expand All @@ -318,15 +324,15 @@ export function initFlatServices(): void {
const { FilePreviewNetless } = await import(
"@netless/flat-service-provider-file-preview-netless"
);
return new FilePreviewNetless();
return new FilePreviewNetless(config.whiteboard.convertRegion as Region);
},
);

flatServices.register("file-preview:pptx", async () => {
const { FilePreviewNetlessSlide } = await import(
"@netless/flat-service-provider-file-preview-netless-slide"
);
return new FilePreviewNetlessSlide();
return new FilePreviewNetlessSlide(config.whiteboard.convertRegion as Region);
});
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ export async function uploadAvatar(file: File, t: FlatI18nTFunction): Promise<vo
const ticket = await uploadAvatarStart(
file.name,
file.size,
globalStore.region ?? Region.CN_HZ,
globalStore.region ?? (globalStore.serverRegionConfig?.whiteboard.convertRegion as Region),
);

const formData = new FormData();
Expand Down
1 change: 1 addition & 0 deletions packages/flat-server-api/src/room.ts
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,7 @@ export interface JoinRoomResult {
};
rtmToken: string;
showGuide: boolean;
region: Region;
}

export function joinRoom(uuid: string): Promise<JoinRoomResult> {
Expand Down
6 changes: 4 additions & 2 deletions packages/flat-stores/src/classroom-replay-store/index.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { FastboardPlayer, replayFastboard, Storage } from "@netless/fastboard";
import { RoomType } from "@netless/flat-server-api";
import { Region, RoomType } from "@netless/flat-server-api";
import { AtomPlayer, NativeVideoPlayer, SyncPlayer, WhiteboardPlayer } from "@netless/sync-player";
import { action, makeAutoObservable, observable, runInAction } from "mobx";
import { SideEffectManager } from "side-effect-manager";
Expand Down Expand Up @@ -123,7 +123,9 @@ export class ClassroomReplayStore {
const fastboard = await replayFastboard<ClassroomReplayEventData>({
sdkConfig: {
appIdentifier: config.whiteboard.appId,
region: globalStore.region ?? "cn-hz",
region:
globalStore.region ??
(globalStore.serverRegionConfig?.whiteboard.convertRegion as Region),
pptParams: {
useServerWrap: true,
},
Expand Down
3 changes: 3 additions & 0 deletions packages/flat-stores/src/global-store.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,9 @@ export class GlobalStore {

public whiteboardRoomUUID: string | null = null;
public whiteboardRoomToken: string | null = null;
/**
* Room's region, services (currently only whiteboard) must use this value to join the room.
*/
public region: Region | null = null;
public rtcToken: string | null = null;
public rtcUID: number | null = null;
Expand Down
7 changes: 2 additions & 5 deletions packages/flat-stores/src/preferences-store.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { FlatPrefersColorScheme, Region } from "flat-components";
import { FlatI18n } from "@netless/flat-i18n";
import { autoPersistStore } from "./utils/auto-persist-store";
import { autoNativeTheme } from "./utils/auto-native-theme";
import { globalStore } from "./global-store";

// clear storage if not match
const LS_VERSION = 1;
Expand Down Expand Up @@ -79,10 +79,7 @@ export class PreferencesStore {
};

public getRegion = (): Region => {
return (
this.region ||
(FlatI18n.getInstance().language.startsWith("zh") ? Region.CN_HZ : Region.US_SV)
);
return this.region || (globalStore.serverRegionConfig?.whiteboard.convertRegion as Region);
};

public updatePrefersColorScheme = (prefersColorScheme: FlatPrefersColorScheme): void => {
Expand Down
4 changes: 3 additions & 1 deletion packages/flat-stores/src/whiteboard-store/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,9 @@ export class WhiteboardStore {
await this.whiteboard.joinRoom({
roomID: globalStore.whiteboardRoomUUID,
roomToken: globalStore.whiteboardRoomToken,
region: globalStore.region ?? Region.CN_HZ,
region:
globalStore.region ??
(globalStore.serverRegionConfig?.whiteboard.convertRegion as Region),
uid: globalStore.userUUID,
nickName: globalStore.userInfo?.name ?? globalStore.userUUID,
classroomType: this.getRoomType(),
Expand Down
6 changes: 6 additions & 0 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import {
FileResourceType,
getWhiteboardTaskData,
metaType,
Region,
ResourceType,
} from "@netless/flat-server-api";

Expand Down Expand Up @@ -40,12 +41,13 @@ export interface QueryConvertingParams {
dynamic: boolean;
meta: metaType;
resourceType: ResourceType;
region: Region;
}

export async function queryConvertingTaskStatus(
params: QueryConvertingParams,
): Promise<ConvertingTaskStatus> {
const { meta, resourceType, dynamic } = params;
const { meta, resourceType, dynamic, region } = params;

const whiteboardTaskData = getWhiteboardTaskData(resourceType, meta);
if (whiteboardTaskData === null) {
Expand All @@ -57,15 +59,15 @@ export async function queryConvertingTaskStatus(

if (resourceType === FileResourceType.WhiteboardProjector) {
const response = await fetch(`https://api.netless.link/v5/projector/tasks/${taskUUID}`, {
headers: { token: taskToken! },
headers: { token: taskToken!, region },
});
return response.json();
} else {
const response = await fetch(
`https://api.netless.link/v5/services/conversion/tasks/${taskUUID}?type=${
dynamic ? "dynamic" : "static"
}`,
{ headers: { token: taskToken! } },
{ headers: { token: taskToken!, region } },
);
const data = await response.json();
const prefix = data.progress?.convertedFileList?.[0]?.conversionFileUrl || "";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,13 @@ import {
FileConvertStep,
FileResourceType,
getWhiteboardTaskData,
Region,
} from "@netless/flat-server-api";
import { extractLegacySlideUrlPrefix, queryConvertingTaskStatus } from "./courseware-converting";
import { getFileExt, isPPTX } from "./utils";

export class FlatCoursewareNetless extends FlatCourseware {
public constructor() {
public constructor(public readonly region: Region) {
super();
}

Expand Down Expand Up @@ -71,6 +72,7 @@ export class FlatCoursewareNetless extends FlatCourseware {
dynamic: isPPTX(file.fileName),
meta,
resourceType,
region: this.region,
});
const taskResult = getWhiteboardTaskData(file.resourceType, file.meta);
if (taskResult === null) {
Expand Down
12 changes: 10 additions & 2 deletions service-providers/fastboard/src/file-insert.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,12 @@ import { BuiltinApps } from "@netless/window-manager";
import { ApplianceNames, SceneDefinition } from "white-web-sdk";

import type { FlatI18n } from "@netless/flat-i18n";
import { CloudFile, FileResourceType, getWhiteboardTaskData } from "@netless/flat-server-api";
import {
CloudFile,
FileResourceType,
Region,
getWhiteboardTaskData,
} from "@netless/flat-server-api";
import {
getFileExt,
isPPTX,
Expand All @@ -19,6 +24,7 @@ export class FastboardFileInsert implements IServiceFileInsert {
public fastboard: Fastboard,
public flatI18n: FlatI18n,
public toaster: Toaster,
public region: Region,
) {}

public async insert(file: CloudFile, options: IServiceFileInsertOptions): Promise<void> {
Expand Down Expand Up @@ -47,7 +53,7 @@ export class FastboardFileInsert implements IServiceFileInsert {
case "ppt":
case "pptx":
case "pdf": {
await insertDocs(file, fastboardApp, this.flatI18n, this.toaster);
await insertDocs(file, fastboardApp, this.flatI18n, this.toaster, this.region);
break;
}
default: {
Expand Down Expand Up @@ -147,6 +153,7 @@ export async function insertDocs(
fastboardApp: FastboardApp,
flatI18n: FlatI18n,
toaster: Toaster,
region: Region,
): Promise<void> {
if (
file.resourceType === FileResourceType.WhiteboardConvert ||
Expand All @@ -162,6 +169,7 @@ export async function insertDocs(
dynamic: isPPTX(file.fileName),
meta: file.meta,
resourceType: file.resourceType,
region,
});

if (convertingStatus.status === "Fail") {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import {
FileResourceType,
getWhiteboardTaskData,
metaType,
Region,
ResourceType,
} from "@netless/flat-server-api";

Expand Down Expand Up @@ -40,12 +41,13 @@ export interface QueryConvertingParams {
dynamic: boolean;
meta: metaType;
resourceType: ResourceType;
region: Region;
}

export async function queryConvertingTaskStatus(
params: QueryConvertingParams,
): Promise<ConvertingTaskStatus> {
const { meta, resourceType, dynamic } = params;
const { meta, resourceType, dynamic, region } = params;

const whiteboardTaskData = getWhiteboardTaskData(resourceType, meta);
if (whiteboardTaskData === null) {
Expand All @@ -57,15 +59,15 @@ export async function queryConvertingTaskStatus(

if (resourceType === FileResourceType.WhiteboardProjector) {
const response = await fetch(`https://api.netless.link/v5/projector/tasks/${taskUUID}`, {
headers: { token: taskToken! },
headers: { token: taskToken!, region },
});
return response.json();
} else {
const response = await fetch(
`https://api.netless.link/v5/services/conversion/tasks/${taskUUID}?type=${
dynamic ? "dynamic" : "static"
}`,
{ headers: { token: taskToken! } },
{ headers: { token: taskToken!, region } },
);
const data = await response.json();
const prefix = data.progress?.convertedFileList?.[0]?.conversionFileUrl || "";
Expand Down
4 changes: 4 additions & 0 deletions service-providers/file-convert-netless/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import {
convertStart,
FileConvertStep,
FileResourceType,
Region,
ServerRequestError,
} from "@netless/flat-server-api";
import { IServiceFileConvert, IServiceFileConvertStatus, CloudFile } from "@netless/flat-services";
Expand All @@ -12,6 +13,8 @@ export * from "./courseware-converting";
export * from "./utils";

export class FileConvertNetless implements IServiceFileConvert {
public constructor(public readonly region: Region) {}

public async startConvert(
file: CloudFile,
): Promise<
Expand Down Expand Up @@ -52,6 +55,7 @@ export class FileConvertNetless implements IServiceFileConvert {
dynamic: isPPTX(file.fileName),
resourceType: file.resourceType,
meta: file.meta,
region: this.region,
});

if (convertingStatus.status === "Fail") {
Expand Down
3 changes: 2 additions & 1 deletion service-providers/file-preview-netless-slide/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
"dependencies": {
"@netless/app-slide": "0.3.0-canary.19",
"@netless/flat-service-provider-file-convert-netless": "workspace:*",
"@netless/flat-services": "workspace:*"
"@netless/flat-services": "workspace:*",
"@netless/flat-server-api": "workspace:*"
}
}
4 changes: 4 additions & 0 deletions service-providers/file-preview-netless-slide/src/index.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
import { previewSlide, SlideViewer } from "@netless/app-slide";
import { Region } from "@netless/flat-server-api";
import { queryConvertingTaskStatus } from "@netless/flat-service-provider-file-convert-netless";
import { CloudFile, IServiceFilePreview, FileResourceType } from "@netless/flat-services";

export class FilePreviewNetlessSlide implements IServiceFilePreview {
public slideViewer?: SlideViewer;

public constructor(public readonly region: Region) {}

public async preview(file: CloudFile, container: HTMLElement): Promise<any> {
if (this.slideViewer) {
this.slideViewer.destroy();
Expand All @@ -18,6 +21,7 @@ export class FilePreviewNetlessSlide implements IServiceFilePreview {
dynamic: true,
resourceType: file.resourceType,
meta: file.meta,
region: this.region,
});

this.slideViewer = previewSlide({
Expand Down
3 changes: 2 additions & 1 deletion service-providers/file-preview-netless/dev/main.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
import "./style.css";

import { StaticDocsViewer } from "../src/static-docs-viewer";
import { Region } from "@netless/flat-server-api";

const viewer = new StaticDocsViewer();
const viewer = new StaticDocsViewer(Region.CN_HZ);
viewer.pages$.setValue([
{
height: 1010,
Expand Down
1 change: 1 addition & 0 deletions service-providers/file-preview-netless/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
"@netless/app-docs-viewer": "1.0.0-canary.5",
"@netless/flat-service-provider-file-convert-netless": "workspace:*",
"@netless/flat-services": "workspace:*",
"@netless/flat-server-api": "workspace:*",
"side-effect-manager": "^1.2.1",
"value-enhancer": "^1.3.2"
}
Expand Down
8 changes: 7 additions & 1 deletion service-providers/file-preview-netless/src/index.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,17 @@
import { IServiceFilePreview, CloudFile } from "@netless/flat-services";
import { StaticDocsViewer } from "./static-docs-viewer";
import { Region } from "@netless/flat-server-api";

export class FilePreviewNetless implements IServiceFilePreview {
public staticDocsViewer?: StaticDocsViewer;

public constructor(public region: Region) {}

public async preview(file: CloudFile, container: HTMLElement): Promise<void> {
await (this.staticDocsViewer ||= new StaticDocsViewer()).preview(file, container);
await (this.staticDocsViewer ||= new StaticDocsViewer(this.region)).preview(
file,
container,
);
}

public async destroy(): Promise<void> {
Expand Down
Loading