fcr-core 3.6.4 → 3.7.0

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 (45) hide show
  1. package/lib/chat-connection/index.d.ts +0 -1
  2. package/lib/chat-connection/index.js +21 -11
  3. package/lib/engine/index.js +3 -2
  4. package/lib/imports.d.ts +8 -1
  5. package/lib/imports.js +40 -0
  6. package/lib/index.d.ts +2 -23
  7. package/lib/index.js +21 -23
  8. package/lib/media-control/desktop.js +17 -5
  9. package/lib/media-control/mobile.js +1 -2
  10. package/lib/media-control/type.d.ts +7 -3
  11. package/lib/plugins/chatroom.js +21 -3
  12. package/lib/room-control/index.js +8 -5
  13. package/lib/room-control/interpreter-control/types.d.ts +1 -0
  14. package/lib/room-control/mainroom-control/index.js +6 -5
  15. package/lib/room-control/shared-cache.d.ts +4 -0
  16. package/lib/room-control/shared-cache.js +10 -0
  17. package/lib/room-control/sharing-control/index.d.ts +9 -2
  18. package/lib/room-control/sharing-control/index.js +79 -17
  19. package/lib/room-control/sharing-control/type.d.ts +3 -2
  20. package/lib/room-control/stream-control/index.js +40 -20
  21. package/lib/room-control/stream-control/type.d.ts +6 -1
  22. package/lib/room-control/user-control/index.js +5 -1
  23. package/lib/room-control/whiteboard-control/board-window.d.ts +3 -0
  24. package/lib/room-control/whiteboard-control/board-window.js +6 -0
  25. package/lib/room-control/whiteboard-control/types.d.ts +11 -0
  26. package/lib/room-control/whiteboard-control-v2/annotation-control/index.d.ts +8 -2
  27. package/lib/room-control/whiteboard-control-v2/annotation-control/index.js +91 -13
  28. package/lib/room-control/whiteboard-control-v2/annotation-control/type.d.ts +1 -0
  29. package/lib/room-control/whiteboard-control-v2/index.d.ts +1 -1
  30. package/lib/room-control/whiteboard-control-v2/index.js +6 -6
  31. package/lib/room-control/whiteboard-control-v2/main-window.d.ts +5 -0
  32. package/lib/room-control/whiteboard-control-v2/main-window.js +19 -4
  33. package/lib/room-control/whiteboard-control-v2/whiteboard-control/type.d.ts +1 -1
  34. package/lib/room-router/index.js +3 -1
  35. package/lib/schema.d.ts +8 -1
  36. package/lib/schema.js +4 -2
  37. package/lib/service/api.d.ts +5 -1
  38. package/lib/service/api.js +12 -1
  39. package/lib/service/type.d.ts +1 -0
  40. package/lib/type.d.ts +93 -56
  41. package/lib/type.js +302 -20
  42. package/lib/utilities/error.js +2 -1
  43. package/lib/utilities/stream.d.ts +8 -8
  44. package/lib/utilities/user.js +3 -1
  45. package/package.json +6 -9
@@ -11,7 +11,6 @@ export declare class FcrChatConnectionImpl implements FcrChatConnection {
11
11
  private _initConfig?;
12
12
  private _conn?;
13
13
  private _connectionState;
14
- private _offlineListener;
15
14
  constructor(_userId: string, _api: FcrCoreServiceApi, _chatIpList?: string[] | undefined, _restIpList?: string[] | undefined);
16
15
  login(): Promise<void>;
17
16
  private _addEventListeners;
@@ -25,6 +25,7 @@ var _imports = require("../imports");
25
25
  var _type = require("./type");
26
26
  var _config = require("./config");
27
27
  var _logger = require("../utilities/logger");
28
+ var _packageInfo = require("../utilities/package-info");
28
29
  let _initProto;
29
30
  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)]; } }; }
30
31
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
@@ -38,16 +39,12 @@ class FcrChatConnectionImpl {
38
39
  })))();
39
40
  _observable = (() => new _imports.AgoraObservable())();
40
41
  _connectionState = (() => _type.FcrChatConnectionState.DISCONNECTED)();
41
- _offlineListener = () => {
42
- if (this._connectionState !== _type.FcrChatConnectionState.DISCONNECTED) {
43
- this._setConnectionState(_type.FcrChatConnectionState.DISCONNECTED);
44
- }
45
- };
46
42
  constructor(_userId, _api, _chatIpList, _restIpList) {
47
43
  this._userId = _userId;
48
44
  this._api = _api;
49
45
  this._chatIpList = _chatIpList;
50
46
  this._restIpList = _restIpList;
47
+ this.logger.info(`Chat Version: easemob-websdk@${(0, _packageInfo.getDependenciesInfo)('easemob-websdk')}`);
51
48
  }
52
49
  async login() {
53
50
  const privateConfig = this._getPrivateConfig();
@@ -61,17 +58,18 @@ class FcrChatConnectionImpl {
61
58
  ..._config.agoraChatConfig,
62
59
  ...privateConfig,
63
60
  appKey: tokenResult.appKey,
64
- autoReconnectNumMax: 99999
61
+ autoReconnectNumMax: 99999,
62
+ isFixedDeviceId: false
65
63
  };
66
64
  _imports.EasemobChatSDK.logger.setConsoleLogVisibility(false);
67
65
  this._conn = new _imports.EasemobChatSDK.connection(connParams);
66
+ this._addEventListeners();
68
67
  await this._conn.open({
69
68
  accessToken: this._initConfig.token,
70
69
  user: this._userId
71
70
  });
72
71
  this.logger.info(`onConnectionLoginSuccess, token: ${this._initConfig.token}, userId: ${this._userId}`);
73
72
  this._observable.notifyObservers('onConnectionLoginSuccess');
74
- this._addEventListeners();
75
73
  }, [], {
76
74
  retriesMax: 3
77
75
  }).fail(async _ref => {
@@ -89,25 +87,37 @@ class FcrChatConnectionImpl {
89
87
  }).exec());
