fcr-core 3.4.1 → 3.4.2

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 (35) hide show
  1. package/lib/chat-connection/index.js +1 -1
  2. package/lib/engine/index.d.ts +1 -0
  3. package/lib/engine/index.js +6 -3
  4. package/lib/imports.d.ts +1 -1
  5. package/lib/media-control/desktop.js +7 -1
  6. package/lib/media-control/mobile.js +1 -1
  7. package/lib/media-control/type.d.ts +10 -0
  8. package/lib/monitor-control/index.js +1 -34
  9. package/lib/peer-session/index.js +5 -1
  10. package/lib/plugins/chatroom.js +4 -1
  11. package/lib/room-control/chatroom-control/index.js +120 -58
  12. package/lib/room-control/group-control/index.js +1 -1
  13. package/lib/room-control/index.js +237 -192
  14. package/lib/room-control/interpreter-control/index.js +1 -1
  15. package/lib/room-control/interpreter-control/room.js +14 -0
  16. package/lib/room-control/mainroom-control/index.js +1 -1
  17. package/lib/room-control/privilege-control/helper.d.ts +4 -1
  18. package/lib/room-control/privilege-control/helper.js +70 -2
  19. package/lib/room-control/privilege-control/index.js +8 -34
  20. package/lib/room-control/stream-control/index.js +36 -37
  21. package/lib/room-control/type.d.ts +0 -4
  22. package/lib/room-control/type.js +1 -6
  23. package/lib/room-control/user-control/index.js +1 -1
  24. package/lib/room-control/waitingroom-control/index.js +1 -1
  25. package/lib/room-control/whiteboard-control/board-subwindow.d.ts +6 -0
  26. package/lib/room-control/whiteboard-control/board-subwindow.js +26 -0
  27. package/lib/room-control/whiteboard-control-v2/index.d.ts +1 -3
  28. package/lib/room-control/whiteboard-control-v2/index.js +6 -7
  29. package/lib/room-control/whiteboard-control-v2/main-window.d.ts +2 -2
  30. package/lib/room-control/whiteboard-control-v2/main-window.js +5 -4
  31. package/lib/service/api.d.ts +2 -0
  32. package/lib/service/api.js +4 -2
  33. package/lib/utilities/error.d.ts +1 -0
  34. package/lib/utilities/error.js +1 -0
  35. package/package.json +6 -6
@@ -154,4 +154,4 @@ class FcrChatConnectionImpl {
154
154
  }
155
155
  exports.FcrChatConnectionImpl = FcrChatConnectionImpl;
156
156
  _FcrChatConnectionImpl = FcrChatConnectionImpl;
157
- [_initProto] = _applyDecs(_FcrChatConnectionImpl, [[_logger.trace, 2, "login"], [_logger.trace, 2, "logout"], [_logger.trace, 2, "getConnectionState"], [_logger.trace, 2, "getConnectionInstance"], [_logger.trace, 2, "addObserver"], [_logger.trace, 2, "removeObserver"]], []).e;
157
+ [_initProto] = _applyDecs(_FcrChatConnectionImpl, [[_logger.trace, 2, "login"], [_logger.trace, 2, "logout"], [_logger.trace, 2, "getConnectionState"], [_logger.trace, 2, "getConnectionInstance"]], []).e;
@@ -83,4 +83,5 @@ export declare class FcrCoreEngine {
83
83
  */
84
84
  removeObserver(observer: FcrCoreEngineObserver): void;
85
85
  private _addRteEngineObserver;
86
+ private _addLogObserver;
86
87
  }
@@ -56,7 +56,6 @@ var _helper = require("agora-rte-sdk/lib/core/scene/helper");
56
56
  var _mobile = require("../media-control/mobile");
57
57
  var _chatroom = require("../plugins/chatroom");
58
58
  var _whiteboardControlV = require("../room-control/whiteboard-control-v2");
59
- var _privilegeControl = require("../room-control/privilege-control");
60
59
  var _logger = require("../utilities/logger");
61
60
  var _FcrCoreEngine;
62
61
  let _initProto;
