fcr-core 3.7.8 → 3.8.0-alpha
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/chat-connection/index.d.ts +1 -1
- package/lib/engine/index.js +6 -5
- package/lib/imports.d.ts +7 -2
- package/lib/imports.js +25 -4
- package/lib/index.d.ts +2 -2
- package/lib/index.js +12 -0
- package/lib/media-control/desktop.js +4 -4
- package/lib/media-control/mobile.js +20 -20
- package/lib/media-control/type.d.ts +8 -0
- package/lib/plugins/chatroom.js +19 -3
- package/lib/room-control/ability-control/type.d.ts +4 -1
- package/lib/room-control/ability-control/type.js +3 -0
- package/lib/room-control/helpers/constants.d.ts +4 -0
- package/lib/room-control/helpers/constants.js +5 -1
- package/lib/room-control/index.js +16 -5
- package/lib/room-control/interpreter-control/index.js +2 -4
- package/lib/room-control/mainroom-control/index.js +66 -1
- package/lib/room-control/privilege-control/index.js +43 -3
- package/lib/room-control/privilege-control/type.d.ts +57 -10
- package/lib/room-control/privilege-control/type.js +17 -0
- package/lib/room-control/room-control-factory.js +1 -1
- package/lib/room-control/room-session/index.js +23 -13
- package/lib/room-control/room-session/type.d.ts +2 -2
- package/lib/room-control/sharing-control/index.d.ts +5 -5
- package/lib/room-control/sharing-control/index.js +43 -13
- package/lib/room-control/sharing-control/type.d.ts +9 -5
- package/lib/room-control/sharing-control/type.js +6 -1
- package/lib/room-control/stream-control/index.d.ts +8 -1
- package/lib/room-control/stream-control/index.js +139 -36
- package/lib/room-control/stream-control/type.d.ts +6 -0
- package/lib/room-control/stt-control/de-compress-gzip.d.ts +1 -0
- package/lib/room-control/stt-control/de-compress-gzip.js +49 -0
- package/lib/room-control/stt-control/index.d.ts +1 -0
- package/lib/room-control/stt-control/index.js +353 -0
- package/lib/room-control/stt-control/type.d.ts +142 -0
- package/lib/room-control/stt-control/type.js +16 -0
- package/lib/room-control/type.d.ts +15 -0
- package/lib/room-control/type.js +13 -1
- package/lib/room-control/whiteboard-control/enum.d.ts +15 -0
- package/lib/room-control/whiteboard-control/{types.js → enum.js} +12 -1
- package/lib/room-control/whiteboard-control/type.d.ts +38 -0
- package/lib/room-control/whiteboard-control/type.js +15 -0
- package/lib/room-control/whiteboard-control/utils.d.ts +3 -0
- package/lib/room-control/whiteboard-control/utils.js +23 -0
- package/lib/room-control/whiteboard-control-v1/board-subwindow.d.ts +6 -0
- package/lib/room-control/whiteboard-control-v1/board-subwindow.js +26 -0
- package/lib/room-control/whiteboard-control-v1/board-window.d.ts +58 -0
- package/lib/room-control/whiteboard-control-v1/board-window.js +571 -0
- package/lib/room-control/{whiteboard-control/enums.d.ts → whiteboard-control-v1/enum.d.ts} +3 -17
- package/lib/room-control/{whiteboard-control/enums.js → whiteboard-control-v1/enum.js} +3 -20
- package/lib/room-control/whiteboard-control-v1/factory.d.ts +9 -0
- package/lib/room-control/whiteboard-control-v1/factory.js +22 -0
- package/lib/room-control/whiteboard-control-v1/index.d.ts +1 -0
- package/lib/room-control/whiteboard-control-v1/index.js +440 -0
- package/lib/room-control/whiteboard-control-v1/mount-manager.d.ts +4 -0
- package/lib/room-control/whiteboard-control-v1/mount-manager.js +15 -0
- package/lib/room-control/whiteboard-control-v1/type.d.ts +300 -0
- package/lib/room-control/whiteboard-control-v1/type.js +13 -0
- package/lib/room-control/whiteboard-control-v1/utils.d.ts +53 -0
- package/lib/room-control/whiteboard-control-v1/utils.js +290 -0
- package/lib/room-control/whiteboard-control-v2/annotation-control/control.d.ts +17 -31
- package/lib/room-control/whiteboard-control-v2/annotation-control/control.js +39 -233
- package/lib/room-control/whiteboard-control-v2/annotation-control/factory.d.ts +10 -0
- package/lib/room-control/whiteboard-control-v2/annotation-control/factory.js +48 -0
- package/lib/room-control/whiteboard-control-v2/annotation-control/type.d.ts +11 -19
- package/lib/room-control/whiteboard-control-v2/annotation-control/type.js +1 -3
- package/lib/room-control/whiteboard-control-v2/base/index.d.ts +42 -0
- package/lib/room-control/whiteboard-control-v2/base/index.js +317 -0
- package/lib/room-control/whiteboard-control-v2/{main-window.d.ts → base/main-window.d.ts} +6 -4
- package/lib/room-control/whiteboard-control-v2/{main-window.js → base/main-window.js} +31 -18
- package/lib/room-control/whiteboard-control-v2/constant.d.ts +6 -0
- package/lib/room-control/whiteboard-control-v2/constant.js +15 -0
- package/lib/room-control/whiteboard-control-v2/enum.d.ts +26 -0
- package/lib/room-control/whiteboard-control-v2/enum.js +34 -0
- package/lib/room-control/{whiteboard-control/types.d.ts → whiteboard-control-v2/type.d.ts} +51 -165
- package/lib/room-control/whiteboard-control-v2/type.js +5 -0
- package/lib/room-control/whiteboard-control-v2/utils.d.ts +5 -4
- package/lib/room-control/whiteboard-control-v2/utils.js +22 -21
- package/lib/room-control/whiteboard-control-v2/whiteboard-control/control.d.ts +34 -33
- package/lib/room-control/whiteboard-control-v2/whiteboard-control/control.js +124 -191
- package/lib/room-control/whiteboard-control-v2/whiteboard-control/factory.d.ts +11 -0
- package/lib/room-control/whiteboard-control-v2/{annotation-control/index.js → whiteboard-control/factory.js} +35 -44
- package/lib/room-control/whiteboard-control-v2/whiteboard-control/type.d.ts +18 -30
- package/lib/room-control/whiteboard-control-v2/whiteboard-control/type.js +1 -9
- package/lib/room-router/index.js +4 -0
- package/lib/schema.d.ts +23 -9
- package/lib/schema.js +10 -4
- package/lib/service/api.d.ts +75 -19
- package/lib/service/api.js +193 -24
- package/lib/type.d.ts +15 -2
- package/lib/type.js +13 -0
- package/lib/utilities/error-helpers.d.ts +2 -1
- package/lib/utilities/error-helpers.js +1 -0
- package/lib/utilities/error.d.ts +1 -0
- package/lib/utilities/error.js +1 -0
- package/lib/utilities/logger.d.ts +2 -2
- package/lib/utilities/shared-storage.d.ts +3 -1
- package/lib/utilities/shared-storage.js +9 -1
- package/package.json +11 -5
- package/lib/room-control/whiteboard-control-v2/annotation-control/index.d.ts +0 -19
- package/lib/room-control/whiteboard-control-v2/annotation-control/privilege-control.d.ts +0 -36
- package/lib/room-control/whiteboard-control-v2/annotation-control/privilege-control.js +0 -262
- package/lib/room-control/whiteboard-control-v2/index.d.ts +0 -38
- package/lib/room-control/whiteboard-control-v2/index.js +0 -286
- package/lib/room-control/whiteboard-control-v2/whiteboard-control/index.d.ts +0 -17
- package/lib/room-control/whiteboard-control-v2/whiteboard-control/index.js +0 -32
- package/lib/room-control/whiteboard-control-v2/whiteboard-control/privilege-control.d.ts +0 -36
- package/lib/room-control/whiteboard-control-v2/whiteboard-control/privilege-control.js +0 -252
|
@@ -1,32 +1,18 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
protected
|
|
13
|
-
protected
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
protected
|
|
17
|
-
protected
|
|
18
|
-
protected boardRoom: Room | undefined;
|
|
19
|
-
private _openAbortController;
|
|
20
|
-
constructor(rtmClient: AgoraRtmClient, annotationConfig: FcrAnnotationConfig);
|
|
21
|
-
open(): Promise<FcrBoardMainWindow>;
|
|
22
|
-
close(): Promise<void>;
|
|
23
|
-
getConnectionState(): FcrConnectionState;
|
|
24
|
-
getMainWindow(): FcrBoardMainWindow | undefined;
|
|
25
|
-
addPermission(permission: FcrWhiteboardPermissionFlag): void;
|
|
26
|
-
removePermission(permission: FcrWhiteboardPermissionFlag): void;
|
|
27
|
-
addObserver(observer: FcrWhiteboardObserver): void;
|
|
28
|
-
removeObserver(observer: FcrWhiteboardObserver): void;
|
|
29
|
-
protected updateConnnectionState(state: FcrConnectionState): void;
|
|
30
|
-
protected _connect(): Promise<FcrBoardMainWindow>;
|
|
31
|
-
private _addLogObserver;
|
|
1
|
+
import { FcrBaseWhiteboardObserver, FcrObjectForgeInitConfig } from '../type';
|
|
2
|
+
import { FcrAnnotationControl, FcrStandaloneAnnotationControl } from './type';
|
|
3
|
+
import { FcrBaseWhiteboardControlImpl } from '../base';
|
|
4
|
+
import { WhiteboardOption } from '@netless/forge-whiteboard';
|
|
5
|
+
import { FcrBoardConfig } from '../whiteboard-control/type';
|
|
6
|
+
import type { RTMClient } from 'agora-rtm';
|
|
7
|
+
export declare class FcrAnnotationControlImpl extends FcrBaseWhiteboardControlImpl<FcrBaseWhiteboardObserver> implements FcrAnnotationControl {
|
|
8
|
+
protected rtmClient: RTMClient;
|
|
9
|
+
protected config: FcrBoardConfig;
|
|
10
|
+
protected logger: import("agora-foundation/lib/logger").Logger;
|
|
11
|
+
constructor(rtmClient: RTMClient, config: FcrBoardConfig, hasOperationPrivilege: boolean, forgeInitConfigFetcher: () => Promise<FcrObjectForgeInitConfig>);
|
|
12
|
+
protected getApplicationId(): string;
|
|
13
|
+
protected getWhiteboardOption(): WhiteboardOption;
|
|
14
|
+
}
|
|
15
|
+
export declare class FcrStandaloneAnnotationControlImpl extends FcrBaseWhiteboardControlImpl<FcrBaseWhiteboardObserver> implements FcrStandaloneAnnotationControl {
|
|
16
|
+
protected getApplicationId(): string;
|
|
17
|
+
protected getWhiteboardOption(): WhiteboardOption;
|
|
32
18
|
}
|
|
@@ -1,246 +1,52 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
require("core-js/modules/es.symbol.description.js");
|
|
4
|
-
require("core-js/modules/es.array.push.js");
|
|
5
|
-
require("core-js/modules/esnext.function.metadata.js");
|
|
6
|
-
require("core-js/modules/esnext.map.delete-all.js");
|
|
7
|
-
require("core-js/modules/esnext.map.emplace.js");
|
|
8
|
-
require("core-js/modules/esnext.map.every.js");
|
|
9
|
-
require("core-js/modules/esnext.map.filter.js");
|
|
10
|
-
require("core-js/modules/esnext.map.find.js");
|
|
11
|
-
require("core-js/modules/esnext.map.find-key.js");
|
|
12
|
-
require("core-js/modules/esnext.map.includes.js");
|
|
13
|
-
require("core-js/modules/esnext.map.key-of.js");
|
|
14
|
-
require("core-js/modules/esnext.map.map-keys.js");
|
|
15
|
-
require("core-js/modules/esnext.map.map-values.js");
|
|
16
|
-
require("core-js/modules/esnext.map.merge.js");
|
|
17
|
-
require("core-js/modules/esnext.map.reduce.js");
|
|
18
|
-
require("core-js/modules/esnext.map.some.js");
|
|
19
|
-
require("core-js/modules/esnext.map.update.js");
|
|
20
|
-
require("core-js/modules/esnext.symbol.metadata.js");
|
|
21
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
22
4
|
Object.defineProperty(exports, "__esModule", {
|
|
23
5
|
value: true
|
|
24
6
|
});
|
|
25
|
-
exports.FcrAnnotationControlImpl = void 0;
|
|
26
|
-
require("core-js/modules/es.error.cause.js");
|
|
27
|
-
require("core-js/modules/es.json.stringify.js");
|
|
28
|
-
require("core-js/modules/es.regexp.exec.js");
|
|
29
|
-
require("core-js/modules/web.dom-collections.iterator.js");
|
|
7
|
+
exports.FcrStandaloneAnnotationControlImpl = exports.FcrAnnotationControlImpl = void 0;
|
|
30
8
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
31
|
-
var _type = require("./type");
|
|
32
|
-
var _forgeRoom = require("@netless/forge-room");
|
|
33
|
-
var _forgeWhiteboard = require("@netless/forge-whiteboard");
|
|
34
|
-
var _imports = require("agora-rte-sdk/lib/imports");
|
|
35
|
-
var _type2 = require("../../../type");
|
|
36
|
-
var _mainWindow = require("../main-window");
|
|
37
|
-
var _forgeRtm = require("@netless/forge-rtm");
|
|
38
|
-
var _error = require("../../../utilities/error");
|
|
39
9
|
var _logger = require("../../../utilities/logger");
|
|
40
|
-
var
|
|
41
|
-
var
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
function _setFunctionName(e, t, n) { "symbol" == typeof t && (t = (t = t.description) ? "[" + t + "]" : ""); try { Object.defineProperty(e, "name", { configurable: !0, value: n ? n + " " + t : t }); } catch (e) {} return e; }
|
|
47
|
-
function _checkInRHS(e) { if (Object(e) !== e) throw TypeError("right-hand side of 'in' should be an object, got " + (null !== e ? typeof e : "null")); return e; }
|
|
48
|
-
class FcrAnnotationControlImpl {
|
|
49
|
-
constructor(rtmClient, annotationConfig) {
|
|
50
|
-
(0, _defineProperty2.default)(this, "logger", (_initProto(this), (0, _logger.createLogger)({
|
|
10
|
+
var _base = require("../base");
|
|
11
|
+
var _constant = require("../constant");
|
|
12
|
+
class FcrAnnotationControlImpl extends _base.FcrBaseWhiteboardControlImpl {
|
|
13
|
+
constructor(rtmClient, config, hasOperationPrivilege, forgeInitConfigFetcher) {
|
|
14
|
+
super(rtmClient, config, hasOperationPrivilege, forgeInitConfigFetcher);
|
|
15
|
+
(0, _defineProperty2.default)(this, "logger", (0, _logger.createLogger)({
|
|
51
16
|
prefix: 'FcrAnnotationControlImpl'
|
|
52
|
-
}))
|
|
53
|
-
(0, _defineProperty2.default)(this, "observable", new _imports2.AgoraObservable());
|
|
54
|
-
(0, _defineProperty2.default)(this, "connectState", _type2.FcrConnectionState.DISCONNECTED);
|
|
55
|
-
(0, _defineProperty2.default)(this, "_openAbortController", null);
|
|
17
|
+
}));
|
|
56
18
|
this.rtmClient = rtmClient;
|
|
57
|
-
this.
|
|
58
|
-
this.
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
this.boardView = undefined;
|
|
73
|
-
if (boardRoom) {
|
|
74
|
-
boardRoom.applicationManager.removeAllListeners();
|
|
75
|
-
boardRoom.applicationManager.terminateApplication(_type.ANNOTATION_APP_ID);
|
|
76
|
-
await boardRoom.leaveRoom();
|
|
77
|
-
}
|
|
78
|
-
} catch (e) {
|
|
79
|
-
this.logger.error('close board failed', e);
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
getConnectionState() {
|
|
83
|
-
return this.connectState;
|
|
84
|
-
}
|
|
85
|
-
getMainWindow() {
|
|
86
|
-
return this.boardView;
|
|
87
|
-
}
|
|
88
|
-
addPermission(permission) {
|
|
89
|
-
const annotation = this.annotation;
|
|
90
|
-
if (annotation) {
|
|
91
|
-
annotation.permissions.addPermission(permission);
|
|
92
|
-
} else {
|
|
93
|
-
this.logger.warn("add permission failed, annotation is not initialized, permission: ".concat(permission));
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
removePermission(permission) {
|
|
97
|
-
const annotation = this.annotation;
|
|
98
|
-
if (annotation) {
|
|
99
|
-
annotation.permissions.removePermission(permission);
|
|
100
|
-
} else {
|
|
101
|
-
this.logger.warn("remove permission failed, annotation is not initialized, permission: ".concat(permission));
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
addObserver(observer) {
|
|
105
|
-
this.observable.addObserver(observer);
|
|
106
|
-
}
|
|
107
|
-
removeObserver(observer) {
|
|
108
|
-
this.observable.removeObserver(observer);
|
|
109
|
-
}
|
|
110
|
-
updateConnnectionState(state) {
|
|
111
|
-
this.connectState = state;
|
|
112
|
-
this.observable.notifyObservers('onConnectionStateUpdated', state);
|
|
113
|
-
}
|
|
114
|
-
async _connect() {
|
|
115
|
-
if (this.boardView) {
|
|
116
|
-
this.logger.info('annotation already connected, returning existing board view');
|
|
117
|
-
return this.boardView;
|
|
118
|
-
}
|
|
119
|
-
const abortController = new AbortController();
|
|
120
|
-
this._openAbortController = abortController;
|
|
121
|
-
return new Promise(async (resolve, reject) => {
|
|
122
|
-
// 监听中止信号
|
|
123
|
-
abortController.signal.addEventListener('abort', () => {
|
|
124
|
-
reject(new Error('join board aborted'));
|
|
125
|
-
});
|
|
126
|
-
const {
|
|
127
|
-
userId,
|
|
128
|
-
nickName,
|
|
129
|
-
size,
|
|
130
|
-
extra
|
|
131
|
-
} = this.annotationConfig;
|
|
132
|
-
let {
|
|
133
|
-
width,
|
|
134
|
-
height
|
|
135
|
-
} = this.annotationConfig.size;
|
|
136
|
-
const {
|
|
137
|
-
boardAppId,
|
|
138
|
-
boardId,
|
|
139
|
-
boardToken,
|
|
140
|
-
region
|
|
141
|
-
} = this.annotationConfig.extra;
|
|
142
|
-
if (!size) {
|
|
143
|
-
throw (0, _error.generateFcrCoreClientError)(_error.FcrErrorModuleCode.ROOM_WHITEBOARD, _error.FcrErrorCode.UNDEFINED_ERROR, 'annotation size is required', new Error('annotation size is required'));
|
|
144
|
-
}
|
|
145
|
-
if (!extra) {
|
|
146
|
-
throw (0, _error.generateFcrCoreClientError)(_error.FcrErrorModuleCode.ROOM_WHITEBOARD, _error.FcrErrorCode.UNDEFINED_ERROR, 'annotation extra is required', new Error('annotation extra is required'));
|
|
147
|
-
}
|
|
148
|
-
if (!boardId) {
|
|
149
|
-
throw (0, _error.generateFcrCoreClientError)(_error.FcrErrorModuleCode.ROOM_WHITEBOARD, _error.FcrErrorCode.UNDEFINED_ERROR, 'boardId is required', new Error('boardId is required'));
|
|
150
|
-
}
|
|
151
|
-
if (!boardToken) {
|
|
152
|
-
throw (0, _error.generateFcrCoreClientError)(_error.FcrErrorModuleCode.ROOM_WHITEBOARD, _error.FcrErrorCode.UNDEFINED_ERROR, 'boardToken is required', new Error('boardToken is required'));
|
|
153
|
-
}
|
|
154
|
-
if (!width) {
|
|
155
|
-
this.logger.warn("annotation width is a invalid vlaue: ".concat(width, ", using default value 800"));
|
|
156
|
-
width = 800;
|
|
157
|
-
}
|
|
158
|
-
if (!height) {
|
|
159
|
-
this.logger.warn("annotation height is a invalid value: ".concat(height, ", using default value 600"));
|
|
160
|
-
height = 600;
|
|
161
|
-
}
|
|
162
|
-
this.logger.info("open annotation with boardId: ".concat(boardId, ", boardToken: ").concat(boardToken, ", region: ").concat(region));
|
|
163
|
-
|
|
164
|
-
// @ts-ignore
|
|
165
|
-
const rtmProvider = new _forgeRtm.RTMProvider_2_2(this.rtmClient);
|
|
166
|
-
const wbRoom = new _forgeRoom.Room(boardId, rtmProvider);
|
|
167
|
-
wbRoom.applicationManager.registerApplication(_forgeWhiteboard.WhiteboardApplication);
|
|
168
|
-
try {
|
|
169
|
-
this.updateConnnectionState(_type2.FcrConnectionState.CONNECTING);
|
|
170
|
-
const retriesMax = 10;
|
|
171
|
-
let error = null;
|
|
172
|
-
let boardView = null;
|
|
173
|
-
let whiteboard = null;
|
|
174
|
-
let boardRoom = wbRoom;
|
|
175
|
-
[error] = await (0, _imports2.to)((0, _imports.retryAttempt)(async () => {
|
|
176
|
-
const joinRoomParams = {
|
|
177
|
-
userId,
|
|
178
|
-
nickName,
|
|
179
|
-
roomToken: boardToken,
|
|
180
|
-
sdkConfig: {
|
|
181
|
-
// @ts-ignore
|
|
182
|
-
region,
|
|
183
|
-
appIdentifier: boardAppId,
|
|
184
|
-
enableIFramePlugin: false,
|
|
185
|
-
useMultiViews: true
|
|
186
|
-
}
|
|
187
|
-
};
|
|
188
|
-
this.logger.info("join params: ".concat((0, _imports2.jsonstring)(joinRoomParams)));
|
|
189
|
-
await wbRoom.joinRoom(joinRoomParams);
|
|
190
|
-
boardRoom = wbRoom;
|
|
191
|
-
whiteboard = await wbRoom.applicationManager.launchApplication(_forgeWhiteboard.WhiteboardApplication, {
|
|
192
|
-
width,
|
|
193
|
-
height,
|
|
194
|
-
defaultToolbarStyle: {
|
|
195
|
-
tool: 'laser'
|
|
196
|
-
},
|
|
197
|
-
maxScaleRatio: 1
|
|
198
|
-
}, _type.ANNOTATION_APP_ID);
|
|
199
|
-
}, [], {
|
|
200
|
-
retriesMax
|
|
201
|
-
}).fail(async _ref => {
|
|
202
|
-
let {
|
|
203
|
-
error,
|
|
204
|
-
timeFn,
|
|
205
|
-
currentRetry
|
|
206
|
-
} = _ref;
|
|
207
|
-
if (abortController.signal.aborted) {
|
|
208
|
-
throw new Error('join board aborted');
|
|
209
|
-
}
|
|
210
|
-
this.logger.info("failed to join board, error: ".concat(error.message, ", current retry: ").concat(currentRetry));
|
|
211
|
-
await timeFn();
|
|
212
|
-
return true;
|
|
213
|
-
}).exec());
|
|
214
|
-
if (abortController.signal.aborted) {
|
|
215
|
-
throw new Error('join board aborted');
|
|
216
|
-
}
|
|
217
|
-
if (error) {
|
|
218
|
-
this.logger.error("join board failed, ".concat(error.message, "-").concat(JSON.stringify(error)));
|
|
219
|
-
throw error;
|
|
220
|
-
}
|
|
221
|
-
whiteboard.enableCameraByMouse = false;
|
|
222
|
-
whiteboard.enableCameraByTouch = false;
|
|
223
|
-
whiteboard.setViewModeToMain();
|
|
224
|
-
boardView = new _mainWindow.FcrBoardMainWindowImpl(whiteboard, wbRoom);
|
|
225
|
-
boardView.setBackgroundColor('rgba(0, 0, 0, 0)');
|
|
226
|
-
this.annotation = whiteboard;
|
|
227
|
-
this.boardView = boardView;
|
|
228
|
-
this.boardRoom = boardRoom;
|
|
229
|
-
this.updateConnnectionState(_type2.FcrConnectionState.CONNECTED);
|
|
230
|
-
resolve(boardView);
|
|
231
|
-
} catch (e) {
|
|
232
|
-
this.logger.error("join board failed");
|
|
233
|
-
this.updateConnnectionState(_type2.FcrConnectionState.DISCONNECTED);
|
|
234
|
-
reject(e);
|
|
235
|
-
} finally {
|
|
236
|
-
this._openAbortController = null;
|
|
237
|
-
}
|
|
238
|
-
});
|
|
239
|
-
}
|
|
240
|
-
_addLogObserver() {
|
|
241
|
-
this.addObserver((0, _logger.generateLogObserver)(this.logger, ['onConnectionStateUpdated', 'onActive', 'onInactive', 'onBackgroundColorUpdated']));
|
|
19
|
+
this.config = config;
|
|
20
|
+
this.logger.info("initialized, hasOperationPrivilege: ".concat(hasOperationPrivilege));
|
|
21
|
+
}
|
|
22
|
+
getApplicationId() {
|
|
23
|
+
return _constant.ANNOTATION_APP_ID;
|
|
24
|
+
}
|
|
25
|
+
getWhiteboardOption() {
|
|
26
|
+
return {
|
|
27
|
+
width: 800,
|
|
28
|
+
height: 600,
|
|
29
|
+
defaultToolbarStyle: {
|
|
30
|
+
tool: 'laser'
|
|
31
|
+
},
|
|
32
|
+
maxScaleRatio: 1
|
|
33
|
+
};
|
|
242
34
|
}
|
|
243
35
|
}
|
|
244
36
|
exports.FcrAnnotationControlImpl = FcrAnnotationControlImpl;
|
|
245
|
-
|
|
246
|
-
|
|
37
|
+
class FcrStandaloneAnnotationControlImpl extends _base.FcrBaseWhiteboardControlImpl {
|
|
38
|
+
getApplicationId() {
|
|
39
|
+
return _constant.ANNOTATION_APP_ID;
|
|
40
|
+
}
|
|
41
|
+
getWhiteboardOption() {
|
|
42
|
+
return {
|
|
43
|
+
width: 800,
|
|
44
|
+
height: 600,
|
|
45
|
+
defaultToolbarStyle: {
|
|
46
|
+
tool: 'laser'
|
|
47
|
+
},
|
|
48
|
+
maxScaleRatio: 1
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
exports.FcrStandaloneAnnotationControlImpl = FcrStandaloneAnnotationControlImpl;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { FcrAnnotationConfig, FcrAnnotationControl, FcrAnnotationControlFactory } from './type';
|
|
2
|
+
import { FcrAnnotationControlImpl } from './control';
|
|
3
|
+
import { FcrCoreServiceApi } from '../../../service/api';
|
|
4
|
+
import type { RTMClient } from 'agora-rtm';
|
|
5
|
+
export declare class FcrAnnotationControlFactoryImpl implements FcrAnnotationControlFactory {
|
|
6
|
+
protected logger: import("agora-foundation/lib/logger").Logger;
|
|
7
|
+
createForSubProcess(rtmClient: RTMClient, hasOperationPrivilege: boolean, config: FcrAnnotationConfig): FcrAnnotationControl;
|
|
8
|
+
createForMainProcess(rtmClient: RTMClient, hasOperationPrivilege: boolean, config: FcrAnnotationConfig, api: FcrCoreServiceApi): FcrAnnotationControlImpl;
|
|
9
|
+
private _createForgeInitConfigFetcher;
|
|
10
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.FcrAnnotationControlFactoryImpl = void 0;
|
|
8
|
+
require("core-js/modules/es.error.cause.js");
|
|
9
|
+
require("core-js/modules/es.json.stringify.js");
|
|
10
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
|
+
var _control = require("./control");
|
|
12
|
+
var _logger = require("../../../utilities/logger");
|
|
13
|
+
var _error = require("../../../utilities/error");
|
|
14
|
+
var _sharedStorage = require("../../../utilities/shared-storage");
|
|
15
|
+
class FcrAnnotationControlFactoryImpl {
|
|
16
|
+
constructor() {
|
|
17
|
+
(0, _defineProperty2.default)(this, "logger", (0, _logger.createLogger)({
|
|
18
|
+
prefix: 'FcrAnnotationControlFactory'
|
|
19
|
+
}));
|
|
20
|
+
}
|
|
21
|
+
createForSubProcess(rtmClient, hasOperationPrivilege, config) {
|
|
22
|
+
this.logger.info("[annotation]: create for sub process with config: ".concat(JSON.stringify(config)));
|
|
23
|
+
return new _control.FcrStandaloneAnnotationControlImpl(rtmClient, config, hasOperationPrivilege, () => {
|
|
24
|
+
const forgeInitConfig = (0, _sharedStorage.getAnnotationBoardOptions)();
|
|
25
|
+
if (!forgeInitConfig) {
|
|
26
|
+
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"));
|
|
27
|
+
}
|
|
28
|
+
return Promise.resolve(forgeInitConfig);
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
createForMainProcess(rtmClient, hasOperationPrivilege, config, api) {
|
|
32
|
+
const control = new _control.FcrAnnotationControlImpl(rtmClient, config, hasOperationPrivilege, this._createForgeInitConfigFetcher(api, config.roomId, config.userId));
|
|
33
|
+
return control;
|
|
34
|
+
}
|
|
35
|
+
_createForgeInitConfigFetcher(api, roomId, userId) {
|
|
36
|
+
const getObjectInitConfig = async (roomId, userId) => {
|
|
37
|
+
return await (0, _error.handleRequestError)(() => api.getAnnotationToken({
|
|
38
|
+
roomId,
|
|
39
|
+
userId
|
|
40
|
+
}), _error.FcrErrorModuleCode.ROOM_WHITEBOARD, 'get annotation token failed');
|
|
41
|
+
};
|
|
42
|
+
return async () => {
|
|
43
|
+
const response = await getObjectInitConfig(roomId, userId);
|
|
44
|
+
return response.data;
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
exports.FcrAnnotationControlFactoryImpl = FcrAnnotationControlFactoryImpl;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { FcrBaseWhiteboardControl } from '
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
removePermission(permission: FcrWhiteboardPermissionFlag): void;
|
|
1
|
+
import { FcrBaseWhiteboardControl, FcrBaseWhiteboardObserver } from '../type';
|
|
2
|
+
import { FcrBoardConfig } from '../whiteboard-control/type';
|
|
3
|
+
import { FcrCoreServiceApi } from '../../../service/api';
|
|
4
|
+
import type { RTMClient } from 'agora-rtm';
|
|
5
|
+
export interface FcrStandaloneAnnotationControl extends FcrBaseWhiteboardControl<FcrBaseWhiteboardObserver> {
|
|
7
6
|
}
|
|
8
|
-
export interface
|
|
9
|
-
|
|
7
|
+
export interface FcrAnnotationControl extends FcrBaseWhiteboardControl<FcrBaseWhiteboardObserver> {
|
|
8
|
+
}
|
|
9
|
+
export interface FcrAnnotationControObserver extends FcrBaseWhiteboardObserver {
|
|
10
10
|
}
|
|
11
11
|
export interface FcrAnnotationBoardConfig {
|
|
12
12
|
state: number;
|
|
@@ -25,21 +25,13 @@ export interface FcrAnnotationBoardConfig {
|
|
|
25
25
|
region: string;
|
|
26
26
|
};
|
|
27
27
|
}
|
|
28
|
-
export type FcrAnnotationConfig = {
|
|
29
|
-
userId: string;
|
|
30
|
-
nickName: string;
|
|
28
|
+
export type FcrAnnotationConfig = FcrBoardConfig & {
|
|
31
29
|
size: {
|
|
32
30
|
width: number;
|
|
33
31
|
height: number;
|
|
34
32
|
};
|
|
35
|
-
extra: {
|
|
36
|
-
boardAppId: string;
|
|
37
|
-
boardId: string;
|
|
38
|
-
boardToken: string;
|
|
39
|
-
region: FcrJoinRoomOptions['sdkConfig']['region'];
|
|
40
|
-
};
|
|
41
33
|
};
|
|
42
34
|
export interface FcrAnnotationControlFactory {
|
|
43
|
-
createForSubProcess(config: FcrAnnotationConfig):
|
|
44
|
-
createForMainProcess():
|
|
35
|
+
createForSubProcess(rtmClient: RTMClient, hasOperationPrivilege: boolean, config: FcrAnnotationConfig): FcrStandaloneAnnotationControl;
|
|
36
|
+
createForMainProcess(rtmClient: RTMClient, hasOperationPrivilege: boolean, config: FcrAnnotationConfig, api: FcrCoreServiceApi): FcrAnnotationControl;
|
|
45
37
|
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { FcrBaseWhiteboardControl, FcrBaseWhiteboardObserver, FcrBoardMainWindow, FcrObjectForgeInitConfig } from '../type';
|
|
2
|
+
import { AgoraRteConnectionState } from 'agora-rte-sdk';
|
|
3
|
+
import type { RTMClient } from 'agora-rtm';
|
|
4
|
+
import { AgoraObservable, AgoraScheduler } from '../../../imports';
|
|
5
|
+
import { FcrBoardConfig } from '../whiteboard-control/type';
|
|
6
|
+
import { Room } from '@netless/forge-room';
|
|
7
|
+
import { Whiteboard, WhiteboardOption } from '@netless/forge-whiteboard';
|
|
8
|
+
import { FcrConnectionState } from '../../../type';
|
|
9
|
+
export declare class FcrBaseWhiteboardControlImpl<T extends FcrBaseWhiteboardObserver> implements FcrBaseWhiteboardControl<T> {
|
|
10
|
+
protected rtmClient: RTMClient;
|
|
11
|
+
protected config: FcrBoardConfig;
|
|
12
|
+
protected logger: import("agora-foundation/lib/logger/type").Logger;
|
|
13
|
+
protected forgeInitConfigTask: AgoraScheduler.Task;
|
|
14
|
+
protected observable: AgoraObservable<T>;
|
|
15
|
+
protected boardView: FcrBoardMainWindow | null;
|
|
16
|
+
protected boardRoom: Room | null;
|
|
17
|
+
protected whiteboard: Whiteboard | null;
|
|
18
|
+
protected connectState: FcrConnectionState;
|
|
19
|
+
protected forgeInitConfig: FcrObjectForgeInitConfig | null;
|
|
20
|
+
protected hasOperationPrivilege: boolean;
|
|
21
|
+
private _waitPromise;
|
|
22
|
+
private _waitPromiseResolve;
|
|
23
|
+
private _waitPromiseReject;
|
|
24
|
+
private _openAbortController;
|
|
25
|
+
private _isOpen;
|
|
26
|
+
constructor(rtmClient: RTMClient, config: FcrBoardConfig, hasOperationPrivilege: boolean, forgeInitConfigFetcher: () => Promise<FcrObjectForgeInitConfig>);
|
|
27
|
+
setOperationPrivilege(hasOperationPrivilege: boolean): void;
|
|
28
|
+
open(): Promise<FcrBoardMainWindow>;
|
|
29
|
+
close(): Promise<void>;
|
|
30
|
+
getConnectionState(): AgoraRteConnectionState;
|
|
31
|
+
getMainWindow(): FcrBoardMainWindow | null;
|
|
32
|
+
addObserver(observer: T): void;
|
|
33
|
+
removeObserver(observer: T): void;
|
|
34
|
+
protected updateConnectionState(state: FcrConnectionState): void;
|
|
35
|
+
protected connect(): Promise<FcrBoardMainWindow>;
|
|
36
|
+
protected getApplicationId(): string;
|
|
37
|
+
protected getWhiteboardOption(): WhiteboardOption;
|
|
38
|
+
protected getBackgroundColor(): string;
|
|
39
|
+
protected addLogObserver(): void;
|
|
40
|
+
private _checkForConnect;
|
|
41
|
+
private _clearWaitPromise;
|
|
42
|
+
}
|