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.
Files changed (108) hide show
  1. package/lib/chat-connection/index.d.ts +1 -1
  2. package/lib/engine/index.js +6 -5
  3. package/lib/imports.d.ts +7 -2
  4. package/lib/imports.js +25 -4
  5. package/lib/index.d.ts +2 -2
  6. package/lib/index.js +12 -0
  7. package/lib/media-control/desktop.js +4 -4
  8. package/lib/media-control/mobile.js +20 -20
  9. package/lib/media-control/type.d.ts +8 -0
  10. package/lib/plugins/chatroom.js +19 -3
  11. package/lib/room-control/ability-control/type.d.ts +4 -1
  12. package/lib/room-control/ability-control/type.js +3 -0
  13. package/lib/room-control/helpers/constants.d.ts +4 -0
  14. package/lib/room-control/helpers/constants.js +5 -1
  15. package/lib/room-control/index.js +16 -5
  16. package/lib/room-control/interpreter-control/index.js +2 -4
  17. package/lib/room-control/mainroom-control/index.js +66 -1
  18. package/lib/room-control/privilege-control/index.js +43 -3
  19. package/lib/room-control/privilege-control/type.d.ts +57 -10
  20. package/lib/room-control/privilege-control/type.js +17 -0
  21. package/lib/room-control/room-control-factory.js +1 -1
  22. package/lib/room-control/room-session/index.js +23 -13
  23. package/lib/room-control/room-session/type.d.ts +2 -2
  24. package/lib/room-control/sharing-control/index.d.ts +5 -5
  25. package/lib/room-control/sharing-control/index.js +43 -13
  26. package/lib/room-control/sharing-control/type.d.ts +9 -5
  27. package/lib/room-control/sharing-control/type.js +6 -1
  28. package/lib/room-control/stream-control/index.d.ts +8 -1
  29. package/lib/room-control/stream-control/index.js +139 -36
  30. package/lib/room-control/stream-control/type.d.ts +6 -0
  31. package/lib/room-control/stt-control/de-compress-gzip.d.ts +1 -0
  32. package/lib/room-control/stt-control/de-compress-gzip.js +49 -0
  33. package/lib/room-control/stt-control/index.d.ts +1 -0
  34. package/lib/room-control/stt-control/index.js +353 -0
  35. package/lib/room-control/stt-control/type.d.ts +142 -0
  36. package/lib/room-control/stt-control/type.js +16 -0
  37. package/lib/room-control/type.d.ts +15 -0
  38. package/lib/room-control/type.js +13 -1
  39. package/lib/room-control/whiteboard-control/enum.d.ts +15 -0
  40. package/lib/room-control/whiteboard-control/{types.js → enum.js} +12 -1
  41. package/lib/room-control/whiteboard-control/type.d.ts +38 -0
  42. package/lib/room-control/whiteboard-control/type.js +15 -0
  43. package/lib/room-control/whiteboard-control/utils.d.ts +3 -0
  44. package/lib/room-control/whiteboard-control/utils.js +23 -0
  45. package/lib/room-control/whiteboard-control-v1/board-subwindow.d.ts +6 -0
  46. package/lib/room-control/whiteboard-control-v1/board-subwindow.js +26 -0
  47. package/lib/room-control/whiteboard-control-v1/board-window.d.ts +58 -0
  48. package/lib/room-control/whiteboard-control-v1/board-window.js +571 -0
  49. package/lib/room-control/{whiteboard-control/enums.d.ts → whiteboard-control-v1/enum.d.ts} +3 -17
  50. package/lib/room-control/{whiteboard-control/enums.js → whiteboard-control-v1/enum.js} +3 -20
  51. package/lib/room-control/whiteboard-control-v1/factory.d.ts +9 -0
  52. package/lib/room-control/whiteboard-control-v1/factory.js +22 -0
  53. package/lib/room-control/whiteboard-control-v1/index.d.ts +1 -0
  54. package/lib/room-control/whiteboard-control-v1/index.js +440 -0
  55. package/lib/room-control/whiteboard-control-v1/mount-manager.d.ts +4 -0
  56. package/lib/room-control/whiteboard-control-v1/mount-manager.js +15 -0
  57. package/lib/room-control/whiteboard-control-v1/type.d.ts +300 -0
  58. package/lib/room-control/whiteboard-control-v1/type.js +13 -0
  59. package/lib/room-control/whiteboard-control-v1/utils.d.ts +53 -0
  60. package/lib/room-control/whiteboard-control-v1/utils.js +290 -0
  61. package/lib/room-control/whiteboard-control-v2/annotation-control/control.d.ts +17 -31
  62. package/lib/room-control/whiteboard-control-v2/annotation-control/control.js +39 -233
  63. package/lib/room-control/whiteboard-control-v2/annotation-control/factory.d.ts +10 -0
  64. package/lib/room-control/whiteboard-control-v2/annotation-control/factory.js +48 -0
  65. package/lib/room-control/whiteboard-control-v2/annotation-control/type.d.ts +11 -19
  66. package/lib/room-control/whiteboard-control-v2/annotation-control/type.js +1 -3
  67. package/lib/room-control/whiteboard-control-v2/base/index.d.ts +42 -0
  68. package/lib/room-control/whiteboard-control-v2/base/index.js +317 -0
  69. package/lib/room-control/whiteboard-control-v2/{main-window.d.ts → base/main-window.d.ts} +6 -4
  70. package/lib/room-control/whiteboard-control-v2/{main-window.js → base/main-window.js} +31 -18
  71. package/lib/room-control/whiteboard-control-v2/constant.d.ts +6 -0
  72. package/lib/room-control/whiteboard-control-v2/constant.js +15 -0
  73. package/lib/room-control/whiteboard-control-v2/enum.d.ts +26 -0
  74. package/lib/room-control/whiteboard-control-v2/enum.js +34 -0
  75. package/lib/room-control/{whiteboard-control/types.d.ts → whiteboard-control-v2/type.d.ts} +51 -165
  76. package/lib/room-control/whiteboard-control-v2/type.js +5 -0
  77. package/lib/room-control/whiteboard-control-v2/utils.d.ts +5 -4
  78. package/lib/room-control/whiteboard-control-v2/utils.js +22 -21
  79. package/lib/room-control/whiteboard-control-v2/whiteboard-control/control.d.ts +34 -33
  80. package/lib/room-control/whiteboard-control-v2/whiteboard-control/control.js +124 -191
  81. package/lib/room-control/whiteboard-control-v2/whiteboard-control/factory.d.ts +11 -0
  82. package/lib/room-control/whiteboard-control-v2/{annotation-control/index.js → whiteboard-control/factory.js} +35 -44
  83. package/lib/room-control/whiteboard-control-v2/whiteboard-control/type.d.ts +18 -30
  84. package/lib/room-control/whiteboard-control-v2/whiteboard-control/type.js +1 -9
  85. package/lib/room-router/index.js +4 -0
  86. package/lib/schema.d.ts +23 -9
  87. package/lib/schema.js +10 -4
  88. package/lib/service/api.d.ts +75 -19
  89. package/lib/service/api.js +193 -24
  90. package/lib/type.d.ts +15 -2
  91. package/lib/type.js +13 -0
  92. package/lib/utilities/error-helpers.d.ts +2 -1
  93. package/lib/utilities/error-helpers.js +1 -0
  94. package/lib/utilities/error.d.ts +1 -0
  95. package/lib/utilities/error.js +1 -0
  96. package/lib/utilities/logger.d.ts +2 -2
  97. package/lib/utilities/shared-storage.d.ts +3 -1
  98. package/lib/utilities/shared-storage.js +9 -1
  99. package/package.json +11 -5
  100. package/lib/room-control/whiteboard-control-v2/annotation-control/index.d.ts +0 -19
  101. package/lib/room-control/whiteboard-control-v2/annotation-control/privilege-control.d.ts +0 -36
  102. package/lib/room-control/whiteboard-control-v2/annotation-control/privilege-control.js +0 -262
  103. package/lib/room-control/whiteboard-control-v2/index.d.ts +0 -38
  104. package/lib/room-control/whiteboard-control-v2/index.js +0 -286
  105. package/lib/room-control/whiteboard-control-v2/whiteboard-control/index.d.ts +0 -17
  106. package/lib/room-control/whiteboard-control-v2/whiteboard-control/index.js +0 -32
  107. package/lib/room-control/whiteboard-control-v2/whiteboard-control/privilege-control.d.ts +0 -36
  108. package/lib/room-control/whiteboard-control-v2/whiteboard-control/privilege-control.js +0 -252