90
88
  }
91
89
  _addEventListeners() {
92
- window.addEventListener('offline', this._offlineListener);
93
- this._conn?.addEventHandler('connection', {
90
+ this._conn?.addEventHandler('connectionListener', {
94
91
  onError: e => {
95
92
  this.logger.error('onError', e.message);
96
93
  },
97
94
  onConnected: () => {
98
95
  this.logger.info('onConnected');
99
- this._setConnectionState(_type.FcrChatConnectionState.CONNECTED);
96
+ if (this._connectionState !== _type.FcrChatConnectionState.CONNECTED) {
97
+ this._setConnectionState(_type.FcrChatConnectionState.CONNECTED);
98
+ }
100
99
  },
101
100
  onDisconnected: () => {
102
101
  if (this._connectionState !== _type.FcrChatConnectionState.DISCONNECTED) {
103
102
  this.logger.info('onDisconnected');
104
103
  this._setConnectionState(_type.FcrChatConnectionState.DISCONNECTED);
105
104
  }
105
+ },
106
+ onOnline: () => {
107
+ this.logger.info('onOnline');
108
+ if (this._connectionState !== _type.FcrChatConnectionState.CONNECTED) {
109
+ this._setConnectionState(_type.FcrChatConnectionState.CONNECTED);
110
+ }
111
+ },
112
+ onOffline: () => {
113
+ if (this._connectionState !== _type.FcrChatConnectionState.DISCONNECTED) {
114
+ this.logger.info('onOffline');
115
+ this._setConnectionState(_type.FcrChatConnectionState.DISCONNECTED);
116
+ }
106
117
  }
107
118
  });
108
119
  }
109
120
  logout() {
110
- window.removeEventListener('offline', this._offlineListener);
111
121
  this._conn?.close();
112
122
  }
113
123
  _setConnectionState(state) {
@@ -240,7 +240,8 @@ class FcrCoreEngine {
240
240
  videoSourceState: s.videoSourceState
241
241
  })),
242
242
  version: (0, _imports.getVersion)(),
243
- password: options.password
243
+ password: options.password,
244
+ avatar: options.avatar
244
245
  }), _error.FcrErrorModuleCode.ENGINE);
