UNPKG

fcr-core

Version:

Core APIs for building online scenes

36 lines 1.83 kB
import "core-js/modules/es.json.stringify.js"; import { FcrAnnotationControlImpl, FcrStandaloneAnnotationControlImpl } from './control'; import { createLogger } from '../../../utilities/logger'; import { FcrErrorCode, FcrErrorModuleCode, generateFcrCoreClientError, handleRequestError } from '../../../utilities/error'; import { getAnnotationBoardOptions } from '../../../utilities/shared-storage'; export class FcrAnnotationControlFactoryImpl { logger = createLogger({ prefix: 'FcrAnnotationControlFactory' }); createForSubProcess(rtmClient, hasOperationPrivilege, config) { this.logger.info(`[annotation]: create for sub process with config: ${JSON.stringify(config)}`); return new FcrStandaloneAnnotationControlImpl(rtmClient, config, hasOperationPrivilege, () => { const forgeInitConfig = getAnnotationBoardOptions(); if (!forgeInitConfig) { throw generateFcrCoreClientError(FcrErrorModuleCode.ROOM_WHITEBOARD, FcrErrorCode.UNDEFINED_ERROR, `whiteboard init config is not exist`, new Error(`whiteboard init config is not exist`)); } return Promise.resolve(forgeInitConfig); }); } createForMainProcess(rtmClient, hasOperationPrivilege, config, api) { const control = new FcrAnnotationControlImpl(rtmClient, config, hasOperationPrivilege, this._createForgeInitConfigFetcher(api, config.roomId, config.userId)); return control; } _createForgeInitConfigFetcher(api, roomId, userId) { const getObjectInitConfig = async (roomId, userId) => { return await handleRequestError(() => api.getAnnotationToken({ roomId, userId }), FcrErrorModuleCode.ROOM_WHITEBOARD, 'get annotation token failed'); }; return async () => { const response = await getObjectInitConfig(roomId, userId); return response.data; }; } }