@@ -1,32 +1,18 @@
1
- import { FcrBoardMainWindow } from '../../whiteboard-control/types';
2
- import { FcrAnnotationConfig, FcrAnnotationControl } from './type';
3
- import { Room } from '@netless/forge-room';
4
- import { Whiteboard } from '@netless/forge-whiteboard';
5
- import { FcrConnectionState } from '../../../type';
6
- import { FcrWhiteboardObserver } from '../whiteboard-control/type';
7
- import { FcrWhiteboardPermissionFlag } from '../../../imports';
8
- import { AgoraRtmClient } from 'agora-rte-sdk/lib/core/rtm/client';
9
- import { AgoraObservable } from '../../../imports';
10
- export declare class FcrAnnotationControlImpl implements FcrAnnotationControl {
11
- protected rtmClient: AgoraRtmClient;
12
- protected annotationConfig: FcrAnnotationConfig;
13
- protected logger: import("agora-rte-sdk/lib/imports").Logger;
14
- protected observable: AgoraObservable<FcrWhiteboardObserver>;
15
- protected annotation: Whiteboard | undefined;
16
- protected connectState: FcrConnectionState;
17
- protected boardView: FcrBoardMainWindow | undefined;
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 _imports2 = require("../../../imports");
41
- var _FcrAnnotationControlImpl;
42
- let _initProto;
43
- function _applyDecs(e, t, r, n, o, a) { function i(e, t, r) { return function (n, o) { return r && r(n), e[t].call(n, o); }; } function c(e, t) { for (var r = 0; r < e.length; r++) e[r].call(t); return t; } function s(e, t, r, n) { if ("function" != typeof e && (n || void 0 !== e)) throw new TypeError(t + " must " + (r || "be") + " a function" + (n ? "" : " or undefined")); return e; } function applyDec(e, t, r, n, o, a, c, u, l, f, p, d, h) { function m(e) { if (!h(e)) throw new TypeError("Attempted to access private element on non-instance"); } var y, v = t[0], g = t[3], b = !u; if (!b) { r || Array.isArray(v) || (v = [v]); var w = {}, S = [], A = 3 === o ? "get" : 4 === o || d ? "set" : "value"; f ? (p || d ? w = { get: _setFunctionName(function () { return g(this); }, n, "get"), set: function (e) { t[4](this, e); } } : w[A] = g, p || _setFunctionName(w[A], n, 2 === o ? "" : A)) : p || (w = Object.getOwnPropertyDescriptor(e, n)); } for (var P = e, j = v.length - 1; j >= 0; j -= r ? 2 : 1) { var D = v[j], E = r ? v[j - 1] : void 0, I = {}, O = { kind: ["field", "accessor", "method", "getter", "setter", "class"][o], name: n, metadata: a, addInitializer: function (e, t) { if (e.v) throw Error("attempted to call addInitializer after decoration was finished"); s(t, "An initializer", "be", !0), c.push(t); }.bind(null, I) }; try { if (b) (y = s(D.call(E, P, O), "class decorators", "return")) && (P = y);else { var k, F; O.static = l, O.private = f, f ? 2 === o ? k = function (e) { return m(e), w.value; } : (o < 4 && (k = i(w, "get", m)), 3 !== o && (F = i(w, "set", m))) : (k = function (e) { return e[n]; }, (o < 2 || 4 === o) && (F = function (e, t) { e[n] = t; })); var N = O.access = { has: f ? h.bind() : function (e) { return n in e; } }; if (k && (N.get = k), F && (N.set = F), P = D.call(E, d ? { get: w.get, set: w.set } : w[A], O), d) { if ("object" == typeof P && P) (y = s(P.get, "accessor.get")) && (w.get = y), (y = s(P.set, "accessor.set")) && (w.set = y), (y = s(P.init, "accessor.init")) && S.push(y);else if (void 0 !== P) throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0"); } else s(P, (p ? "field" : "method") + " decorators", "return") && (p ? S.push(P) : w[A] = P); } } finally { I.v = !0; } } return (p || d) && u.push(function (e, t) { for (var r = S.length - 1; r >= 0; r--) t = S[r].call(e, t); return t; }), p || b || (f ? d ? u.push(i(w, "get"), i(w, "set")) : u.push(2 === o ? w[A] : i.call.bind(w[A])) : Object.defineProperty(e, n, w)), P; } function u(e, t) { return Object.defineProperty(e, Symbol.metadata || Symbol.for("Symbol.metadata"), { configurable: !0, enumerable: !0, value: t }); } if (arguments.length >= 6) var l = a[Symbol.metadata || Symbol.for("Symbol.metadata")]; var f = Object.create(null == l ? null : l), p = function (e, t, r, n) { var o, a, i = [], s = function (t) { return _checkInRHS(t) === e; }, u = new Map(); function l(e) { e && i.push(c.bind(null, e)); } for (var f = 0; f < t.length; f++) { var p = t[f]; if (Array.isArray(p)) { var d = p[1], h = p[2], m = p.length > 3, y = 16 & d, v = !!(8 & d), g = 0 == (d &= 7), b = h + "/" + v; if (!g && !m) { var w = u.get(b); if (!0 === w || 3 === w && 4 !== d || 4 === w && 3 !== d) throw Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: " + h); u.set(b, !(d > 2) || d); } applyDec(v ? e : e.prototype, p, y, m ? "#" + h : _toPropertyKey(h), d, n, v ? a = a || [] : o = o || [], i, v, m, g, 1 === d, v && m ? s : r); } } return l(o), l(a), i; }(e, t, o, f); return r.length || u(e, f), { e: p, get c() { var t = []; return r.length && [u(applyDec(e, [r], n, e.name, 5, f, t), f), c.bind(null, t, e)]; } }; }
44
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
45
- function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
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.annotationConfig = annotationConfig;
58
- this._addLogObserver();
59
- }
60
- async open() {
61
- const boardView = await this._connect();
62
- return boardView;
63
- }
64
- async close() {
65
- try {
66
- if (this._openAbortController) {
67
- this._openAbortController.abort();
68
- this._openAbortController = null;
69
- }
70
- const boardRoom = this.boardRoom;
71
- this.boardRoom = undefined;
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
- _FcrAnnotationControlImpl = FcrAnnotationControlImpl;
246
- [_initProto] = _applyDecs(_FcrAnnotationControlImpl, [[_imports2.trace, 2, "open"], [_imports2.trace, 2, "close"], [_imports2.trace, 2, "getConnectionState"], [_imports2.trace, 2, "getMainWindow"], [_imports2.trace, 2, "addPermission"], [_imports2.trace, 2, "removePermission"]], []).e;
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 '../../whiteboard-control/types';
2
- import { FcrJoinRoomOptions, FcrWhiteboardPermissionFlag } from '../../../imports';
3
- export declare const ANNOTATION_APP_ID = "Annotation";
4
- export interface FcrAnnotationControl extends FcrBaseWhiteboardControl {
5
- addPermission(permission: FcrWhiteboardPermissionFlag): void;
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 FcrPrivilegedAnnotationControl extends FcrAnnotationControl {
9
- syncScreenShareOwnerAnnotationOpenDone(): void;
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): FcrAnnotationControl;
44
- createForMainProcess(): FcrPrivilegedAnnotationControl;
35
+ createForSubProcess(rtmClient: RTMClient, hasOperationPrivilege: boolean, config: FcrAnnotationConfig): FcrStandaloneAnnotationControl;
36
+ createForMainProcess(rtmClient: RTMClient, hasOperationPrivilege: boolean, config: FcrAnnotationConfig, api: FcrCoreServiceApi): FcrAnnotationControl;
45
37
  }
@@ -2,6 +2,4 @@
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
- });
6
- exports.ANNOTATION_APP_ID = void 0;
7
- const ANNOTATION_APP_ID = exports.ANNOTATION_APP_ID = 'Annotation';
5
+ });
@@ -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
+ }