@@ -100,6 +99,7 @@ class FcrCoreEngine {
100
99
  this._monitorControl = new _monitorControl.FcrMonitorControlImpl(this._rteEngine, this._config);
101
100
  this._desktopMediaControl = new _desktop.FcrDesktopMediaControlImpl(this._rteEngine.getMediaControl());
102
101
  this._mobileMediaControl = new _mobile.FcrMobileMediaControlImpl(this._rteEngine.getMediaControl());
102
+ this._addLogObserver();
103
103
  this._addRteEngineObserver();
104
104
  const coreIpList = (0, _parameters.getCoreIpList)(config.parameters);
105
105
  if (coreIpList) {
@@ -160,7 +160,7 @@ class FcrCoreEngine {
160
160
  const scene = this._rteEngine.createScene({
161
161
  sceneId: roomId
162
162
  });
163
- return new _mainroomControl.FcrMainRoomControlImpl(this._rteEngine, scene, this._apiService, this._config, _type2.FcrRoomType.Mainroom, this._chatConnection, new _chatroom.FcrChatRoomControlImpl(scene, this._chatConnection), new _whiteboardControlV.FcrWhiteboardControlImpl(scene, new _privilegeControl.FcrPrivilegeControlImpl(this._rteEngine, scene, this._apiService), this._apiService, this._rteEngine));
163
+ return new _mainroomControl.FcrMainRoomControlImpl(this._rteEngine, scene, this._apiService, this._config, _type2.FcrRoomType.Mainroom, this._chatConnection, new _chatroom.FcrChatRoomControlImpl(scene, this._chatConnection), new _whiteboardControlV.FcrWhiteboardControlImpl(scene, this._apiService, this._rteEngine));
164
164
  }
165
165
 
166
166
  /**
@@ -345,7 +345,10 @@ class FcrCoreEngine {
345
345
  }
346
346
  });
347
347
  }
348
+ _addLogObserver() {
349
+ this.addObserver((0, _logger.generateLogObserver)(this.logger, ['onConnectionStateUpdated', 'onPeerMessageReceived']));
350
+ }
348
351
  }
349
352
  exports.FcrCoreEngine = FcrCoreEngine;
350
353
  _FcrCoreEngine = FcrCoreEngine;
351
- [_initProto] = _applyDecs(_FcrCoreEngine, [[_logger.trace, 2, "release"], [_logger.trace, 2, "login"], [_logger.trace, 2, "logout"], [_logger.trace, 2, "getVersion"], [_logger.trace, 2, "createMainRoomControl"], [_logger.trace, 2, "createWaitingRoomControl"], [_logger.trace, 2, "createRoomControlAndJoin"], [_logger.trace, 2, "getDesktopMediaControl"], [_logger.trace, 2, "getMobileMediaControl"], [_logger.trace, 2, "getMonitorControl"], [_logger.trace, 2, "getPeerSessionControl"], [_logger.trace, 2, "sendPeerMessage"], [_logger.trace, 2, "setParameters"], [_logger.trace, 2, "addObserver"], [_logger.trace, 2, "removeObserver"]], []).e;
354
+ [_initProto] = _applyDecs(_FcrCoreEngine, [[_logger.trace, 2, "release"], [_logger.trace, 2, "login"], [_logger.trace, 2, "logout"], [_logger.trace, 2, "getVersion"], [_logger.trace, 2, "createMainRoomControl"], [_logger.trace, 2, "createWaitingRoomControl"], [_logger.trace, 2, "createRoomControlAndJoin"], [_logger.trace, 2, "getDesktopMediaControl"], [_logger.trace, 2, "getMobileMediaControl"], [_logger.trace, 2, "getMonitorControl"], [_logger.trace, 2, "getPeerSessionControl"], [_logger.trace, 2, "sendPeerMessage"], [_logger.trace, 2, "setParameters"]], []).e;
package/lib/imports.d.ts CHANGED
@@ -19,7 +19,7 @@ export { Duration } from 'agora-foundation/lib/schedule/scheduler';
19
19
  export { trace, bound } from 'agora-foundation/lib/decorator';
20
20
  export { AgoraScheduler, ActionWhenTaskFail } from 'agora-foundation/lib/schedule';
21
21
  export type { AgoraRtcNetworkStats, AgoraRtcDeviceInfo, AgoraRtcDisplayInfo, AgoraRtcWindowInfo, AgoraRtePerformanceInfo, AgoraRteScenePropertiesDeletedEvent, AgoraRteStreamEncryptionConfig, AgoraRteStreamJoinConfig, AgoraRteDualVideoStreamConfig, AgoraRteMessage, AgoraRteScenePropertiesUpdatedEvent, AgoraRteRenderView, AgoraRteScene, } from 'agora-rte-sdk';
22
- export type { AgoraRteVideoEncoderConfig } from 'agora-rte-sdk/lib/type';
22
+ export type { AgoraRteVideoEncoderConfig, AgoraRteEngineObserver } from 'agora-rte-sdk/lib/type';
23
23
  export type { AgoraRteNetworkQualityEvent } from 'agora-rte-sdk/lib/core/scene/type';
24
24
  export type { AgoraRteOperatCause } from 'agora-rte-sdk/lib/core/processor/type';
25
25
  export type { AgoraRestfulClient } from 'agora-rte-sdk/lib/core/services/client';
@@ -144,7 +144,13 @@ class FcrDesktopMediaControlImpl {
144
144
  checkLoopbackDevice() {
145
145
  return this._mediaControl.checkLoopbackDevice();
146
146
  }
147
+ followSystemSpeaker(follow) {
148
+ return this._mediaControl.followSystemSpeaker(follow);
149
+ }
150
+ followSystemMicrophone(follow) {
151
+ return this._mediaControl.followSystemMicrophone(follow);
152
+ }
147
153
  }
148
154
  exports.FcrDesktopMediaControlImpl = FcrDesktopMediaControlImpl;
149
155
  _FcrDesktopMediaControlImpl = FcrDesktopMediaControlImpl;
150
- [_initProto] = _applyDecs(_FcrDesktopMediaControlImpl, [[_logger.trace, 2, "getCameraList"], [_logger.trace, 2, "getMicrophoneList"], [_logger.trace, 2, "getSpeakerList"], [_logger.trace, 2, "getSystemSelectedMicrophone"], [_logger.trace, 2, "getSystemSelectedSpeaker"], [_logger.trace, 2, "getWindowList"], [_logger.trace, 2, "getDisplayList"], [_logger.trace, 2, "getCameraTrack"], [_logger.trace, 2, "getMicrophoneTrack"], [_logger.trace, 2, "getScreenTrack"], [_logger.trace, 2, "getLoopbackTrack"], [_logger.trace, 2, "setSelectedSpeaker"], [_logger.trace, 2, "startSelectedSpeakerTest"], [_logger.trace, 2, "stopSelectedSpeakerTest"], [_logger.trace, 2, "isCapabilitySupported"], [_logger.trace, 2, "setSelectedSpeakerVolume"], [_logger.trace, 2, "getSelectedSpeakerVolume"], [_logger.trace, 2, "addObserver"], [_logger.trace, 2, "removeObserver"]], []).e;
156
+ [_initProto] = _applyDecs(_FcrDesktopMediaControlImpl, [[_logger.trace, 2, "getCameraList"], [_logger.trace, 2, "getMicrophoneList"], [_logger.trace, 2, "getSpeakerList"], [_logger.trace, 2, "getSystemSelectedMicrophone"], [_logger.trace, 2, "getSystemSelectedSpeaker"], [_logger.trace, 2, "getWindowList"], [_logger.trace, 2, "getDisplayList"], [_logger.trace, 2, "getCameraTrack"], [_logger.trace, 2, "getMicrophoneTrack"], [_logger.trace, 2, "getScreenTrack"], [_logger.trace, 2, "getLoopbackTrack"], [_logger.trace, 2, "setSelectedSpeaker"], [_logger.trace, 2, "startSelectedSpeakerTest"], [_logger.trace, 2, "stopSelectedSpeakerTest"], [_logger.trace, 2, "isCapabilitySupported"], [_logger.trace, 2, "adjustOutputVolume"], [_logger.trace, 2, "setSelectedSpeakerVolume"], [_logger.trace, 2, "getSelectedSpeakerVolume"], [_logger.trace, 2, "checkLoopbackDevice"], [_logger.trace, 2, "followSystemSpeaker"], [_logger.trace, 2, "followSystemMicrophone"]], []).e;
@@ -194,4 +194,4 @@ class FcrMobileMediaControlImpl {
194
194
  }
195
195
  exports.FcrMobileMediaControlImpl = FcrMobileMediaControlImpl;
196
196
  _FcrMobileMediaControlImpl = FcrMobileMediaControlImpl;
197
- [_initProto] = _applyDecs(_FcrMobileMediaControlImpl, [[_logger.trace, 2, "getDeviceId"], [_logger.trace, 2, "getDeviceState"], [_logger.trace, 2, "startCameraTest"], [_logger.trace, 2, "stopCameraTest"], [_logger.trace, 2, "startCameraPreview"], [_logger.trace, 2, "stopCameraPreview"], [_logger.trace, 2, "stopCameraPreviewOnAllCanvas"], [_logger.trace, 2, "startScreenCapture"], [_logger.trace, 2, "updateScreenCapture"], [_logger.trace, 2, "stopScreenCapture"], [_logger.trace, 2, "getScreenCaptureState"], [_logger.trace, 2, "enableSpeaker"], [_logger.trace, 2, "getAudioOutputRouting"], [_logger.trace, 2, "getAudioEffectEnhancer"], [_logger.trace, 2, "getVideoEffectEnhancer"], [_logger.trace, 2, "openDevice"], [_logger.trace, 2, "closeDevice"], [_logger.trace, 2, "switchCamera"], [_logger.trace, 2, "getCameraPosition"], [_logger.trace, 2, "isCapabilitySupported"], [_logger.trace, 2, "adjustOutputVolume"], [_logger.trace, 2, "addObserver"], [_logger.trace, 2, "removeObserver"]], []).e;
197
+ [_initProto] = _applyDecs(_FcrMobileMediaControlImpl, [[_logger.trace, 2, "getDeviceId"], [_logger.trace, 2, "getDeviceState"], [_logger.trace, 2, "startCameraTest"], [_logger.trace, 2, "stopCameraTest"], [_logger.trace, 2, "startCameraPreview"], [_logger.trace, 2, "stopCameraPreview"], [_logger.trace, 2, "stopCameraPreviewOnAllCanvas"], [_logger.trace, 2, "startScreenCapture"], [_logger.trace, 2, "updateScreenCapture"], [_logger.trace, 2, "stopScreenCapture"], [_logger.trace, 2, "getScreenCaptureState"], [_logger.trace, 2, "enableSpeaker"], [_logger.trace, 2, "getAudioOutputRouting"], [_logger.trace, 2, "getAudioEffectEnhancer"], [_logger.trace, 2, "getVideoEffectEnhancer"], [_logger.trace, 2, "openDevice"], [_logger.trace, 2, "closeDevice"], [_logger.trace, 2, "switchCamera"], [_logger.trace, 2, "getCameraPosition"], [_logger.trace, 2, "isCapabilitySupported"], [_logger.trace, 2, "adjustOutputVolume"]], []).e;
@@ -588,6 +588,16 @@ export interface FcrDesktopMediaControl {
588
588
  * 2 if not installed/activated
589
589
  */
590
590
  checkLoopbackDevice(): Promise<number>;
591
+ /**
592
+ * Follow the system speaker.
593
+ * @param follow
594
+ */
595
+ followSystemSpeaker(follow: boolean): void;
596
+ /**
597
+ * Follow the system microphone.
598
+ * @param follow
599
+ */
600
+ followSystemMicrophone(follow: boolean): void;
591
601
  }
592
602
  export interface FcrMobileMediaControl {
593
603
  /**
@@ -1,45 +1,14 @@
1
1
  "use strict";
2
2
 
3
- require("core-js/modules/es.symbol.description.js");
4
- require("core-js/modules/es.error.cause.js");
5
- require("core-js/modules/es.array.push.js");
6
- require("core-js/modules/esnext.function.metadata.js");
7
- require("core-js/modules/esnext.map.delete-all.js");
8
- require("core-js/modules/esnext.map.emplace.js");
9
- require("core-js/modules/esnext.map.every.js");
10
- require("core-js/modules/esnext.map.filter.js");
11
- require("core-js/modules/esnext.map.find.js");
12
- require("core-js/modules/esnext.map.find-key.js");
13
- require("core-js/modules/esnext.map.includes.js");
14
- require("core-js/modules/esnext.map.key-of.js");
15
- require("core-js/modules/esnext.map.map-keys.js");
16
- require("core-js/modules/esnext.map.map-values.js");
17
- require("core-js/modules/esnext.map.merge.js");
18
- require("core-js/modules/esnext.map.reduce.js");
19
- require("core-js/modules/esnext.map.some.js");
20
- require("core-js/modules/esnext.map.update.js");
21
- require("core-js/modules/esnext.symbol.metadata.js");
22
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
23
3
  Object.defineProperty(exports, "__esModule", {
24
4
  value: true
25
5
  });
26
6
  exports.FcrMonitorControlImpl = void 0;
27
- require("core-js/modules/web.dom-collections.iterator.js");
28
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
29
- var _logger = require("../utilities/logger");
30
- var _FcrMonitorControlImpl;
31
- let _initProto;
32
- 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)]; } }; }
33
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
34
- 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); }
35
- 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; }
36
- 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; }
37
7
  /**
38
8
  * @internal
39
9
  */
40
10
  class FcrMonitorControlImpl {
41
11
  constructor(engine, _config) {
42
- (0, _defineProperty2.default)(this, "_monitor", void _initProto(this));
43
12
  this._config = _config;
44
13
  this._monitor = engine.getMonitor();
45
14
  }
@@ -50,6 +19,4 @@ class FcrMonitorControlImpl {
50
19
  this._monitor.addObserver(observer);
51
20
  }
52
21
  }
53
- exports.FcrMonitorControlImpl = FcrMonitorControlImpl;
54
- _FcrMonitorControlImpl = FcrMonitorControlImpl;
55
- [_initProto] = _applyDecs(_FcrMonitorControlImpl, [[_logger.trace, 2, "addObserver"], [_logger.trace, 2, "removeObserver"]], []).e;
22
+ exports.FcrMonitorControlImpl = FcrMonitorControlImpl;
@@ -62,6 +62,7 @@ class FcrPeerSessionControlImpl {
62
62
  this._rteEngine = _rteEngine;
63
63
  this._api = _api;
64
64
  this._userId = _userId;
65
+ this._addLogObserver();
65
66
  this._executeTask = this._executeTask.bind(this);
66
67
  this._rteEngine.addObserver({
67
68
  onPeerMessageReceived: this._handlePeerMessage.bind(this)
@@ -281,7 +282,10 @@ class FcrPeerSessionControlImpl {
281
282
  _isSessionExpired(session) {
282
283
  return session.timestamp + session.duration * _imports.Duration.second(1) < Date.now();
283
284
  }
285
+ _addLogObserver() {
286
+ this.addObserver((0, _logger.generateLogObserver)(this.logger, ['onPeerSessionAccepted', 'onPeerSessionReceived', 'onPeerSessionRejected']));
287
+ }
284
288
  }
285
289
  exports.FcrPeerSessionControlImpl = FcrPeerSessionControlImpl;
286
290
  _FcrPeerSessionControlImpl = FcrPeerSessionControlImpl;
287
- [_initProto] = _applyDecs(_FcrPeerSessionControlImpl, [[_logger.trace, 2, "startPeerSession"], [_logger.trace, 2, "stopPeerSession"], [_logger.trace, 2, "acceptPeerSession"], [_logger.trace, 2, "rejectPeerSession"], [_logger.trace, 2, "addObserver"], [_logger.trace, 2, "removeObserver"]], []).e;
291
+ [_initProto] = _applyDecs(_FcrPeerSessionControlImpl, [[_logger.trace, 2, "startPeerSession"], [_logger.trace, 2, "stopPeerSession"], [_logger.trace, 2, "acceptPeerSession"], [_logger.trace, 2, "rejectPeerSession"]], []).e;
@@ -189,6 +189,9 @@ class FcrChatRoomControlImpl {
189
189
  this._observable.removeObserver(observer);
190
190
  }
191
191
  async leave() {
192
+ if (!this._chatConnection.getConnectionInstance()) {
193
+ return;
194
+ }
192
195
  await new Promise(async (resolve, reject) => {
193
196
  this._removeEventListener();
194
197
  try {
@@ -361,4 +364,4 @@ class FcrChatRoomControlImpl {
361
364
  }
362
365
  exports.FcrChatRoomControlImpl = FcrChatRoomControlImpl;
363
366
  _FcrChatRoomControlImpl = FcrChatRoomControlImpl;
364
- [_initProto] = _applyDecs(_FcrChatRoomControlImpl, [[_logger.trace, 2, "join"], [_logger.trace, 2, "getConnectionState"], [_logger.trace, 2, "sendMessage"], [_logger.trace, 2, "addObserver"], [_logger.trace, 2, "removeObserver"], [_logger.trace, 2, "leave"]], []).e;
367
+ [_initProto] = _applyDecs(_FcrChatRoomControlImpl, [[_logger.trace, 2, "join"], [_logger.trace, 2, "getConnectionState"], [_logger.trace, 2, "sendMessage"], [_logger.trace, 2, "leave"]], []).e;
@@ -1,27 +1,52 @@
1
1
  "use strict";
2
2
 
3
+ require("core-js/modules/es.symbol.description.js");
3
4
  require("core-js/modules/es.array.push.js");
4
5
  require("core-js/modules/esnext.async-iterator.filter.js");
5
6
  require("core-js/modules/esnext.async-iterator.for-each.js");
7
+ require("core-js/modules/esnext.function.metadata.js");
6
8
  require("core-js/modules/esnext.iterator.constructor.js");
7
9
  require("core-js/modules/esnext.iterator.filter.js");
8
10
  require("core-js/modules/esnext.iterator.for-each.js");
11
+ require("core-js/modules/esnext.map.delete-all.js");
12
+ require("core-js/modules/esnext.map.emplace.js");
13
+ require("core-js/modules/esnext.map.every.js");
14
+ require("core-js/modules/esnext.map.filter.js");
15
+ require("core-js/modules/esnext.map.find.js");
16
+ require("core-js/modules/esnext.map.find-key.js");
17
+ require("core-js/modules/esnext.map.includes.js");
18
+ require("core-js/modules/esnext.map.key-of.js");
19
+ require("core-js/modules/esnext.map.map-keys.js");
20
+ require("core-js/modules/esnext.map.map-values.js");
21
+ require("core-js/modules/esnext.map.merge.js");
22
+ require("core-js/modules/esnext.map.reduce.js");
23
+ require("core-js/modules/esnext.map.some.js");
24
+ require("core-js/modules/esnext.map.update.js");
25
+ require("core-js/modules/esnext.symbol.metadata.js");
9
26
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
10
27
  Object.defineProperty(exports, "__esModule", {
11
28
  value: true
12
29
  });
13
30
  exports.FcrChatRoomControlImpl = void 0;
14
31
  require("core-js/modules/es.error.cause.js");
32
+ require("core-js/modules/web.dom-collections.iterator.js");
15
33
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
16
34
  var _observable = require("agora-foundation/lib/utilities/observable");
17
35
  var _easemobWebsdk = _interopRequireDefault(require("easemob-websdk"));
36
+ var _config = require("./config");
18
37
  var _user = require("../../utilities/user");
19
38
  var _error = require("../../utilities/error");
20
- var _logger = require("agora-foundation/lib/logger");
21
39
  var _type = require("./type");
22
- var _type2 = require("../../chat-connection/type");
40
+ var _logger = require("../../utilities/logger");
41
+ var _FcrChatRoomControlImpl;
42
+ let _initProto;
23
43
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
24
44
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
45
+ 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)]; } }; }
46
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
47
+ 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); }
48
+ 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; }
49
+ 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; }
25
50
  /**
26
51
  * @internal
27
52
  */
