fcr-core
Version:
Core APIs for building online scenes
73 lines (72 loc) • 3.29 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.addBoardInitInfoObserver = addBoardInitInfoObserver;
var _imports = require("../../imports");
var _error = require("../../utilities/error");
var _sceneProperties = require("../../utilities/scene-properties");
var _sharedStorage = require("../../utilities/shared-storage");
async function _getAnnotationToken(api, roomId, userId) {
return await (0, _error.handleRequestError)(() => api.getAnnotationToken({
roomId,
userId
}), _imports.ErrorModuleCode.FCR_ROOM_WHITEBOARD, 'get whiteboard token failed');
}
async function _getBoardToken(api, roomId, userId) {
return await (0, _error.handleRequestError)(() => api.getWhiteboardToken({
roomId,
userId
}), _imports.ErrorModuleCode.FCR_ROOM_WHITEBOARD, 'get whiteboard token failed');
}
async function initAnnotationInfo(scene, api, logger) {
const roomId = scene.sceneId;
const userId = scene.localUser.getLocalUserId();
const boardToken = (await _getAnnotationToken(api, roomId, userId)).data;
if (!boardToken) {
logger.error(`get annotation board options failed, roomId: ${roomId}, userId: ${userId}, boardOptions: ${(0, _imports.jsonstring)(boardToken)}`);
} else {
const boardOptions = {
...boardToken,
boardPerformance: (0, _sceneProperties.getBoardPerformance)(scene)
};
logger.info(`get annotation board options success, roomId: ${roomId}, userId: ${userId}, boardOptions: ${(0, _imports.jsonstring)(boardOptions)}`);
(0, _sharedStorage.setAnnotationBoardOptions)(boardOptions);
}
}
async function initBoardInfo(scene, api, logger) {
const roomId = scene.sceneId;
const userId = scene.localUser.getLocalUserId();
const boardToken = (await _getBoardToken(api, roomId, userId)).data;
if (!boardToken) {
logger.error(`get whiteboard options failed, roomId: ${roomId}, userId: ${userId}, boardToken: ${(0, _imports.jsonstring)(boardToken)}`);
} else {
const boardOptions = {
...boardToken,
boardPerformance: (0, _sceneProperties.getBoardPerformance)(scene)
};
logger.info(`get whiteboard options success, roomId: ${roomId}, userId: ${userId}, boardOptions: ${(0, _imports.jsonstring)(boardOptions)}`);
(0, _sharedStorage.setWhiteboardOptions)(boardOptions);
}
}
function addBoardInitInfoObserver(scene, api, logger) {
scene.addObserver({
onScenePropertiesUpdated: (_sceneId, event) => {
const annotationBoardAppId = (0, _imports.get)(event.changedProperties, 'widgets.annotation.extra.boardAppId');
if (annotationBoardAppId) {
logger.info('widgets.annotation.extra.boardAppId updated, re-initializing annotation info');
initAnnotationInfo(scene, api, logger);
}
const whiteboardBoardAppId = (0, _imports.get)(event.changedProperties, 'widgets.netlessBoard.extra.boardAppId');
if (whiteboardBoardAppId) {
logger.info('widgets.netlessBoard.extra.boardAppId updated, re-initializing whiteboard info');
initBoardInfo(scene, api, logger);
}
},
onJoinSceneSuccess: () => {
logger.info('join scene success, re-initializing annotation and whiteboard info');
initAnnotationInfo(scene, api, logger);
initBoardInfo(scene, api, logger);
}
});
}