UNPKG

fcr-core

Version:

Core APIs for building online scenes

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