@@ -30,38 +55,29 @@ class FcrChatRoomControlImpl {
30
55
  this._connectionState = state;
31
56
  this._observable.notifyObservers('onConnectionStateUpdated', this._scene.sceneId, state);
32
57
  }
58
+ get initConfig() {
59
+ if (!this._initConfig) {
60
+ throw (0, _error.generateFcrCoreClientError)(_error.FcrErrorModuleCode.ROOM_CHATROOM, _error.FcrErrorCode.UNDEFINED_ERROR, 'chat room data not initialized, please get chat room token first', new Error('chat room data not initialized, please get chat room token first'));
61
+ }
62
+ return this._initConfig;
63
+ }
33
64
  get conn() {
34
- if (!this._chatConnection.getConnectionInstance()) {
65
+ if (!this._conn) {
35
66
  throw (0, _error.generateFcrCoreClientError)(_error.FcrErrorModuleCode.ROOM_CHATROOM, _error.FcrErrorCode.UNDEFINED_ERROR, 'chat room connection not initialized, please get chat room token first', new Error('chat room connection not initialized, please get chat room token first'));
36
67
  }
37
- return this._chatConnection.getConnectionInstance();
38
- }
39
- get chatRoomId() {
40
- return this._scene.getScenePropertiesByKeyPath('widgets.easemobIM.extra.chatRoomId');
68
+ return this._conn;
41
69
  }
42
- constructor(_engine, _scene, _api, _chatConnection, _chatIpList, _restIpList) {
43
- (0, _defineProperty2.default)(this, "logger", (0, _logger.getLogger)());
70
+ constructor(_engine, _scene, _api, _chatIpList, _restIpList) {
71
+ (0, _defineProperty2.default)(this, "logger", (_initProto(this), (0, _logger.createLogger)({
72
+ prefix: 'FcrChatRoomControlImpl'
73
+ })));
44
74
  (0, _defineProperty2.default)(this, "_observable", new _observable.AgoraObservable());
45
75
  (0, _defineProperty2.default)(this, "_connectionState", _type.FcrChatRoomConnectionState.Disconnected);
46
- (0, _defineProperty2.default)(this, "_chatConnectionObserver", {
47
- onConnectionStateUpdated: async state => {
48
- this._joinChatRoom(state);
49
- }
50
- });
51
- (0, _defineProperty2.default)(this, "_joinChatRoom", async state => {
52
- if (state === _type2.FcrChatConnectionState.DISCONNECTED && this.getConnectionState() === _type.FcrChatRoomConnectionState.Connected) {
53
- this._setConnectionState(_type.FcrChatRoomConnectionState.Connecting);
54
- await this.conn.joinChatRoom({
55
- roomId: this.chatRoomId
56
- });
57
- this._setConnectionState(_type.FcrChatRoomConnectionState.Connected);
58
- }
59
- });
60
76
  (0, _defineProperty2.default)(this, "_convertAgoraChatMessageToFcrChatRoomReceiveMessage", msg => {
61
77
  // TODO: 没看到有 contentsType 字段
62
78
  //@ts-ignore
63
- switch (msg.type) {
64
- case 'txt':
79
+ switch (msg.contentsType) {
80
+ case 'TEXT':
65
81
  {
66
82
  const message = {
67
83
  id: msg.id,
@@ -71,7 +87,7 @@ class FcrChatRoomControlImpl {
71
87
  //@ts-ignore
72
88
  timestamp: parseInt(msg.time),
73
89
  //@ts-ignore
74
- content: msg.msg,
90
+ content: msg.data,
75
91
  //@ts-ignore
76
92
  isPrivate: msg.ext.isPrivate
77
93
  };
@@ -104,7 +120,7 @@ class FcrChatRoomControlImpl {
104
120
  const isPrivate = !!((_message$to = message.to) !== null && _message$to !== void 0 && _message$to.length);
105
121
  const localUserInfo = this._scene.getUser(this._scene.getLocalUser().getLocalUserId());
106
122
  return _easemobWebsdk.default.message.create({
107
- to: this.chatRoomId,
123
+ to: this.initConfig.chatRoomId,
108
124
  msg: message.content,
109
125
  type: 'txt',
110
126
  chatType: 'chatRoom',
@@ -118,32 +134,60 @@ class FcrChatRoomControlImpl {
118
134
  }
119
135
  throw (0, _error.generateFcrCoreClientError)(_error.FcrErrorModuleCode.ROOM_CHATROOM, _error.FcrErrorCode.UNDEFINED_ERROR, 'unknown local message type', new Error('unknown local message type'));
120
136
  });
137
+ (0, _defineProperty2.default)(this, "_getPrivateConfig", () => {
138
+ var _this$_chatIpList, _this$_restIpList;
139
+ if ((_this$_chatIpList = this._chatIpList) !== null && _this$_chatIpList !== void 0 && _this$_chatIpList.length || (_this$_restIpList = this._restIpList) !== null && _this$_restIpList !== void 0 && _this$_restIpList.length) {
140
+ var _this$_chatIpList2, _this$_restIpList2;
141
+ const privateConfig = {
142
+ isHttpDNS: false
143
+ };
144
+ if ((_this$_chatIpList2 = this._chatIpList) !== null && _this$_chatIpList2 !== void 0 && _this$_chatIpList2.length) {
145
+ privateConfig.url = this._chatIpList[0];
146
+ }
147
+ if ((_this$_restIpList2 = this._restIpList) !== null && _this$_restIpList2 !== void 0 && _this$_restIpList2.length) {
148
+ privateConfig.apiUrl = this._restIpList[0];
149
+ }
150
+ return privateConfig;
151
+ }
152
+ });
121
153
  this._engine = _engine;
122
154
  this._scene = _scene;
123
155
  this._api = _api;
124
- this._chatConnection = _chatConnection;
125
156
  this._chatIpList = _chatIpList;
126
157
  this._restIpList = _restIpList;
127
- this._chatConnection.addObserver(this._chatConnectionObserver);
128
- this._join();
158
+ this._addLogObserver();
159
+ this._init();
160
+ }
161
+ async _init() {
162
+ const tokenResult = await this._api.getChatRoomToken(this._scene.sceneId, this._scene.localUser.getLocalUserId());
163
+ const privateConfig = this._getPrivateConfig();
164
+ if (privateConfig) {
165
+ this.logger.info('[ChatRoomControl] use private config:', privateConfig);
166
+ }
167
+ this._initConfig = tokenResult;
168
+ const connParams = _objectSpread(_objectSpread(_objectSpread({}, _config.agoraChatConfig), privateConfig), {}, {
169
+ appKey: tokenResult.appKey
170
+ });
171
+ this._conn = new _easemobWebsdk.default.connection(connParams);
129
172
  this._addEventListener();
173
+ this._join();
130
174
  }
131
175
  async _join() {
132
- await this._joinChatRoom(this._chatConnection.getConnectionState());
133
- }
134
- _removeEventListener() {
135
- this.conn.removeEventHandler("chatroom".concat(this._scene.sceneId));
176
+ this._setConnectionState(_type.FcrChatRoomConnectionState.Connecting);
177
+ await this.conn.open({
178
+ accessToken: this.initConfig.token,
179
+ user: this._scene.localUser.getLocalUserId()
180
+ });
136
181
  }
137
182
  _addEventListener() {
138
- this.conn.addEventHandler("chatroom".concat(this._scene.sceneId), {
139
- onTextMessage: msg => {
140
- if (msg.to !== this._scene.getScenePropertiesByKeyPath('widgets.easemobIM.extra.chatRoomId')) {
141
- return;
142
- }
143
- const message = this._convertAgoraChatMessageToFcrChatRoomReceiveMessage(msg);
144
- this._observable.notifyObservers('onTextMessageReceived', this._scene.sceneId, message);
183
+ this.conn.onTextMessage = msg => {
184
+ if (msg.to !== this.initConfig.chatRoomId) {
185
+ return;
145
186
  }
146
- });
187
+ const message = this._convertAgoraChatMessageToFcrChatRoomReceiveMessage(msg);
188
+ this._observable.notifyObservers('onTextMessageReceived', this._scene.sceneId, message);
189
+ };
190
+
147
191
  // TODO: 3.x
148
192
  // this.conn.onPictureMessage = (msg) => {
149
193
  // if (msg.to !== this.initConfig.chatRoomId) {
@@ -179,6 +223,21 @@ class FcrChatRoomControlImpl {
179
223
  // this._observable.notifyObservers('onAnnouncementDeleted', this._scene.sceneId);
180
224
  // }
181
225
  // };
226
+
227
+ this.conn.addEventHandler('connection', {
228
+ onError: e => {
229
+ // this._observable.notifyObservers('onErrorOccurred', this._initConfig.roomId);
230
+ },
231
+ onConnected: async () => {
232
+ await this.conn.joinChatRoom({
233
+ roomId: this.initConfig.chatRoomId
234
+ });
235
+ this._setConnectionState(_type.FcrChatRoomConnectionState.Connected);
236
+ },
237
+ onDisconnected: () => {
238
+ this._setConnectionState(_type.FcrChatRoomConnectionState.Disconnected);
239
+ }
240
+ });
182
241
  }
183
242
  getConnectionState() {
184
243
  return this._connectionState;
@@ -209,22 +268,23 @@ class FcrChatRoomControlImpl {
209
268
  this._observable.removeObserver(observer);
210
269
  }
211
270
  async leave() {
212
- await new Promise(async (resolve, reject) => {
213
- this._removeEventListener();
214
- try {
215
- await this.conn.leaveChatRoom({
216
- roomId: this.chatRoomId,
217
- success: () => {
218
- resolve(undefined);
219
- },
220
- error: e => {
221
- reject((0, _error.generateFcrCoreClientError)(_error.FcrErrorModuleCode.ROOM_CHATROOM, _error.FcrErrorCode.UNDEFINED_ERROR, 'leave chat room failed', e));
222
- }
223
- });
224
- } catch (e) {
225
- resolve(undefined);
226
- }
271
+ await new Promise((resolve, reject) => {
272
+ this.conn.leaveChatRoom({
273
+ roomId: this.initConfig.chatRoomId,
274
+ success: () => {
275
+ resolve(undefined);
276
+ },
277
+ error: e => {
278
+ reject((0, _error.generateFcrCoreClientError)(_error.FcrErrorModuleCode.ROOM_CHATROOM, _error.FcrErrorCode.UNDEFINED_ERROR, 'leave chat room failed', e));
279
+ }
280
+ });
227
281
  });
282
+ this.conn.close();
283
+ }
284
+ _addLogObserver() {
285
+ this.addObserver((0, _logger.generateLogObserver)(this.logger, ['onConnectionStateUpdated', 'onErrorOccurred'
286
+ // 'onTextMessageReceived'
287
+ ]));
228
288
  }
229
289
 
230
290
  // TODO: 3.x
@@ -320,4 +380,6 @@ class FcrChatRoomControlImpl {
320
380
  // });
321
381
  // }
322
382
  }
323
- exports.FcrChatRoomControlImpl = FcrChatRoomControlImpl;
383
+ exports.FcrChatRoomControlImpl = FcrChatRoomControlImpl;
384
+ _FcrChatRoomControlImpl = FcrChatRoomControlImpl;
385
+ [_initProto] = _applyDecs(_FcrChatRoomControlImpl, [[_logger.trace, 2, "getConnectionState"], [_logger.trace, 2, "sendMessage"], [_logger.trace, 2, "addObserver"], [_logger.trace, 2, "removeObserver"], [_logger.trace, 2, "leave"]], []).e;
@@ -246,4 +246,4 @@ class FcrGroupControl {
246
246
  }
247
247
  exports.FcrGroupControl = FcrGroupControl;
248
248
  _FcrGroupControl = FcrGroupControl;
249
- [_initProto] = _applyDecs(_FcrGroupControl, [[_logger.trace, 2, "getGroupList"], [_logger.trace, 2, "getGroupUserList"], [_logger.trace, 2, "addGroups"], [_logger.trace, 2, "updateGroups"], [_logger.trace, 2, "deleteGroups"], [_logger.trace, 2, "deleteAllGroups"], [_logger.trace, 2, "addUsers"], [_logger.trace, 2, "removeUsers"], [_logger.trace, 2, "moveUsers"], [_logger.trace, 2, "addObserver"], [_logger.trace, 2, "removeObserver"]], []).e;
249
+ [_initProto] = _applyDecs(_FcrGroupControl, [[_logger.trace, 2, "getGroupList"], [_logger.trace, 2, "getGroupUserList"], [_logger.trace, 2, "addGroups"], [_logger.trace, 2, "updateGroups"], [_logger.trace, 2, "deleteGroups"], [_logger.trace, 2, "deleteAllGroups"], [_logger.trace, 2, "addUsers"], [_logger.trace, 2, "removeUsers"], [_logger.trace, 2, "moveUsers"]], []).e;