fcr-core
Version:
Core APIs for building online scenes
43 lines (42 loc) • 1.98 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.FcrAnnotationControlFactoryImpl = void 0;
require("core-js/modules/es.json.stringify.js");
var _control = require("./control");
var _logger = require("../../../utilities/logger");
var _error = require("../../../utilities/error");
var _sharedStorage = require("../../../utilities/shared-storage");
class FcrAnnotationControlFactoryImpl {
logger = (0, _logger.createLogger)({
prefix: 'FcrAnnotationControlFactory'
});
createForSubProcess(rtmClient, hasOperationPrivilege, config) {
this.logger.info(`[annotation]: create for sub process with config: ${JSON.stringify(config)}`);
return new _control.FcrStandaloneAnnotationControlImpl(rtmClient, config, hasOperationPrivilege, () => {
const forgeInitConfig = (0, _sharedStorage.getAnnotationBoardOptions)();
if (!forgeInitConfig) {
throw (0, _error.generateFcrCoreClientError)(_error.FcrErrorModuleCode.ROOM_WHITEBOARD, _error.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 _control.FcrAnnotationControlImpl(rtmClient, config, hasOperationPrivilege, this._createForgeInitConfigFetcher(api, config.roomId, config.userId));
return control;
}
_createForgeInitConfigFetcher(api, roomId, userId) {
const getObjectInitConfig = async (roomId, userId) => {
return await (0, _error.handleRequestError)(() => api.getAnnotationToken({
roomId,
userId
}), _error.FcrErrorModuleCode.ROOM_WHITEBOARD, 'get annotation token failed');
};
return async () => {
const response = await getObjectInitConfig(roomId, userId);
return response.data;
};
}
}
exports.FcrAnnotationControlFactoryImpl = FcrAnnotationControlFactoryImpl;