245
246
  const {
246
247
  data,
@@ -415,7 +416,7 @@ class FcrCoreEngine {
415
416
  return parametersList;
416
417
  }
417
418
  _getRtcPresetParameters() {
418
- let rtcPresetParameters = ['{\"che.video.videoCodecIndex\": 1}', '{\"rtc.video.new_complexity\": true}', '{\"rtc.video.default_complexity\": 1027}', '{\"rtc.video.enable_doc_screen_share_sr\":true}', '{\"rtc.video.enable_pvc\":false}', '{\"che.video.brightness_detection_enable\":false} ', '{\"che.audio.bitrate_level\":1}', '{\"rtc.video.downMaxRetryTimes\":5}'];
419
+ let rtcPresetParameters = ['{\"che.video.videoCodecIndex\": 1}', '{\"rtc.video.new_complexity\": true}', '{\"rtc.video.default_complexity\": 1027}', '{\"rtc.video.enable_doc_screen_share_sr\":true}', '{\"rtc.video.enable_pvc\":false}', '{\"che.video.brightness_detection_enable\":false} ', '{\"che.audio.bitrate_level\":1}', '{\"rtc.video.downMaxRetryTimes\":5}', '{\"che.video.vqc_min_width\": 1280}', '{\"che.video.vqc_min_height\": 720}', '{\"che.video.lowest_dev_score_4_seg\":0}'];
419
420
  if ((0, _imports.getPlatform)() == _imports.FcrApplicationPlatform.WINDOWS) {
420
421
  rtcPresetParameters.push('{\"engine.video.hw_decoder_provider\":\"qsv\"}', '{\"rtc.video.default_hw_decoder_thres\":921600}');
421
422
  }
package/lib/imports.d.ts CHANGED
@@ -11,6 +11,11 @@ export { EasemobChat } from 'easemob-websdk';
11
11
  export { WhiteWebSdk, createPlugins } from 'white-web-sdk';
12
12
  export * as netlessVideoPlugin from '@netless/video-js-plugin';
13
13
  export { WindowManager } from '@netless/window-manager';
14
+ export { RTMProvider_2_2 as FcrRTMProvider_2_2 } from '@netless/forge-rtm';
15
+ export { Room as FcrRoom } from '@netless/forge-room';
16
+ export { WhiteboardApplication as FcrWhiteboardApplication } from '@netless/forge-whiteboard';
17
+ export type { ApplicationInstanceType as FcrApplicationInstanceType } from '@netless/forge-room';
18
+ export type { Whiteboard as FcrWhiteboard, WhiteboardToolType as FcrWhiteboardToolType, } from '@netless/forge-whiteboard';
14
19
  export { getLogger, createLogger } from 'agora-foundation/lib/logger';
15
20
  export { serializeArgs } from 'agora-foundation/lib/decorator/log/log-serializer';
16
21
  export { AgoraObservable } from 'agora-foundation/lib/utilities/observable';
@@ -28,6 +33,7 @@ export type { AgoraRteEngineObserver } from 'agora-rte-sdk/lib/type';
28
33
  export type { AgoraRteNetworkQualityEvent } from 'agora-rte-sdk/lib/core/scene/type';
29
34
  export type { AgoraRteOperatCause } from 'agora-rte-sdk/lib/core/processor/type';
30
35
  export type { AgoraRestfulClient } from 'agora-rte-sdk/lib/core/services/client';
36
+ export { AgoraRteError } from 'agora-rte-sdk/lib/core/utilities/error';
31
37
  export type { AgoraRteUserUpdatedReason as FcrUserUpdatedReason, AgoraRteUserPageParams, AgoraRteUserPageResponse, AgoraRteUserPropertiesDeletedEvent, AgoraRteUserPropertiesUpdatedEvent, AgoraRteUserInfo, AgoraRteSceneObserver, AgoraRteSnapshotInfo, AgoraRteEntryRoomResponse, AgoraRteMediaStreamEvent, } from 'agora-rte-sdk/lib/core/scene/type';
32
38
  export type AgoraRteMediaStreamCreateConfig = FcrMediaStreamCreateConfigSchema;
33
39
  export type AgoraRteStreamBindConfig = FcrStreamBindConfigSchema;
@@ -37,11 +43,12 @@ export type { AgoraRteAudioRawDataConfig, AgoraRteBeautyOptions, AgoraRteCameraP
37
43
  export type { AgoraRteMediaStreamInfo } from 'agora-rte-sdk/lib/core/processor/struct';
38
44
  export type { AgoraRteMonitor } from 'agora-rte-sdk/lib/core/monitor';
39
45
  export type { AgoraRteMediaControl } from 'agora-rte-sdk/lib/core/media';
46
+ export type { AgoraRteUpdateStreamPrivilege } from 'agora-rte-sdk/lib/core/scene/type';
40
47
  export { AgoraRteConnectionState, AgoraRteEngine, convertStreamTypeToPublishState, AgoraRteLatencyLevel, } from 'agora-rte-sdk';
41
48
  export { AgoraRteRoomConnectorType, AgoraRteStreamPrivilegeOperation, AgoraRteStreamPrivilegeVideoSourceType, AgoraRteStreamPrivilegeAudioSourceType, AgoraRteMediaStreamType, } from 'agora-rte-sdk/lib/core/scene/type';
42
49
  export { AgoraRtcRegion, AgoraRtcVideoSourceType, AgoraRtcAudioSourceType, AgoraRtcMediaSourceState, AgoraRtcRenderMode, AgoraRtcVideoStreamType, AgoraRtcCapability, AgoraRtcAiDenoiseLevel, AgoraRtcAudioOutputRouting, AgoraRtcLatencyLevelType, AgoraRtcEncryptionMode, } from 'agora-rte-sdk/lib/core/rtc/type';
43
50
  export { AgoraRtmRegion } from 'agora-rte-sdk/lib/core/rtm/type';
44
- export { AgoraRteRegion, AgoraRteAudioSourceType, AgoraRteVideoSourceType, } from 'agora-rte-sdk/lib/type';
51
+ export { AgoraRteRegion, AgoraRteAudioSourceType, AgoraRteVideoSourceType, AgoraRteMediaPublishState, AgoraRteScreenScenarioType as FcrScreenScenarioType, } from 'agora-rte-sdk/lib/type';
45
52
  export { AgoraRestfulClientError } from 'agora-rte-sdk/lib/core/services/client';
46
53
  export { getSharedDomainHolder } from 'agora-rte-sdk/lib/core/services/domain-holder';
47
54
  export { AgoraRteScreenCaptureType, AgoraRteVideoOrientation, } from 'agora-rte-sdk/lib/core/media/type';
package/lib/imports.js CHANGED
@@ -108,12 +108,24 @@ Object.defineProperty(exports, "AgoraRteEngine", {
108
108
  return _agoraRteSdk.AgoraRteEngine;
109
109
  }
110
110
  });
111
+ Object.defineProperty(exports, "AgoraRteError", {
112
+ enumerable: true,
113
+ get: function () {
114
+ return _error.AgoraRteError;
115
+ }
116
+ });
111
117
  Object.defineProperty(exports, "AgoraRteLatencyLevel", {
112
118
  enumerable: true,
113
119
  get: function () {
114
120
  return _agoraRteSdk.AgoraRteLatencyLevel;
115
121
  }
116
122
  });
123
+ Object.defineProperty(exports, "AgoraRteMediaPublishState", {
124
+ enumerable: true,
125
+ get: function () {
126
+ return _type4.AgoraRteMediaPublishState;
127
+ }
128
+ });
117
129
  Object.defineProperty(exports, "AgoraRteMediaStreamType", {
118
130
  enumerable: true,
119
131
  get: function () {
@@ -216,6 +228,30 @@ Object.defineProperty(exports, "FcrCoreEngine", {
216
228
  return _engine.FcrCoreEngine;
217
229
  }
218
230
  });
231
+ Object.defineProperty(exports, "FcrRTMProvider_2_2", {
232
+ enumerable: true,
233
+ get: function () {
234
+ return _forgeRtm.RTMProvider_2_2;
235
+ }
236
+ });
237
+ Object.defineProperty(exports, "FcrRoom", {
238
+ enumerable: true,
239
+ get: function () {
240
+ return _forgeRoom.Room;
241
+ }
242
+ });
243
+ Object.defineProperty(exports, "FcrScreenScenarioType", {
244
+ enumerable: true,
245
+ get: function () {
246
+ return _type4.AgoraRteScreenScenarioType;
247
+ }
248
+ });
249
+ Object.defineProperty(exports, "FcrWhiteboardApplication", {
250
+ enumerable: true,
251
+ get: function () {
252
+ return _forgeWhiteboard.WhiteboardApplication;
253
+ }
254
+ });
219
255
  Object.defineProperty(exports, "Mutex", {
220
256
  enumerable: true,
221
257
  get: function () {
@@ -450,6 +486,9 @@ var _whiteWebSdk = require("white-web-sdk");
450
486
  var _netlessVideoPlugin = _interopRequireWildcard(require("@netless/video-js-plugin"));
451
487
  exports.netlessVideoPlugin = _netlessVideoPlugin;
452
488
  var _windowManager = require("@netless/window-manager");
489
+ var _forgeRtm = require("@netless/forge-rtm");
490
+ var _forgeRoom = require("@netless/forge-room");
491
+ var _forgeWhiteboard = require("@netless/forge-whiteboard");
453
492
  var _logger = require("agora-foundation/lib/logger");
454
493
  var _logSerializer = require("agora-foundation/lib/decorator/log/log-serializer");
455
494
  var _observable = require("agora-foundation/lib/utilities/observable");
@@ -462,6 +501,7 @@ var _misc = require("agora-foundation/lib/utilities/misc");
462
501
  var _schema = require("agora-foundation/lib/utilities/schema");
463
502
  var _validate = require("agora-foundation/lib/decorator/validate");
464
503
  var _mutex = require("agora-foundation/lib/worker/mutex");
504
+ var _error = require("agora-rte-sdk/lib/core/utilities/error");
465
505
  var _agoraRteSdk = require("agora-rte-sdk");
466
506
  var _type = require("agora-rte-sdk/lib/core/scene/type");
467
507
  var _type2 = require("agora-rte-sdk/lib/core/rtc/type");
package/lib/index.d.ts CHANGED
@@ -1,23 +1,2 @@
1
- export { FcrUserRole, FcrStreamState } from './type';
2
- export { FcrPermissionAction, FcrPrivilegeUserRole } from './room-control/privilege-control/type';
3
- export type { FcrError } from './utilities/error';
4
- export type { FcrCoreEngineConfig, FcrDualVideoStreamConfig } from './type';
5
- export type { FcrDesktopMediaControl, FcrDesktopMediaObserver, FcrMobileMediaControl, FcrMobileMediaObserver, } from './media-control/type';
6
- export type { FcrMonitorControl, FcrMonitorObserver } from './monitor-control/type';
7
- export type { FcrBaseRoomControl, FcrRoomObserver } from './room-control/type';
8
- export type { FcrUserControl, FcrUserObserver } from './room-control/user-control/type';
9
- export type { FcrStreamControl, FcrStreamObserver } from './room-control/stream-control/type';
10
- export type { FcrPrivilegeControl, FcrPermission } from './room-control/privilege-control/type';
11
- export { AgoraRteLatencyLevel as FcrStreamLatencyLevel } from './imports';
12
- export { AgoraRteRegion as FcrRegion } from './imports';
13
- export { AgoraRteMediaStreamType as FcrStreamType } from './imports';
14
- export { AgoraRteUserUpdatedReason as FcrUserUpdatedReason } from './imports';
15
- export { AgoraRteRoomConnectorType as FcrRoomConnectorType } from './imports';
16
- export { AgoraRtcVideoSourceType as FcrVideoSourceType, AgoraRtcAudioSourceType as FcrAudioSourceType, AgoraRtcMediaSourceState as FcrMediaSourceState, } from './imports';
17
- export { AgoraRtcRenderMode as FcrVideoRenderMode } from './imports';
18
- export { AgoraRtcVideoStreamType as FcrVideoStreamType } from './imports';
19
- export { AgoraRtcCapability as FcrCapability } from './imports';
20
- export { AgoraRtcAiDenoiseLevel as FcrAiDenoiseLevel } from './imports';
21
- export { AgoraRteStreamPrivilegeOperation as FcrStreamPrivilegeOperation, AgoraRteStreamPrivilegeVideoSourceType as FcrStreamPrivilegeVideoSourceType, AgoraRteStreamPrivilegeAudioSourceType as FcrStreamPrivilegeAudioSourceType, } from './imports';
22
- export { AgoraRteConnectionState as FcrConnectionState } from './imports';
23
- export { FcrCoreEngine, registerPlugin } from './imports';
1
+ export type { FcrCoreEngineConfig, FcrDualVideoStreamConfig, FcrDesktopMediaControl, FcrDesktopMediaObserver, FcrMobileMediaControl, FcrMobileMediaObserver, FcrMonitorControl, FcrMonitorObserver, FcrBaseRoomControl, FcrRoomObserver, FcrUserControl, FcrUserObserver, FcrStreamControl, FcrStreamObserver, FcrPrivilegeControl, FcrPermission, FcrError, } from './type';
2
+ export { FcrStreamLatencyLevel, FcrPermissionAction, FcrPrivilegeUserRole, FcrUserRole, FcrStreamState, FcrRegion, FcrStreamType, FcrUserUpdatedReason, FcrRoomConnectorType, FcrVideoSourceType, FcrAudioSourceType, FcrMediaSourceState, FcrVideoRenderMode, FcrVideoStreamType, FcrCapability, FcrAiDenoiseLevel, FcrStreamPrivilegeOperation, FcrStreamPrivilegeVideoSourceType, FcrStreamPrivilegeAudioSourceType, FcrConnectionState, FcrCoreEngine, registerPlugin, } from './type';
package/lib/index.js CHANGED
@@ -6,85 +6,85 @@ Object.defineProperty(exports, "__esModule", {
6
6
  Object.defineProperty(exports, "FcrAiDenoiseLevel", {
7
7
  enumerable: true,
8
8
  get: function () {
9
- return _imports.AgoraRtcAiDenoiseLevel;
9
+ return _type.FcrAiDenoiseLevel;
10
10
  }
11
11
  });
12
12
  Object.defineProperty(exports, "FcrAudioSourceType", {
13
13
  enumerable: true,
14
14
  get: function () {
15
- return _imports.AgoraRtcAudioSourceType;
15
+ return _type.FcrAudioSourceType;
16
16
  }
17
17
  });
18
18
  Object.defineProperty(exports, "FcrCapability", {
19
19
  enumerable: true,
20
20
  get: function () {
21
- return _imports.AgoraRtcCapability;
21
+ return _type.FcrCapability;
22
22
  }
23
23
  });
24
24
  Object.defineProperty(exports, "FcrConnectionState", {
25
25
  enumerable: true,
26
26
  get: function () {
27
- return _imports.AgoraRteConnectionState;
27
+ return _type.FcrConnectionState;
28
28
  }
29
29
  });
30
30
  Object.defineProperty(exports, "FcrCoreEngine", {
31
31
  enumerable: true,
32
32
  get: function () {
33
- return _imports.FcrCoreEngine;
33
+ return _type.FcrCoreEngine;
34
34
  }
35
35
  });
36
36
  Object.defineProperty(exports, "FcrMediaSourceState", {
37
37
  enumerable: true,
38
38
  get: function () {
39
- return _imports.AgoraRtcMediaSourceState;
39
+ return _type.FcrMediaSourceState;
40
40
  }
41
41
  });
42
42
  Object.defineProperty(exports, "FcrPermissionAction", {
43
43
  enumerable: true,
44
44
  get: function () {
45
- return _type2.FcrPermissionAction;
45
+ return _type.FcrPermissionAction;
46
46
  }
47
47
  });
48
48
  Object.defineProperty(exports, "FcrPrivilegeUserRole", {
49
49
  enumerable: true,
50
50
  get: function () {
51
- return _type2.FcrPrivilegeUserRole;
51
+ return _type.FcrPrivilegeUserRole;
52
52
  }
53
53
  });
54
54
  Object.defineProperty(exports, "FcrRegion", {
55
55
  enumerable: true,
56
56
  get: function () {
57
- return _imports.AgoraRteRegion;
57
+ return _type.FcrRegion;
58
58
  }
59
59
  });
60
60
  Object.defineProperty(exports, "FcrRoomConnectorType", {
61
61
  enumerable: true,
62
62
  get: function () {
63
- return _imports.AgoraRteRoomConnectorType;
63
+ return _type.FcrRoomConnectorType;
64
64
  }
65
65
  });
66
66
  Object.defineProperty(exports, "FcrStreamLatencyLevel", {
67
67
  enumerable: true,
68
68
  get: function () {
69
- return _imports.AgoraRteLatencyLevel;
69
+ return _type.FcrStreamLatencyLevel;
70
70
  }
71
71
  });
72
72
  Object.defineProperty(exports, "FcrStreamPrivilegeAudioSourceType", {
73
73
  enumerable: true,
74
74
  get: function () {
75
- return _imports.AgoraRteStreamPrivilegeAudioSourceType;
75
+ return _type.FcrStreamPrivilegeAudioSourceType;
76
76
  }
77
77
  });
78
78
  Object.defineProperty(exports, "FcrStreamPrivilegeOperation", {
79
79
  enumerable: true,
80
80
  get: function () {
81
- return _imports.AgoraRteStreamPrivilegeOperation;
81
+ return _type.FcrStreamPrivilegeOperation;
82
82
  }
83
83
  });
84
84
  Object.defineProperty(exports, "FcrStreamPrivilegeVideoSourceType", {
85
85
  enumerable: true,
86
86
  get: function () {
87
- return _imports.AgoraRteStreamPrivilegeVideoSourceType;
87
+ return _type.FcrStreamPrivilegeVideoSourceType;
88
88
  }
89
89
  });
90
90
  Object.defineProperty(exports, "FcrStreamState", {
@@ -96,7 +96,7 @@ Object.defineProperty(exports, "FcrStreamState", {
96
96
  Object.defineProperty(exports, "FcrStreamType", {
97
97
  enumerable: true,
98
98
  get: function () {
99
- return _imports.AgoraRteMediaStreamType;
99
+ return _type.FcrStreamType;
100
100
  }
101
101
  });
102
102
  Object.defineProperty(exports, "FcrUserRole", {
@@ -108,33 +108,31 @@ Object.defineProperty(exports, "FcrUserRole", {
108
108
  Object.defineProperty(exports, "FcrUserUpdatedReason", {
109
109
  enumerable: true,
110
110
  get: function () {
111
- return _imports.AgoraRteUserUpdatedReason;
111
+ return _type.FcrUserUpdatedReason;
112
112
  }
113
113
  });
114
114
  Object.defineProperty(exports, "FcrVideoRenderMode", {
115
115
  enumerable: true,
116
116
  get: function () {
117
- return _imports.AgoraRtcRenderMode;
117
+ return _type.FcrVideoRenderMode;
118
118
  }
119
119
  });
120
120
  Object.defineProperty(exports, "FcrVideoSourceType", {
121
121
  enumerable: true,
122
122
  get: function () {
123
- return _imports.AgoraRtcVideoSourceType;
123
+ return _type.FcrVideoSourceType;
124
124
  }
125
125
  });
126
126
  Object.defineProperty(exports, "FcrVideoStreamType", {
127
127
  enumerable: true,
128
128
  get: function () {
129
- return _imports.AgoraRtcVideoStreamType;
129
+ return _type.FcrVideoStreamType;
130
130
  }
131
131
  });
132
132
  Object.defineProperty(exports, "registerPlugin", {
133
133
  enumerable: true,
134
134
  get: function () {
135
- return _imports.registerPlugin;
135
+ return _type.registerPlugin;
136
136
  }
137
137
  });
138
- var _type = require("./type");
139
- var _type2 = require("./room-control/privilege-control/type");
140
- var _imports = require("./imports");
138
+ var _type = require("./type");
@@ -38,7 +38,7 @@ function _checkInRHS(e) { if (Object(e) !== e) throw TypeError("right-hand side
38
38
  * @internal
39
39
  */
40
40
  class FcrDesktopMediaControlImpl {
41
- static #_ = (() => [_initProto] = _applyDecs(this, [[_imports.trace, 2, "getCameraList"], [_imports.trace, 2, "getMicrophoneList"], [_imports.trace, 2, "getSpeakerList"], [_imports.trace, 2, "getSystemSelectedMicrophone"], [_imports.trace, 2, "getSystemSelectedSpeaker"], [_imports.trace, 2, "getWindowList"], [_imports.trace, 2, "getDisplayList"], [_getCameraTrackDecs, 2, "getCameraTrack"], [_getMicrophoneTrackDecs, 2, "getMicrophoneTrack"], [_getScreenTrackDecs, 2, "getScreenTrack"], [_getLoopbackTrackDecs, 2, "getLoopbackTrack"], [_setSelectedSpeakerDecs, 2, "setSelectedSpeaker"], [_startSelectedSpeakerTestDecs, 2, "startSelectedSpeakerTest"], [_imports.trace, 2, "stopSelectedSpeakerTest"], [_isCapabilitySupportedDecs, 2, "isCapabilitySupported"], [_adjustOutputVolumeDecs, 2, "adjustOutputVolume"], [_setSelectedSpeakerVolumeDecs, 2, "setSelectedSpeakerVolume"], [_imports.trace, 2, "getSelectedSpeakerVolume"], [_imports.trace, 2, "checkLoopbackDevice"], [_imports.trace, 2, "followSystemSpeaker"], [_imports.trace, 2, "followSystemMicrophone"]], []).e)();
41
+ static #_ = (() => [_initProto] = _applyDecs(this, [[_imports.trace, 2, "getCameraList"], [_imports.trace, 2, "getMicrophoneList"], [_imports.trace, 2, "getSpeakerList"], [_imports.trace, 2, "getSystemSelectedMicrophone"], [_imports.trace, 2, "getSystemSelectedSpeaker"], [_imports.trace, 2, "getWindowList"], [_imports.trace, 2, "getDisplayList"], [_getCameraTrackDecs, 2, "getCameraTrack"], [_getMicrophoneTrackDecs, 2, "getMicrophoneTrack"], [_getScreenTrackDecs, 2, "getScreenTrack"], [_getLoopbackTrackDecs, 2, "getLoopbackTrack"], [_setSelectedSpeakerDecs, 2, "setSelectedSpeaker"], [_startSelectedSpeakerTestDecs, 2, "startSelectedSpeakerTest"], [_imports.trace, 2, "stopSelectedSpeakerTest"], [_isCapabilitySupportedDecs, 2, "isCapabilitySupported"], [_adjustOutputVolumeDecs, 2, "adjustOutputVolume"], [_setSelectedSpeakerVolumeDecs, 2, "setSelectedSpeakerVolume"], [_imports.trace, 2, "getSelectedSpeakerVolume"], [_imports.trace, 2, "checkLoopbackDevice"], [_imports.trace, 2, "observeSystemSelectedSpeakerChanged"], [_imports.trace, 2, "observeSystemSelectedMicrophoneChanged"], [_imports.trace, 2, "disableAGC"], [_imports.trace, 2, "enableAGC"]], []).e)();
42
42
  [(_getCameraTrackDecs = [_imports.trace, (0, _validateParams.default)(_schema.stringSchema)], _getMicrophoneTrackDecs = [_imports.trace, (0, _validateParams.default)(_schema.stringSchema)], _getScreenTrackDecs = [_imports.trace, (0, _validateParams.default)(_schema.stringSchema)], _getLoopbackTrackDecs = [_imports.trace, (0, _validateParams.default)(_schema.stringSchema)], _setSelectedSpeakerDecs = [_imports.trace, (0, _validateParams.default)(_schema.stringSchema)], _startSelectedSpeakerTestDecs = [_imports.trace, (0, _validateParams.default)(_schema.stringSchema, _schema.numberSchema)], _isCapabilitySupportedDecs = [_imports.trace, (0, _validateParams.default)(_schema.fcrCapabilitySchema)], _adjustOutputVolumeDecs = [_imports.trace, (0, _validateParams.default)(_schema.numberSchema)], _setSelectedSpeakerVolumeDecs = [_imports.trace, (0, _validateParams.default)(_schema.numberSchema)], "logger")] = (() => (_initProto(this), (0, _logger.createLogger)({
43
43
  prefix: 'FcrDesktopMediaControlImpl'
44
44
  })))();
@@ -78,6 +78,12 @@ class FcrDesktopMediaControlImpl {
78
78
  },
79
79
  onSelectedSpeakerVolumeUpdated: (volume, muted) => {
80
80
  this._observable.notifyObservers('onSelectedSpeakerVolumeUpdated', volume, muted);
81
+ },
82
+ onSystemSelectedSpeakerChanged: speaker => {
83
+ this._observable.notifyObservers('onSystemSelectedSpeakerChanged', speaker);
84
+ },
85
+ onSystemSelectedMicrophoneChanged: microphone => {
86
+ this._observable.notifyObservers('onSystemSelectedMicrophoneChanged', microphone);
81
87
  }
82
88
  });
83
89
  }
@@ -144,11 +150,17 @@ class FcrDesktopMediaControlImpl {
144
150
  checkLoopbackDevice() {
145
151
  return this._mediaControl.checkLoopbackDevice();
146
152
  }
147
- followSystemSpeaker(follow) {
148
- return this._mediaControl.followSystemSpeaker(follow);
153
+ observeSystemSelectedSpeakerChanged(follow) {
154
+ return this._mediaControl.observeSystemSelectedSpeakerChanged(follow);
155
+ }
156
+ observeSystemSelectedMicrophoneChanged(follow) {
157
+ return this._mediaControl.observeSystemSelectedMicrophoneChanged(follow);
158
+ }
159
+ disableAGC() {
160
+ return this._mediaControl.disableAGC();
149
161
  }
150
- followSystemMicrophone(follow) {
151
- return this._mediaControl.followSystemMicrophone(follow);
162
+ enableAGC() {
163
+ return this._mediaControl.enableAGC();
152
164
  }
153
165
  }
154
166
  exports.FcrDesktopMediaControlImpl = FcrDesktopMediaControlImpl;
@@ -24,7 +24,6 @@ Object.defineProperty(exports, "__esModule", {
24
24
  exports.FcrMobileMediaControlImpl = void 0;
25
25
  var _imports = require("../imports");
26
26
  var _type = require("../type");
27
- var _ = require("..");
28
27
  var _schema = require("../schema");
29
28
  var _validateParams = _interopRequireDefault(require("../utilities/validate-params"));
30
29
  var _logger = require("../utilities/logger");
@@ -102,7 +101,7 @@ class FcrMobileMediaControlImpl {
102
101
  case _type.FcrDeviceType.Microphone:
103
102
  return this._mediaControl.getMicrophoneAudioTrack(this._microphoneDeviceName).getState();
104
103
  default:
105
- return _.FcrMediaSourceState.CLOSE;
104
+ return _type.FcrMediaSourceState.CLOSE;
106
105
  }
107
106
  }
108
107
  startCameraTest() {
@@ -1,6 +1,6 @@
1
1
  import { AgoraRteAudioRawDataConfig, AgoraRteBeautyOptions, AgoraRteCameraPosition, AgoraRteScreenCaptureParams, AgoraRteScreenCaptureType, AgoraRteVirtualBackgroundOptions, AgoraRteVideoOrientation, AgoraRteCameraCaptureParams, AgoraRtcAudioOutputRouting } from '../imports';
2
2
  import { FcrDeviceInfo, FcrDisplayInfo, FcrRenderView, FcrWindowInfo } from '../type';
3
- import { FcrMediaSourceState, FcrAiDenoiseLevel, FcrVideoSourceType, FcrAudioSourceType, FcrCapability } from '..';
3
+ import { FcrMediaSourceState, FcrAiDenoiseLevel, FcrVideoSourceType, FcrAudioSourceType, FcrCapability } from '../type';
4
4
  import { FcrRenderConfigSchema } from '../schema';
5
5
  export type FcrAudioOutputRouting = AgoraRtcAudioOutputRouting;
6
6
  export type FcrDesktopMediaObserver = {
@@ -49,6 +49,8 @@ export type FcrDesktopMediaObserver = {
49
49
  * @param muted
50
50
  */
51
51
  onSelectedSpeakerVolumeUpdated?(volume: number, muted: boolean): void;
52
+ onSystemSelectedSpeakerChanged?(speaker: FcrDeviceInfo): void;
53
+ onSystemSelectedMicrophoneChanged?(microphone: FcrDeviceInfo): void;
52
54
  };
53
55
  export type FcrMobileMediaObserver = {
54
56
  /**
@@ -590,12 +592,14 @@ export interface FcrDesktopMediaControl {
590
592
  * Follow the system speaker.
591
593
  * @param follow
592
594
  */
593
- followSystemSpeaker(follow: boolean): void;
595
+ observeSystemSelectedSpeakerChanged(enable: boolean): void;
594
596
  /**
595
597
  * Follow the system microphone.
596
598
  * @param follow
597
599
  */
598
- followSystemMicrophone(follow: boolean): void;
600
+ observeSystemSelectedMicrophoneChanged(enable: boolean): void;
601
+ disableAGC(): number;
602
+ enableAGC(): number;
599
603
  }
600
604
  export interface FcrMobileMediaControl {
601
605
  /**
@@ -119,9 +119,27 @@ class FcrChatRoomControlImpl {
119
119
  if (state === _type2.FcrChatConnectionState.CONNECTED && this.getConnectionState() === _type.FcrChatRoomConnectionState.Disconnected && this.chatRoomId) {
120
120
  this._setConnectionState(_type.FcrChatRoomConnectionState.Connecting);
121
121
  this.logger.info(`start join chat room, room id: ${this.chatRoomId}, scene id: ${this._scene.sceneId}`);
122
- await this.conn.joinChatRoom({
123
- roomId: this.chatRoomId
124
- });
122
+ let error = null;
123
+ [error] = await (0, _imports.to)((0, _imports.retryAttempt)(async () => {
124
+ await this.conn.joinChatRoom({
125
+ roomId: this.chatRoomId
126
+ });
127
+ }, [], {
128
+ retriesMax: 4
129
+ }).fail(async _ref => {
130
+ let {
131
+ error,
132
+ timeFn,
133
+ currentRetry
134
+ } = _ref;
135
+ this.logger.error(`retry to join chat room, ${error.message}, retry ${currentRetry} times`);
136
+ await timeFn();
137
+ return true;
138
+ }).exec());
139
+ if (error) {
140
+ this._setConnectionState(_type.FcrChatRoomConnectionState.Disconnected);
141
+ throw error;
142
+ }
125
143
  this._setConnectionState(_type.FcrChatRoomConnectionState.Connected);
126
144
  }
127
145
  };
@@ -35,7 +35,6 @@ var _collection = require("../utilities/collection");
35
35
  var _ = require("..");
36
36
  var _logger = require("../utilities/logger");
37
37
  var _abilityControl = require("./ability-control");
38
- var _error2 = require("agora-rte-sdk/lib/core/utilities/error");
39
38
  var _sharingControl = require("./sharing-control");
40
39
  let _initProto;
41
40
  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)]; } }; }
@@ -86,7 +85,7 @@ class FcrBaseRoomControlImpl {
86
85
  this._roomConnectorControl = new _roomConnectorControl.FcrRoomConnectorControlImpl(this._scene, this._engine, this._api);
87
86
  this._abilityControl = new _abilityControl.FcrAbilityControlImpl(this._scene);
88
87
  if (this._whiteboardControl && this._streamControl) {
89
- this.sharingControl = new _sharingControl.FcrSharingControlImpl(this._scene, this._api, this._engine, this._privilegeControl, this._whiteboardControl, this._streamControl, this._sharedCache);
88
+ this.sharingControl = new _sharingControl.FcrSharingControlImpl(this._scene, this._api, this._engine, this._privilegeControl, this._whiteboardControl, this._streamControl, this._sharedCache, this._userControl);
90
89
  }
91
90
  this._observable.notifyObservers('onJoinRoomSuccess', sceneId);
92
91
  },
@@ -363,10 +362,14 @@ class FcrBaseRoomControlImpl {
363
362
  currentRetry
364
363
  } = _ref;
365
364
  handleJoinAborted();
366
- if ((error instanceof _error2.AgoraRteError || error instanceof _error.FcrError) && _error.RTE_ERROR_CODES_NOT_RETRYABLE_WHEN_JOINING_ROOM.includes(error.code)) {
367
- throw error;
365
+ if (error instanceof _error.FcrError || error instanceof _imports.AgoraRteError) {
366
+ this.logger.error(`join room failed, message: ${error.message}, code: ${error.code}`);
367
+ if (_error.RTE_ERROR_CODES_NOT_RETRYABLE_WHEN_JOINING_ROOM.includes(error.code)) {
368
+ this.logger.error(`cancel retry to join room, message: ${error.message}, code: ${error.code}`);
369
+ throw error;
370
+ }
368
371
  }
369
- this.logger.error(`retry to join room, ${error.message}, retry ${currentRetry} times`);
372
+ this.logger.warn(`retry to join room, error message: ${error.message}, retry ${currentRetry} times`);
370
373
  await timeFn();
371
374
  return true;
372
375
  }).exec());
@@ -29,6 +29,7 @@ export type FcrInterpreterUserInfo = {
29
29
  userName: string;
30
30
  sourceLanguage: FcrLanguage;
31
31
  targetLanguage: FcrLanguage;
32
+ avatar?: string;
32
33
  };
33
34
  export type FcrInterpreterRoomInfo = {
34
35
  roomId: string;
@@ -25,9 +25,8 @@ exports.FcrMainRoomControlImpl = void 0;
25
25
  var _imports = require("../../imports");
26
26
  var _ = require("..");
27
27
  var _groupControl = require("../group-control");
28
- var _2 = require("../..");
29
- var _type = require("../type");
30
- var _type2 = require("../../type");
28
+ var _type = require("../../type");
29
+ var _type2 = require("../type");
31
30
  var _error = require("../../utilities/error");
32
31
  var _interpreterControl = require("../interpreter-control");
33
32
  var _schema = require("../../schema");
@@ -56,7 +55,7 @@ class FcrMainRoomControlImpl extends _.FcrBaseRoomControlImpl {
56
55
  return this._observable;
57
56
  }
58
57
  constructor(engine, scene, api, config, sharedCache, chatConnection, chatRoomControl, whitBoardControl) {
59
- super(engine, scene, api, config, _type.FcrRoomType.Mainroom, chatConnection, sharedCache, chatRoomControl, whitBoardControl);
58
+ super(engine, scene, api, config, _type2.FcrRoomType.Mainroom, chatConnection, sharedCache, chatRoomControl, whitBoardControl);
60
59
  this._groupControl = new _groupControl.FcrGroupControl(engine, scene, api, sharedCache);
61
60
  this._interpreterControl = new _interpreterControl.FcrInterpreterControlImpl(api, scene, config, engine, chatConnection, sharedCache);
62
61
  this._addLogObserver();
@@ -123,13 +122,15 @@ class FcrMainRoomControlImpl extends _.FcrBaseRoomControlImpl {
123
122
  }
124
123
  }
125
124
  async moveToWaitingRoomByUserRoles() {
126
- return this._api.moveToWaitingRoomByUserRoles([_type2.FcrUserRoleToStringMap[_2.FcrUserRole.PARTICIPANT]], this._scene.sceneId);
125
+ return this._api.moveToWaitingRoomByUserRoles([_type.FcrUserRoleToStringMap[_type.FcrUserRole.PARTICIPANT]], this._scene.sceneId);
127
126
  }
128
127
  async _initAnnotationInfo() {
129
128
  const roomId = this._scene.sceneId;
130
129
  const userId = this._scene.localUser.getLocalUserId();
131
130
  const boardOptions = (await this._getToken(roomId, userId)).data;
131
+ // @ts-ignore
132
132
  if (localStorage) {
133
+ // @ts-ignore
133
134
  localStorage.setItem('board_options', JSON.stringify(boardOptions));
134
135
  }
135
136
  }