fcr-core 3.10.0 → 3.10.1-rc.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.
- package/lib/engine/index.js +5 -3
- package/lib/imports.d.ts +1 -1
- package/lib/imports.js +6 -0
- package/lib/index.d.ts +4 -0
- package/lib/index.js +15 -1
- package/lib/room-control/index.js +6 -1
- package/lib/room-control/room-control-factory.js +5 -1
- package/lib/room-control/type.d.ts +11 -6
- package/lib/room-control/type.js +6 -6
- package/lib/room-control/user-control/index.js +2 -2
- package/lib/room-control/widget-control/index.d.ts +1 -0
- package/lib/room-control/widget-control/index.js +115 -0
- package/lib/room-control/widget-control/type.d.ts +33 -0
- package/lib/room-control/widget-control/type.js +5 -0
- package/lib/room-router/index.js +7 -1
- package/lib/service/api.d.ts +5 -0
- package/lib/service/api.js +16 -2
- package/lib/type.d.ts +1 -1
- package/lib/utilities/convertRoomType.d.ts +2 -0
- package/lib/utilities/convertRoomType.js +26 -0
- package/lib/utilities/error-helpers.d.ts +2 -1
- package/lib/utilities/error-helpers.js +1 -0
- package/lib-es/engine/index.js +5 -3
- package/lib-es/imports.js +1 -1
- package/lib-es/index.js +3 -1
- package/lib-es/room-control/index.js +6 -1
- package/lib-es/room-control/room-control-factory.js +5 -1
- package/lib-es/room-control/type.js +6 -6
- package/lib-es/room-control/user-control/index.js +2 -2
- package/lib-es/room-control/widget-control/index.js +109 -0
- package/lib-es/room-control/widget-control/type.js +1 -0
- package/lib-es/room-router/index.js +7 -1
- package/lib-es/service/api.js +16 -2
- package/lib-es/utilities/convertRoomType.js +19 -0
- package/lib-es/utilities/error-helpers.js +1 -0
- package/package.json +7 -7
package/lib/engine/index.js
CHANGED
|
@@ -60,6 +60,7 @@ var _parameters = require("../utilities/parameters");
|
|
|
60
60
|
var _validateParams = _interopRequireDefault(require("../utilities/validate-params"));
|
|
61
61
|
var _infinityRoomControl = require("../room-control/infinity-room-control");
|
|
62
62
|
var _remoteControl = require("../remote-control");
|
|
63
|
+
var _convertRoomType = require("../utilities/convertRoomType");
|
|
63
64
|
let _initProto, _renewUserTokenDecs, _createMainRoomControlDecs, _createInfinityRoomControlDecs, _createWaitingRoomControlDecs, _createRoomRouterDecs, _createRoomControlAndJoinDecs, _sendPeerMessageDecs, _setParametersDecs;
|
|
64
65
|
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)]; } }; }
|
|
65
66
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
@@ -295,7 +296,8 @@ class FcrCoreEngineImpl {
|
|
|
295
296
|
data,
|
|
296
297
|
ts
|
|
297
298
|
} = res;
|
|
298
|
-
|
|
299
|
+
const fcrRoomType = (0, _convertRoomType.convertServerRoomTypeToFcrRoomType)(data.room.roomProperties.roomType);
|
|
300
|
+
switch (fcrRoomType) {
|
|
299
301
|
case _type3.FcrRoomType.Waitingroom:
|
|
300
302
|
roomControl = this.createWaitingRoomControl(data.room.roomInfo.roomUuid);
|
|
301
303
|
break;
|
|
@@ -306,13 +308,13 @@ class FcrCoreEngineImpl {
|
|
|
306
308
|
roomControl = this.createMainRoomControl(roomId);
|
|
307
309
|
break;
|
|
308
310
|
default:
|
|
309
|
-
throw new Error(`Unknown room type: ${
|
|
311
|
+
throw new Error(`Unknown room type: ${fcrRoomType}`);
|
|
310
312
|
}
|
|
311
313
|
await roomControl.join({
|
|
312
314
|
...options,
|
|
313
315
|
snapshot: data,
|
|
314
316
|
timestamp: ts,
|
|
315
|
-
createStreamConfigs:
|
|
317
|
+
createStreamConfigs: fcrRoomType === _type3.FcrRoomType.Waitingroom ? [] : options.createStreamConfigs
|
|
316
318
|
});
|
|
317
319
|
}, [], {
|
|
318
320
|
retriesMax: 10
|
package/lib/imports.d.ts
CHANGED
|
@@ -41,7 +41,7 @@ export type { AgoraRteAudioRawDataConfig, AgoraRteBeautyOptions, AgoraRteCameraP
|
|
|
41
41
|
export type { AgoraRteMonitor } from 'agora-rte-sdk/lib/core/monitor';
|
|
42
42
|
export type { AgoraRteMediaControl } from 'agora-rte-sdk/lib/core/media/type';
|
|
43
43
|
export type { AgoraRteUpdateStreamPrivilege, AgoraRteMediaStreamInfo, } from 'agora-rte-sdk/lib/core/scene/type';
|
|
44
|
-
export { AgoraRteConnectionState, AgoraRteEngine, convertStreamTypeToPublishState, AgoraRteLatencyLevel, } from 'agora-rte-sdk';
|
|
44
|
+
export { AgoraRteConnectionState, AgoraRteEngine, convertStreamTypeToPublishState, AgoraRteLatencyLevel, AgoraRteVideoOutputOrientationMode, } from 'agora-rte-sdk';
|
|
45
45
|
export { AgoraRteRoomConnectorType, AgoraRteStreamPrivilegeOperation, AgoraRteStreamPrivilegeVideoSourceType, AgoraRteStreamPrivilegeAudioSourceType, AgoraRteMediaStreamType, } from 'agora-rte-sdk/lib/core/scene/type';
|
|
46
46
|
export { AgoraRtcRegion, AgoraRtcVideoSourceType, AgoraRtcAudioSourceType, AgoraRtcMediaSourceState, AgoraRtcRenderMode, AgoraRtcVideoStreamType, AgoraRtcCapability, AgoraRtcAiDenoiseLevel, AgoraRtcAudioOutputRouting, AgoraRtcLatencyLevelType, AgoraRtcEncryptionMode, AgoraRtcDegradationPreference, } from 'agora-rte-sdk/lib/core/rtc/type';
|
|
47
47
|
export { AgoraRteStreamLayer } from 'agora-rte-sdk/lib/type';
|
package/lib/imports.js
CHANGED
|
@@ -204,6 +204,12 @@ Object.defineProperty(exports, "AgoraRteVideoOrientation", {
|
|
|
204
204
|
return _type5.AgoraRteVideoOrientation;
|
|
205
205
|
}
|
|
206
206
|
});
|
|
207
|
+
Object.defineProperty(exports, "AgoraRteVideoOutputOrientationMode", {
|
|
208
|
+
enumerable: true,
|
|
209
|
+
get: function () {
|
|
210
|
+
return _agoraRteSdk.AgoraRteVideoOutputOrientationMode;
|
|
211
|
+
}
|
|
212
|
+
});
|
|
207
213
|
Object.defineProperty(exports, "AgoraRteVideoSourceType", {
|
|
208
214
|
enumerable: true,
|
|
209
215
|
get: function () {
|
package/lib/index.d.ts
CHANGED
|
@@ -3,3 +3,7 @@ export { FcrStreamLatencyLevel, FcrPermissionAction, FcrPrivilegeUserRole, FcrUs
|
|
|
3
3
|
export { FcrCoreEngineImpl as FcrCoreEngine } from './engine';
|
|
4
4
|
export { FcrCoreEngineConfig } from './struct';
|
|
5
5
|
export { FcrError } from './type';
|
|
6
|
+
export type { AgoraRtcDimensions } from './schema';
|
|
7
|
+
export type { AgoraRteCameraPosition as FcrCameraPosition } from './imports';
|
|
8
|
+
export { FcrDegradationPreference } from './schema';
|
|
9
|
+
export { AgoraRteVideoOutputOrientationMode as FcrVideoOutputOrientationMode } from './imports';
|
package/lib/index.js
CHANGED
|
@@ -51,6 +51,12 @@ Object.defineProperty(exports, "FcrCoreEngineConfig", {
|
|
|
51
51
|
return _struct.FcrCoreEngineConfig;
|
|
52
52
|
}
|
|
53
53
|
});
|
|
54
|
+
Object.defineProperty(exports, "FcrDegradationPreference", {
|
|
55
|
+
enumerable: true,
|
|
56
|
+
get: function () {
|
|
57
|
+
return _schema.FcrDegradationPreference;
|
|
58
|
+
}
|
|
59
|
+
});
|
|
54
60
|
Object.defineProperty(exports, "FcrDualVideoStreamConfig", {
|
|
55
61
|
enumerable: true,
|
|
56
62
|
get: function () {
|
|
@@ -147,6 +153,12 @@ Object.defineProperty(exports, "FcrVideoEncoderConfig", {
|
|
|
147
153
|
return _type.FcrVideoEncoderConfig;
|
|
148
154
|
}
|
|
149
155
|
});
|
|
156
|
+
Object.defineProperty(exports, "FcrVideoOutputOrientationMode", {
|
|
157
|
+
enumerable: true,
|
|
158
|
+
get: function () {
|
|
159
|
+
return _imports.AgoraRteVideoOutputOrientationMode;
|
|
160
|
+
}
|
|
161
|
+
});
|
|
150
162
|
Object.defineProperty(exports, "FcrVideoRenderMode", {
|
|
151
163
|
enumerable: true,
|
|
152
164
|
get: function () {
|
|
@@ -173,4 +185,6 @@ Object.defineProperty(exports, "registerPlugin", {
|
|
|
173
185
|
});
|
|
174
186
|
var _type = require("./type");
|
|
175
187
|
var _engine = require("./engine");
|
|
176
|
-
var _struct = require("./struct");
|
|
188
|
+
var _struct = require("./struct");
|
|
189
|
+
var _schema = require("./schema");
|
|
190
|
+
var _imports = require("./imports");
|
|
@@ -43,6 +43,7 @@ var _2 = require("..");
|
|
|
43
43
|
var _errorHelpers = require("../utilities/error-helpers");
|
|
44
44
|
var _helpers = require("./helpers");
|
|
45
45
|
var _sttControl = require("./stt-control");
|
|
46
|
+
var _widgetControl = require("./widget-control");
|
|
46
47
|
var _applicationControl = require("./application-control");
|
|
47
48
|
let _initProto, _joinDecs, _updateRoomPropertiesDecs, _updateIncrementRoomPropertiesDecs, _deleteRoomPropertiesDecs, _startCloudRecordingDecs, _startLiveStreamingDecs, _updateLiveStreamingLayoutDecs, _sendRoomMessageDecs; // Core SDK imports
|
|
48
49
|
// Service and API imports
|
|
@@ -117,6 +118,7 @@ class FcrBaseRoomControlImpl {
|
|
|
117
118
|
this.sharingControl = new _sharingControl.FcrSharingControlImpl(this._scene, this._api, this._engine, this._config, this._privilegeControl, this._streamControl, this._sharedCache, this._userControl);
|
|
118
119
|
}
|
|
119
120
|
this._sttControl = new _sttControl.FcrSttControlImpl(this._scene, this._api, this._sharedCache);
|
|
121
|
+
this._widgetControl = new _widgetControl.FcrWidgetControlImpl(this._scene, this._api, this._sharedCache);
|
|
120
122
|
this._observable.notifyObservers('onJoinRoomSuccess', sceneId);
|
|
121
123
|
},
|
|
122
124
|
// onJoinSceneFailure: (sceneId, error) => {
|
|
@@ -238,6 +240,10 @@ class FcrBaseRoomControlImpl {
|
|
|
238
240
|
(0, _helpers.validateControllerInitialized)(this._sttControl, _errorHelpers.ControllerType.STT);
|
|
239
241
|
return this._sttControl;
|
|
240
242
|
}
|
|
243
|
+
getWidgetControl() {
|
|
244
|
+
(0, _helpers.validateControllerInitialized)(this._widgetControl, _errorHelpers.ControllerType.WIDGET);
|
|
245
|
+
return this._widgetControl;
|
|
246
|
+
}
|
|
241
247
|
getApplicationControl() {
|
|
242
248
|
(0, _helpers.validateControllerInitialized)(this._applicationControl, _errorHelpers.ControllerType.APPLICATION);
|
|
243
249
|
return this._applicationControl;
|
|
@@ -362,7 +368,6 @@ class FcrBaseRoomControlImpl {
|
|
|
362
368
|
(0, _helpers.validateRoomJoined)(this._joinRoomSuccess, 'get schedule info');
|
|
363
369
|
const schedule = this._scene.getScenePropertiesByKeyPath('schedule');
|
|
364
370
|
return {
|
|
365
|
-
...schedule,
|
|
366
371
|
duration: schedule.duration ?? 0,
|
|
367
372
|
startTime: Math.floor((schedule.startTime ?? 0) / 1000)
|
|
368
373
|
};
|
|
@@ -7,6 +7,7 @@ exports.RoomControlFactory = void 0;
|
|
|
7
7
|
require("core-js/modules/esnext.iterator.constructor.js");
|
|
8
8
|
require("core-js/modules/esnext.iterator.map.js");
|
|
9
9
|
var _imports = require("../imports");
|
|
10
|
+
var _convertRoomType = require("../utilities/convertRoomType");
|
|
10
11
|
var _error = require("../utilities/error");
|
|
11
12
|
var _infinityRoomControl = require("./infinity-room-control");
|
|
12
13
|
var _room = require("./interpreter-control/room");
|
|
@@ -53,7 +54,10 @@ class RoomControlFactory {
|
|
|
53
54
|
roomResponse,
|
|
54
55
|
monitorControl
|
|
55
56
|
} = params;
|
|
56
|
-
const roomType = roomResponse.room.roomProperties.roomType;
|
|
57
|
+
const roomType = (0, _convertRoomType.convertServerRoomTypeToFcrRoomType)(roomResponse.room.roomProperties.roomType);
|
|
58
|
+
if (roomType === null) {
|
|
59
|
+
throw (0, _error.generateFcrCoreClientError)(_imports.ErrorModuleCode.FCR_ROOM, _imports.DetailErrorCode.UNDEFINED_ERROR, `Unsupported room types: ${roomResponse.room.roomProperties.roomType}`);
|
|
60
|
+
}
|
|
57
61
|
const RoomControlImpl = ROOM_CONTROL_IMPLEMENTATIONS[roomType];
|
|
58
62
|
if (!RoomControlImpl) {
|
|
59
63
|
throw (0, _error.generateFcrCoreClientError)(_imports.ErrorModuleCode.FCR_ROOM, _imports.DetailErrorCode.UNDEFINED_ERROR, `Unsupported room types: ${roomType}`);
|
|
@@ -13,6 +13,7 @@ import { FcrSharingControl } from './sharing-control/type';
|
|
|
13
13
|
import { FcrSttControl } from './stt-control/type';
|
|
14
14
|
import { FcrRoomAnnouncement } from './infinity-room-control/type';
|
|
15
15
|
import { FcrApplicationControl } from './application-control/type';
|
|
16
|
+
import { FcrWidgetControl } from './widget-control/type';
|
|
16
17
|
export interface FcrBaseRoomControl {
|
|
17
18
|
/**
|
|
18
19
|
* Gets the caption control.
|
|
@@ -26,6 +27,10 @@ export interface FcrBaseRoomControl {
|
|
|
26
27
|
* Gets the stream control.
|
|
27
28
|
*/
|
|
28
29
|
getStreamControl(): FcrStreamControl;
|
|
30
|
+
/**
|
|
31
|
+
* Gets the widget control.
|
|
32
|
+
*/
|
|
33
|
+
getWidgetControl(): FcrWidgetControl;
|
|
29
34
|
/**
|
|
30
35
|
* Gets the room session control.
|
|
31
36
|
*/
|
|
@@ -304,12 +309,12 @@ export type FcrJoinBeforeHostWaitingRoomObserver = FcrRoomObserver & {};
|
|
|
304
309
|
export type FcrMainRoomObserver = FcrRoomObserver & {};
|
|
305
310
|
export type FcrLocalUserWaitingRoomMovedEvent = FcrRoomPropertiesUpdatedEvent;
|
|
306
311
|
export declare enum FcrRoomType {
|
|
307
|
-
Mainroom =
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
Interpreterroom =
|
|
311
|
-
JoinBeforeHostWaitingRoom =
|
|
312
|
-
Infinityroom =
|
|
312
|
+
Mainroom = 0,
|
|
313
|
+
Subroom = 1,
|
|
314
|
+
Waitingroom = 2,
|
|
315
|
+
Interpreterroom = 3,
|
|
316
|
+
JoinBeforeHostWaitingRoom = 4,
|
|
317
|
+
Infinityroom = 5
|
|
313
318
|
}
|
|
314
319
|
export declare enum FcrLiveStreamingStateUpdatedReason {
|
|
315
320
|
USERSTOPPED = 1,
|
package/lib/room-control/type.js
CHANGED
|
@@ -5,12 +5,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.FcrWidgetUuid = exports.FcrWidgetCauseCmd = exports.FcrRoomType = exports.FcrLiveStreamingStateUpdatedReason = exports.FcrLineType = void 0;
|
|
7
7
|
let FcrRoomType = exports.FcrRoomType = /*#__PURE__*/function (FcrRoomType) {
|
|
8
|
-
FcrRoomType[FcrRoomType["Mainroom"] =
|
|
9
|
-
FcrRoomType[FcrRoomType["
|
|
10
|
-
FcrRoomType[FcrRoomType["
|
|
11
|
-
FcrRoomType[FcrRoomType["Interpreterroom"] =
|
|
12
|
-
FcrRoomType[FcrRoomType["JoinBeforeHostWaitingRoom"] =
|
|
13
|
-
FcrRoomType[FcrRoomType["Infinityroom"] =
|
|
8
|
+
FcrRoomType[FcrRoomType["Mainroom"] = 0] = "Mainroom";
|
|
9
|
+
FcrRoomType[FcrRoomType["Subroom"] = 1] = "Subroom";
|
|
10
|
+
FcrRoomType[FcrRoomType["Waitingroom"] = 2] = "Waitingroom";
|
|
11
|
+
FcrRoomType[FcrRoomType["Interpreterroom"] = 3] = "Interpreterroom";
|
|
12
|
+
FcrRoomType[FcrRoomType["JoinBeforeHostWaitingRoom"] = 4] = "JoinBeforeHostWaitingRoom";
|
|
13
|
+
FcrRoomType[FcrRoomType["Infinityroom"] = 5] = "Infinityroom";
|
|
14
14
|
return FcrRoomType;
|
|
15
15
|
}({});
|
|
16
16
|
let FcrLiveStreamingStateUpdatedReason = exports.FcrLiveStreamingStateUpdatedReason = /*#__PURE__*/function (FcrLiveStreamingStateUpdatedReason) {
|
|
@@ -71,8 +71,8 @@ class FcrUserControlImpl {
|
|
|
71
71
|
});
|
|
72
72
|
const fcrUserEvents = events.map(e => {
|
|
73
73
|
return {
|
|
74
|
-
userInfo: e.userInfo && (0, _user.convertRteUserToFcrUser)(e.userInfo, this._roomCache)
|
|
75
|
-
operatorUser: e.operatorUser &&
|
|
74
|
+
userInfo: e.userInfo && (0, _user.convertRteUserToFcrUser)(e.userInfo, this._roomCache)
|
|
75
|
+
// operatorUser: e.operatorUser && convertRteUserToFcrUser(e.operatorUser, this._roomCache),
|
|
76
76
|
};
|
|
77
77
|
});
|
|
78
78
|
fcrUserEvents.forEach(event => {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
require("core-js/modules/es.array.push.js");
|
|
4
|
+
require("core-js/modules/esnext.function.metadata.js");
|
|
5
|
+
require("core-js/modules/esnext.map.delete-all.js");
|
|
6
|
+
require("core-js/modules/esnext.map.emplace.js");
|
|
7
|
+
require("core-js/modules/esnext.map.every.js");
|
|
8
|
+
require("core-js/modules/esnext.map.filter.js");
|
|
9
|
+
require("core-js/modules/esnext.map.find.js");
|
|
10
|
+
require("core-js/modules/esnext.map.find-key.js");
|
|
11
|
+
require("core-js/modules/esnext.map.includes.js");
|
|
12
|
+
require("core-js/modules/esnext.map.key-of.js");
|
|
13
|
+
require("core-js/modules/esnext.map.map-keys.js");
|
|
14
|
+
require("core-js/modules/esnext.map.map-values.js");
|
|
15
|
+
require("core-js/modules/esnext.map.merge.js");
|
|
16
|
+
require("core-js/modules/esnext.map.reduce.js");
|
|
17
|
+
require("core-js/modules/esnext.map.some.js");
|
|
18
|
+
require("core-js/modules/esnext.map.update.js");
|
|
19
|
+
require("core-js/modules/esnext.symbol.metadata.js");
|
|
20
|
+
Object.defineProperty(exports, "__esModule", {
|
|
21
|
+
value: true
|
|
22
|
+
});
|
|
23
|
+
exports.FcrWidgetControlImpl = void 0;
|
|
24
|
+
var _imports = require("../../imports");
|
|
25
|
+
var _type = require("../../type");
|
|
26
|
+
var _error = require("../../utilities/error");
|
|
27
|
+
var _logger = require("../../utilities/logger");
|
|
28
|
+
let _initProto, _getActivityDecs, _activeDecs, _inactiveDecs;
|
|
29
|
+
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
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
31
|
+
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); }
|
|
32
|
+
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; }
|
|
33
|
+
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; }
|
|
34
|
+
/** scene 属性更新中表示 widget 状态变更的 cause.cmd(与服务端约定一致) */
|
|
35
|
+
const WIDGET_SCENE_PROPERTIES_CMD = 13;
|
|
36
|
+
var WidgetState = /*#__PURE__*/function (WidgetState) {
|
|
37
|
+
WidgetState[WidgetState["INACTIVE"] = 0] = "INACTIVE";
|
|
38
|
+
WidgetState[WidgetState["ACTIVE"] = 1] = "ACTIVE";
|
|
39
|
+
return WidgetState;
|
|
40
|
+
}(WidgetState || {});
|
|
41
|
+
/**
|
|
42
|
+
* @internal
|
|
43
|
+
*/
|
|
44
|
+
class FcrWidgetControlImpl {
|
|
45
|
+
static {
|
|
46
|
+
[_initProto] = _applyDecs(this, [[_getActivityDecs, 2, "getActivity"], [_activeDecs, 2, "active"], [_inactiveDecs, 2, "inactive"], [_imports.trace, 2, "release"]], []).e;
|
|
47
|
+
}
|
|
48
|
+
//@internal
|
|
49
|
+
[(_getActivityDecs = (0, _imports.trace)(['widgetId']), _activeDecs = (0, _imports.trace)(['widgetId']), _inactiveDecs = (0, _imports.trace)(['widgetId']), "logger")] = (_initProto(this), (0, _logger.createLogger)({
|
|
50
|
+
prefix: 'FcrWidgetControlImpl'
|
|
51
|
+
}));
|
|
52
|
+
|
|
53
|
+
//@internal
|
|
54
|
+
_observable = new _imports.AgoraObservable();
|
|
55
|
+
|
|
56
|
+
//@internal
|
|
57
|
+
_sceneObserver = {
|
|
58
|
+
onScenePropertiesUpdated: (sceneId, event) => {
|
|
59
|
+
if (event.cause?.cmd !== WIDGET_SCENE_PROPERTIES_CMD) {
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
const changedWidgets = event.changedProperties?.flexWidgets;
|
|
63
|
+
if (!changedWidgets || typeof changedWidgets !== 'object') {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
for (const widgetId of Object.keys(changedWidgets)) {
|
|
67
|
+
const state = changedWidgets[widgetId]?.state;
|
|
68
|
+
if (state === WidgetState.ACTIVE) {
|
|
69
|
+
this._observable.notifyObservers('onWidgetActive', sceneId, widgetId);
|
|
70
|
+
} else if (state === WidgetState.INACTIVE) {
|
|
71
|
+
this._observable.notifyObservers('onWidgetInactive', sceneId, widgetId);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
constructor(_scene, _api, _sharedCache) {
|
|
77
|
+
this._scene = _scene;
|
|
78
|
+
this._api = _api;
|
|
79
|
+
this._scene.addObserver(this._sceneObserver);
|
|
80
|
+
this._addLogObserver();
|
|
81
|
+
}
|
|
82
|
+
getActivity(widgetId) {
|
|
83
|
+
const state = this._scene.getScenePropertiesByKeyPath(`flexWidgets.${widgetId}.state`);
|
|
84
|
+
return state === WidgetState.ACTIVE;
|
|
85
|
+
}
|
|
86
|
+
active(widgetId) {
|
|
87
|
+
return (0, _error.handleRequestError)(() => this._api.updateWidgetState({
|
|
88
|
+
roomUuid: this._scene.sceneId,
|
|
89
|
+
widgetId,
|
|
90
|
+
state: 1
|
|
91
|
+
}), _imports.ErrorModuleCode.FCR_ROOM, 'activate widget failed');
|
|
92
|
+
}
|
|
93
|
+
inactive(widgetId) {
|
|
94
|
+
return (0, _error.handleRequestError)(() => this._api.updateWidgetState({
|
|
95
|
+
roomUuid: this._scene.sceneId,
|
|
96
|
+
widgetId,
|
|
97
|
+
state: 0
|
|
98
|
+
}), _imports.ErrorModuleCode.FCR_ROOM, 'deactivate widget failed');
|
|
99
|
+
}
|
|
100
|
+
addObserver(observer) {
|
|
101
|
+
this._observable.addObserver(observer);
|
|
102
|
+
}
|
|
103
|
+
removeObserver(observer) {
|
|
104
|
+
this._observable.removeObserver(observer);
|
|
105
|
+
}
|
|
106
|
+
release() {
|
|
107
|
+
this._scene.removeObserver(this._sceneObserver);
|
|
108
|
+
this._observable.removeAllObservers();
|
|
109
|
+
return _type.FcrReturnCode.SUCCESS;
|
|
110
|
+
}
|
|
111
|
+
_addLogObserver() {
|
|
112
|
+
this.addObserver((0, _logger.generateLogObserver)(this.logger, [['onWidgetActive', ['roomId', 'widgetId']], ['onWidgetInactive', ['roomId', 'widgetId']]]));
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
exports.FcrWidgetControlImpl = FcrWidgetControlImpl;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 房间内 widget 激活状态控制与事件订阅。
|
|
3
|
+
*/
|
|
4
|
+
export interface FcrWidgetControl {
|
|
5
|
+
/**
|
|
6
|
+
* 获取指定 widget 是否处于激活状态(scene 中 `widgets.{widgetId}.state === 1`)。
|
|
7
|
+
*/
|
|
8
|
+
getActivity(widgetId: string): boolean;
|
|
9
|
+
/**
|
|
10
|
+
* 激活指定 widget。
|
|
11
|
+
*/
|
|
12
|
+
active(widgetId: string): Promise<void>;
|
|
13
|
+
/**
|
|
14
|
+
* 停用指定 widget。
|
|
15
|
+
*/
|
|
16
|
+
inactive(widgetId: string): Promise<void>;
|
|
17
|
+
addObserver(observer: FcrWidgetObserver): void;
|
|
18
|
+
removeObserver(observer: FcrWidgetObserver): void;
|
|
19
|
+
/**
|
|
20
|
+
* 移除场景监听与观察者。
|
|
21
|
+
*/
|
|
22
|
+
release(): number;
|
|
23
|
+
}
|
|
24
|
+
export interface FcrWidgetObserver {
|
|
25
|
+
/**
|
|
26
|
+
* widget 进入激活状态(scene 属性更新且 cmd === 13,state === 1)。
|
|
27
|
+
*/
|
|
28
|
+
onWidgetActive?: (roomId: string, widgetId: string) => void;
|
|
29
|
+
/**
|
|
30
|
+
* widget 进入非激活状态(scene 属性更新且 cmd === 13,state === 0)。
|
|
31
|
+
*/
|
|
32
|
+
onWidgetInactive?: (roomId: string, widgetId: string) => void;
|
|
33
|
+
}
|
package/lib/room-router/index.js
CHANGED
|
@@ -33,6 +33,7 @@ var _retryHelpers = require("../utilities/retry-helpers");
|
|
|
33
33
|
var _logger = require("../utilities/logger");
|
|
34
34
|
var _validateParams = _interopRequireDefault(require("../utilities/validate-params"));
|
|
35
35
|
var _type3 = require("./type");
|
|
36
|
+
var _convertRoomType = require("../utilities/convertRoomType");
|
|
36
37
|
let _initProto, _initDecs, _joinRoomDecs;
|
|
37
38
|
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)]; } }; }
|
|
38
39
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
@@ -212,8 +213,13 @@ class FcrRoomRouterImpl {
|
|
|
212
213
|
const {
|
|
213
214
|
data
|
|
214
215
|
} = roomResponse;
|
|
216
|
+
const fcrRoomType = (0, _convertRoomType.convertServerRoomTypeToFcrRoomType)(data.room.roomProperties.roomType);
|
|
217
|
+
if (fcrRoomType === null) {
|
|
218
|
+
const fcrError = (0, _error.generateFcrCoreClientError)(_imports.ErrorModuleCode.FCR_ROOM, _imports.DetailErrorCode.UNDEFINED_ERROR, `update room state failed: Unknown room type: ${data.room.roomProperties.roomType}`);
|
|
219
|
+
throw fcrError;
|
|
220
|
+
}
|
|
215
221
|
this._nextRoomRoute = {
|
|
216
|
-
roomType:
|
|
222
|
+
roomType: fcrRoomType,
|
|
217
223
|
roomId: data.room.roomInfo.roomUuid,
|
|
218
224
|
isJoined: true
|
|
219
225
|
};
|
package/lib/service/api.d.ts
CHANGED
|
@@ -476,6 +476,11 @@ export declare class FcrCoreServiceApi {
|
|
|
476
476
|
roomUuid: string;
|
|
477
477
|
userUuid: string;
|
|
478
478
|
}): Promise<any>;
|
|
479
|
+
updateWidgetState(params: {
|
|
480
|
+
roomUuid: string;
|
|
481
|
+
widgetId: string;
|
|
482
|
+
state: 0 | 1;
|
|
483
|
+
}): Promise<any>;
|
|
479
484
|
startTranscribing(params: {
|
|
480
485
|
roomUuid: string;
|
|
481
486
|
userUuid: string;
|
package/lib/service/api.js
CHANGED
|
@@ -340,7 +340,7 @@ class FcrCoreServiceApi {
|
|
|
340
340
|
ts
|
|
341
341
|
} = await this._client.fetch({
|
|
342
342
|
path: `/v1/rooms/${params.roomId}/users/${params.userId}/entry`,
|
|
343
|
-
method: '
|
|
343
|
+
method: 'POST',
|
|
344
344
|
data: {
|
|
345
345
|
password: params.password,
|
|
346
346
|
stream: params.stream,
|
|
@@ -367,7 +367,7 @@ class FcrCoreServiceApi {
|
|
|
367
367
|
ts
|
|
368
368
|
} = await this._client.fetch({
|
|
369
369
|
path: `/v1/rooms/${params.roomId}/users/${params.userId}/internal/entry`,
|
|
370
|
-
method: '
|
|
370
|
+
method: 'POST',
|
|
371
371
|
data: {
|
|
372
372
|
password: params.password,
|
|
373
373
|
stream: params.stream,
|
|
@@ -1128,6 +1128,20 @@ class FcrCoreServiceApi {
|
|
|
1128
1128
|
method: 'PUT'
|
|
1129
1129
|
});
|
|
1130
1130
|
}
|
|
1131
|
+
async updateWidgetState(params) {
|
|
1132
|
+
const {
|
|
1133
|
+
roomUuid,
|
|
1134
|
+
widgetId,
|
|
1135
|
+
state
|
|
1136
|
+
} = params;
|
|
1137
|
+
return await this._client.fetch({
|
|
1138
|
+
path: `/v1/rooms/${roomUuid}/widgets/${widgetId}`,
|
|
1139
|
+
method: 'PUT',
|
|
1140
|
+
data: {
|
|
1141
|
+
state
|
|
1142
|
+
}
|
|
1143
|
+
});
|
|
1144
|
+
}
|
|
1131
1145
|
async startTranscribing(params) {
|
|
1132
1146
|
const {
|
|
1133
1147
|
roomUuid,
|
package/lib/type.d.ts
CHANGED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.convertServerRoomTypeToFcrRoomType = void 0;
|
|
7
|
+
var _type = require("../room-control/type");
|
|
8
|
+
const convertServerRoomTypeToFcrRoomType = roomType => {
|
|
9
|
+
switch (roomType) {
|
|
10
|
+
case 11:
|
|
11
|
+
return _type.FcrRoomType.Mainroom;
|
|
12
|
+
case 102:
|
|
13
|
+
return _type.FcrRoomType.Waitingroom;
|
|
14
|
+
case 101:
|
|
15
|
+
return _type.FcrRoomType.Subroom;
|
|
16
|
+
case 103:
|
|
17
|
+
return _type.FcrRoomType.Interpreterroom;
|
|
18
|
+
case 104:
|
|
19
|
+
return _type.FcrRoomType.JoinBeforeHostWaitingRoom;
|
|
20
|
+
case 12:
|
|
21
|
+
return _type.FcrRoomType.Infinityroom;
|
|
22
|
+
default:
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
exports.convertServerRoomTypeToFcrRoomType = convertServerRoomTypeToFcrRoomType;
|
|
@@ -29,6 +29,7 @@ let ControllerType = exports.ControllerType = /*#__PURE__*/function (ControllerT
|
|
|
29
29
|
ControllerType["STT"] = "stt";
|
|
30
30
|
ControllerType["REMOTE_CONTROL"] = "remote control";
|
|
31
31
|
ControllerType["APPLICATION"] = "application";
|
|
32
|
+
ControllerType["WIDGET"] = "widget";
|
|
32
33
|
return ControllerType;
|
|
33
34
|
}({});
|
|
34
35
|
/**
|
package/lib-es/engine/index.js
CHANGED
|
@@ -59,6 +59,7 @@ import { getCoreIpList, getCoreLogFileSize, getEasemobChatIpList, getEasemobRest
|
|
|
59
59
|
import validateParams from '../utilities/validate-params';
|
|
60
60
|
import { FcrInfinityRoomControlImpl } from '../room-control/infinity-room-control';
|
|
61
61
|
import { FcrRemoteControlImpl } from '../remote-control';
|
|
62
|
+
import { convertServerRoomTypeToFcrRoomType } from '../utilities/convertRoomType';
|
|
62
63
|
export class FcrCoreEngineImpl {
|
|
63
64
|
static {
|
|
64
65
|
[_initProto] = _applyDecs(this, [[trace, 2, "release"], [trace, 2, "login"], [trace, 2, "logout"], [_renewUserTokenDecs, 2, "renewUserToken"], [trace, 2, "getVersion"], [_createMainRoomControlDecs, 2, "createMainRoomControl"], [_createInfinityRoomControlDecs, 2, "createInfinityRoomControl"], [_createWaitingRoomControlDecs, 2, "createWaitingRoomControl"], [_createRoomRouterDecs, 2, "createRoomRouter"], [_createRoomControlAndJoinDecs, 2, "createRoomControlAndJoin"], [trace, 2, "getDesktopMediaControl"], [trace, 2, "getMobileMediaControl"], [trace, 2, "getMonitorControl"], [trace, 2, "getPeerSessionControl"], [trace, 2, "getRemoteControl"], [_sendPeerMessageDecs, 2, "sendPeerMessage"], [_setParametersDecs, 2, "setParameters"]], []).e;
|
|
@@ -288,7 +289,8 @@ export class FcrCoreEngineImpl {
|
|
|
288
289
|
data,
|
|
289
290
|
ts
|
|
290
291
|
} = res;
|
|
291
|
-
|
|
292
|
+
const fcrRoomType = convertServerRoomTypeToFcrRoomType(data.room.roomProperties.roomType);
|
|
293
|
+
switch (fcrRoomType) {
|
|
292
294
|
case FcrRoomType.Waitingroom:
|
|
293
295
|
roomControl = this.createWaitingRoomControl(data.room.roomInfo.roomUuid);
|
|
294
296
|
break;
|
|
@@ -299,13 +301,13 @@ export class FcrCoreEngineImpl {
|
|
|
299
301
|
roomControl = this.createMainRoomControl(roomId);
|
|
300
302
|
break;
|
|
301
303
|
default:
|
|
302
|
-
throw new Error(`Unknown room type: ${
|
|
304
|
+
throw new Error(`Unknown room type: ${fcrRoomType}`);
|
|
303
305
|
}
|
|
304
306
|
await roomControl.join({
|
|
305
307
|
...options,
|
|
306
308
|
snapshot: data,
|
|
307
309
|
timestamp: ts,
|
|
308
|
-
createStreamConfigs:
|
|
310
|
+
createStreamConfigs: fcrRoomType === FcrRoomType.Waitingroom ? [] : options.createStreamConfigs
|
|
309
311
|
});
|
|
310
312
|
}, [], {
|
|
311
313
|
retriesMax: 10
|
package/lib-es/imports.js
CHANGED
|
@@ -37,7 +37,7 @@ export { Mutex } from 'agora-foundation/lib/worker/mutex';
|
|
|
37
37
|
|
|
38
38
|
export { AgoraRteError } from 'agora-rte-sdk/lib/core/utilities/error';
|
|
39
39
|
export { AgoraError as FcrError } from 'agora-foundation/lib/utilities/error/agora-error';
|
|
40
|
-
export { AgoraRteConnectionState, AgoraRteEngine, convertStreamTypeToPublishState, AgoraRteLatencyLevel } from 'agora-rte-sdk';
|
|
40
|
+
export { AgoraRteConnectionState, AgoraRteEngine, convertStreamTypeToPublishState, AgoraRteLatencyLevel, AgoraRteVideoOutputOrientationMode } from 'agora-rte-sdk';
|
|
41
41
|
export { AgoraRteRoomConnectorType, AgoraRteStreamPrivilegeOperation, AgoraRteStreamPrivilegeVideoSourceType, AgoraRteStreamPrivilegeAudioSourceType, AgoraRteMediaStreamType } from 'agora-rte-sdk/lib/core/scene/type';
|
|
42
42
|
export { AgoraRtcRegion, AgoraRtcVideoSourceType, AgoraRtcAudioSourceType, AgoraRtcMediaSourceState, AgoraRtcRenderMode, AgoraRtcVideoStreamType, AgoraRtcCapability, AgoraRtcAiDenoiseLevel, AgoraRtcAudioOutputRouting, AgoraRtcLatencyLevelType, AgoraRtcEncryptionMode, AgoraRtcDegradationPreference } from 'agora-rte-sdk/lib/core/rtc/type';
|
|
43
43
|
export { AgoraRteStreamLayer } from 'agora-rte-sdk/lib/type';
|
package/lib-es/index.js
CHANGED
|
@@ -6,4 +6,6 @@ export { FcrCoreEngineImpl as FcrCoreEngine } from './engine';
|
|
|
6
6
|
export { FcrCoreEngineConfig } from './struct';
|
|
7
7
|
|
|
8
8
|
// classes
|
|
9
|
-
export { FcrError } from './type';
|
|
9
|
+
export { FcrError } from './type';
|
|
10
|
+
export { FcrDegradationPreference } from './schema';
|
|
11
|
+
export { AgoraRteVideoOutputOrientationMode as FcrVideoOutputOrientationMode } from './imports';
|
|
@@ -58,6 +58,7 @@ import { FcrConnectionState } from '..';
|
|
|
58
58
|
import { ControllerType } from '../utilities/error-helpers';
|
|
59
59
|
import { FcrJoinHelper, LIVE_STREAMING_STATE_VALUES, liveStreamingErrorHelper, RECORDING_STATE_VALUES, RESPONSE_CODES, ROOM_CONTROL_CONSTANTS, ROOM_MESSAGE_COMMANDS, ROOM_STATE_VALUES, roomControlErrorHelper, validateControllerInitialized, validateJoinRoomPreconditions, validateRoomJoined } from './helpers';
|
|
60
60
|
import { FcrSttControlImpl } from './stt-control';
|
|
61
|
+
import { FcrWidgetControlImpl } from './widget-control';
|
|
61
62
|
import { FcrApplicationControlImpl } from './application-control';
|
|
62
63
|
|
|
63
64
|
/**
|
|
@@ -120,6 +121,7 @@ export class FcrBaseRoomControlImpl {
|
|
|
120
121
|
this.sharingControl = new FcrSharingControlImpl(this._scene, this._api, this._engine, this._config, this._privilegeControl, this._streamControl, this._sharedCache, this._userControl);
|
|
121
122
|
}
|
|
122
123
|
this._sttControl = new FcrSttControlImpl(this._scene, this._api, this._sharedCache);
|
|
124
|
+
this._widgetControl = new FcrWidgetControlImpl(this._scene, this._api, this._sharedCache);
|
|
123
125
|
this._observable.notifyObservers('onJoinRoomSuccess', sceneId);
|
|
124
126
|
},
|
|
125
127
|
// onJoinSceneFailure: (sceneId, error) => {
|
|
@@ -241,6 +243,10 @@ export class FcrBaseRoomControlImpl {
|
|
|
241
243
|
validateControllerInitialized(this._sttControl, ControllerType.STT);
|
|
242
244
|
return this._sttControl;
|
|
243
245
|
}
|
|
246
|
+
getWidgetControl() {
|
|
247
|
+
validateControllerInitialized(this._widgetControl, ControllerType.WIDGET);
|
|
248
|
+
return this._widgetControl;
|
|
249
|
+
}
|
|
244
250
|
getApplicationControl() {
|
|
245
251
|
validateControllerInitialized(this._applicationControl, ControllerType.APPLICATION);
|
|
246
252
|
return this._applicationControl;
|
|
@@ -365,7 +371,6 @@ export class FcrBaseRoomControlImpl {
|
|
|
365
371
|
validateRoomJoined(this._joinRoomSuccess, 'get schedule info');
|
|
366
372
|
const schedule = this._scene.getScenePropertiesByKeyPath('schedule');
|
|
367
373
|
return {
|
|
368
|
-
...schedule,
|
|
369
374
|
duration: schedule.duration ?? 0,
|
|
370
375
|
startTime: Math.floor((schedule.startTime ?? 0) / 1000)
|
|
371
376
|
};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import "core-js/modules/esnext.iterator.constructor.js";
|
|
2
2
|
import "core-js/modules/esnext.iterator.map.js";
|
|
3
3
|
import { DetailErrorCode, ErrorModuleCode, FcrChatRoomControlImpl } from '../imports';
|
|
4
|
+
import { convertServerRoomTypeToFcrRoomType } from '../utilities/convertRoomType';
|
|
4
5
|
import { generateFcrCoreClientError } from '../utilities/error';
|
|
5
6
|
import { FcrInfinityRoomControlImpl } from './infinity-room-control';
|
|
6
7
|
import { FcrInterpreterRoomControlImpl } from './interpreter-control/room';
|
|
@@ -48,7 +49,10 @@ export class RoomControlFactory {
|
|
|
48
49
|
roomResponse,
|
|
49
50
|
monitorControl
|
|
50
51
|
} = params;
|
|
51
|
-
const roomType = roomResponse.room.roomProperties.roomType;
|
|
52
|
+
const roomType = convertServerRoomTypeToFcrRoomType(roomResponse.room.roomProperties.roomType);
|
|
53
|
+
if (roomType === null) {
|
|
54
|
+
throw generateFcrCoreClientError(ErrorModuleCode.FCR_ROOM, DetailErrorCode.UNDEFINED_ERROR, `Unsupported room types: ${roomResponse.room.roomProperties.roomType}`);
|
|
55
|
+
}
|
|
52
56
|
const RoomControlImpl = ROOM_CONTROL_IMPLEMENTATIONS[roomType];
|
|
53
57
|
if (!RoomControlImpl) {
|
|
54
58
|
throw generateFcrCoreClientError(ErrorModuleCode.FCR_ROOM, DetailErrorCode.UNDEFINED_ERROR, `Unsupported room types: ${roomType}`);
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
export let FcrRoomType = /*#__PURE__*/function (FcrRoomType) {
|
|
2
|
-
FcrRoomType[FcrRoomType["Mainroom"] =
|
|
3
|
-
FcrRoomType[FcrRoomType["
|
|
4
|
-
FcrRoomType[FcrRoomType["
|
|
5
|
-
FcrRoomType[FcrRoomType["Interpreterroom"] =
|
|
6
|
-
FcrRoomType[FcrRoomType["JoinBeforeHostWaitingRoom"] =
|
|
7
|
-
FcrRoomType[FcrRoomType["Infinityroom"] =
|
|
2
|
+
FcrRoomType[FcrRoomType["Mainroom"] = 0] = "Mainroom";
|
|
3
|
+
FcrRoomType[FcrRoomType["Subroom"] = 1] = "Subroom";
|
|
4
|
+
FcrRoomType[FcrRoomType["Waitingroom"] = 2] = "Waitingroom";
|
|
5
|
+
FcrRoomType[FcrRoomType["Interpreterroom"] = 3] = "Interpreterroom";
|
|
6
|
+
FcrRoomType[FcrRoomType["JoinBeforeHostWaitingRoom"] = 4] = "JoinBeforeHostWaitingRoom";
|
|
7
|
+
FcrRoomType[FcrRoomType["Infinityroom"] = 5] = "Infinityroom";
|
|
8
8
|
return FcrRoomType;
|
|
9
9
|
}({});
|
|
10
10
|
export let FcrLiveStreamingStateUpdatedReason = /*#__PURE__*/function (FcrLiveStreamingStateUpdatedReason) {
|
|
@@ -68,8 +68,8 @@ export class FcrUserControlImpl {
|
|
|
68
68
|
});
|
|
69
69
|
const fcrUserEvents = events.map(e => {
|
|
70
70
|
return {
|
|
71
|
-
userInfo: e.userInfo && convertRteUserToFcrUser(e.userInfo, this._roomCache)
|
|
72
|
-
operatorUser: e.operatorUser && convertRteUserToFcrUser(e.operatorUser, this._roomCache)
|
|
71
|
+
userInfo: e.userInfo && convertRteUserToFcrUser(e.userInfo, this._roomCache)
|
|
72
|
+
// operatorUser: e.operatorUser && convertRteUserToFcrUser(e.operatorUser, this._roomCache),
|
|
73
73
|
};
|
|
74
74
|
});
|
|
75
75
|
fcrUserEvents.forEach(event => {
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import "core-js/modules/es.array.push.js";
|
|
2
|
+
import "core-js/modules/esnext.function.metadata.js";
|
|
3
|
+
import "core-js/modules/esnext.map.delete-all.js";
|
|
4
|
+
import "core-js/modules/esnext.map.emplace.js";
|
|
5
|
+
import "core-js/modules/esnext.map.every.js";
|
|
6
|
+
import "core-js/modules/esnext.map.filter.js";
|
|
7
|
+
import "core-js/modules/esnext.map.find.js";
|
|
8
|
+
import "core-js/modules/esnext.map.find-key.js";
|
|
9
|
+
import "core-js/modules/esnext.map.includes.js";
|
|
10
|
+
import "core-js/modules/esnext.map.key-of.js";
|
|
11
|
+
import "core-js/modules/esnext.map.map-keys.js";
|
|
12
|
+
import "core-js/modules/esnext.map.map-values.js";
|
|
13
|
+
import "core-js/modules/esnext.map.merge.js";
|
|
14
|
+
import "core-js/modules/esnext.map.reduce.js";
|
|
15
|
+
import "core-js/modules/esnext.map.some.js";
|
|
16
|
+
import "core-js/modules/esnext.map.update.js";
|
|
17
|
+
import "core-js/modules/esnext.symbol.metadata.js";
|
|
18
|
+
let _initProto, _getActivityDecs, _activeDecs, _inactiveDecs;
|
|
19
|
+
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)]; } }; }
|
|
20
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
21
|
+
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); }
|
|
22
|
+
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; }
|
|
23
|
+
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; }
|
|
24
|
+
import { ErrorModuleCode } from '../../imports';
|
|
25
|
+
import { AgoraObservable, trace } from '../../imports';
|
|
26
|
+
import { FcrReturnCode } from '../../type';
|
|
27
|
+
import { handleRequestError } from '../../utilities/error';
|
|
28
|
+
import { createLogger, generateLogObserver } from '../../utilities/logger';
|
|
29
|
+
/** scene 属性更新中表示 widget 状态变更的 cause.cmd(与服务端约定一致) */
|
|
30
|
+
const WIDGET_SCENE_PROPERTIES_CMD = 13;
|
|
31
|
+
var WidgetState = /*#__PURE__*/function (WidgetState) {
|
|
32
|
+
WidgetState[WidgetState["INACTIVE"] = 0] = "INACTIVE";
|
|
33
|
+
WidgetState[WidgetState["ACTIVE"] = 1] = "ACTIVE";
|
|
34
|
+
return WidgetState;
|
|
35
|
+
}(WidgetState || {});
|
|
36
|
+
/**
|
|
37
|
+
* @internal
|
|
38
|
+
*/
|
|
39
|
+
export class FcrWidgetControlImpl {
|
|
40
|
+
static {
|
|
41
|
+
[_initProto] = _applyDecs(this, [[_getActivityDecs, 2, "getActivity"], [_activeDecs, 2, "active"], [_inactiveDecs, 2, "inactive"], [trace, 2, "release"]], []).e;
|
|
42
|
+
}
|
|
43
|
+
//@internal
|
|
44
|
+
[(_getActivityDecs = trace(['widgetId']), _activeDecs = trace(['widgetId']), _inactiveDecs = trace(['widgetId']), "logger")] = (_initProto(this), createLogger({
|
|
45
|
+
prefix: 'FcrWidgetControlImpl'
|
|
46
|
+
}));
|
|
47
|
+
|
|
48
|
+
//@internal
|
|
49
|
+
_observable = new AgoraObservable();
|
|
50
|
+
|
|
51
|
+
//@internal
|
|
52
|
+
_sceneObserver = {
|
|
53
|
+
onScenePropertiesUpdated: (sceneId, event) => {
|
|
54
|
+
if (event.cause?.cmd !== WIDGET_SCENE_PROPERTIES_CMD) {
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
const changedWidgets = event.changedProperties?.flexWidgets;
|
|
58
|
+
if (!changedWidgets || typeof changedWidgets !== 'object') {
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
for (const widgetId of Object.keys(changedWidgets)) {
|
|
62
|
+
const state = changedWidgets[widgetId]?.state;
|
|
63
|
+
if (state === WidgetState.ACTIVE) {
|
|
64
|
+
this._observable.notifyObservers('onWidgetActive', sceneId, widgetId);
|
|
65
|
+
} else if (state === WidgetState.INACTIVE) {
|
|
66
|
+
this._observable.notifyObservers('onWidgetInactive', sceneId, widgetId);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
constructor(_scene, _api, _sharedCache) {
|
|
72
|
+
this._scene = _scene;
|
|
73
|
+
this._api = _api;
|
|
74
|
+
this._scene.addObserver(this._sceneObserver);
|
|
75
|
+
this._addLogObserver();
|
|
76
|
+
}
|
|
77
|
+
getActivity(widgetId) {
|
|
78
|
+
const state = this._scene.getScenePropertiesByKeyPath(`flexWidgets.${widgetId}.state`);
|
|
79
|
+
return state === WidgetState.ACTIVE;
|
|
80
|
+
}
|
|
81
|
+
active(widgetId) {
|
|
82
|
+
return handleRequestError(() => this._api.updateWidgetState({
|
|
83
|
+
roomUuid: this._scene.sceneId,
|
|
84
|
+
widgetId,
|
|
85
|
+
state: 1
|
|
86
|
+
}), ErrorModuleCode.FCR_ROOM, 'activate widget failed');
|
|
87
|
+
}
|
|
88
|
+
inactive(widgetId) {
|
|
89
|
+
return handleRequestError(() => this._api.updateWidgetState({
|
|
90
|
+
roomUuid: this._scene.sceneId,
|
|
91
|
+
widgetId,
|
|
92
|
+
state: 0
|
|
93
|
+
}), ErrorModuleCode.FCR_ROOM, 'deactivate widget failed');
|
|
94
|
+
}
|
|
95
|
+
addObserver(observer) {
|
|
96
|
+
this._observable.addObserver(observer);
|
|
97
|
+
}
|
|
98
|
+
removeObserver(observer) {
|
|
99
|
+
this._observable.removeObserver(observer);
|
|
100
|
+
}
|
|
101
|
+
release() {
|
|
102
|
+
this._scene.removeObserver(this._sceneObserver);
|
|
103
|
+
this._observable.removeAllObservers();
|
|
104
|
+
return FcrReturnCode.SUCCESS;
|
|
105
|
+
}
|
|
106
|
+
_addLogObserver() {
|
|
107
|
+
this.addObserver(generateLogObserver(this.logger, [['onWidgetActive', ['roomId', 'widgetId']], ['onWidgetInactive', ['roomId', 'widgetId']]]));
|
|
108
|
+
}
|
|
109
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -33,6 +33,7 @@ import { createLogger, generateLogObserver } from '../utilities/logger';
|
|
|
33
33
|
import validateParams from '../utilities/validate-params';
|
|
34
34
|
import { ROOM_ROUTER_CONSTANTS } from './type';
|
|
35
35
|
import { DetailErrorCode, ErrorModuleCode } from '../imports';
|
|
36
|
+
import { convertServerRoomTypeToFcrRoomType } from '../utilities/convertRoomType';
|
|
36
37
|
|
|
37
38
|
/**
|
|
38
39
|
* @internal
|
|
@@ -207,8 +208,13 @@ export class FcrRoomRouterImpl {
|
|
|
207
208
|
const {
|
|
208
209
|
data
|
|
209
210
|
} = roomResponse;
|
|
211
|
+
const fcrRoomType = convertServerRoomTypeToFcrRoomType(data.room.roomProperties.roomType);
|
|
212
|
+
if (fcrRoomType === null) {
|
|
213
|
+
const fcrError = generateFcrCoreClientError(ErrorModuleCode.FCR_ROOM, DetailErrorCode.UNDEFINED_ERROR, `update room state failed: Unknown room type: ${data.room.roomProperties.roomType}`);
|
|
214
|
+
throw fcrError;
|
|
215
|
+
}
|
|
210
216
|
this._nextRoomRoute = {
|
|
211
|
-
roomType:
|
|
217
|
+
roomType: fcrRoomType,
|
|
212
218
|
roomId: data.room.roomInfo.roomUuid,
|
|
213
219
|
isJoined: true
|
|
214
220
|
};
|
package/lib-es/service/api.js
CHANGED
|
@@ -334,7 +334,7 @@ export class FcrCoreServiceApi {
|
|
|
334
334
|
ts
|
|
335
335
|
} = await this._client.fetch({
|
|
336
336
|
path: `/v1/rooms/${params.roomId}/users/${params.userId}/entry`,
|
|
337
|
-
method: '
|
|
337
|
+
method: 'POST',
|
|
338
338
|
data: {
|
|
339
339
|
password: params.password,
|
|
340
340
|
stream: params.stream,
|
|
@@ -361,7 +361,7 @@ export class FcrCoreServiceApi {
|
|
|
361
361
|
ts
|
|
362
362
|
} = await this._client.fetch({
|
|
363
363
|
path: `/v1/rooms/${params.roomId}/users/${params.userId}/internal/entry`,
|
|
364
|
-
method: '
|
|
364
|
+
method: 'POST',
|
|
365
365
|
data: {
|
|
366
366
|
password: params.password,
|
|
367
367
|
stream: params.stream,
|
|
@@ -1122,6 +1122,20 @@ export class FcrCoreServiceApi {
|
|
|
1122
1122
|
method: 'PUT'
|
|
1123
1123
|
});
|
|
1124
1124
|
}
|
|
1125
|
+
async updateWidgetState(params) {
|
|
1126
|
+
const {
|
|
1127
|
+
roomUuid,
|
|
1128
|
+
widgetId,
|
|
1129
|
+
state
|
|
1130
|
+
} = params;
|
|
1131
|
+
return await this._client.fetch({
|
|
1132
|
+
path: `/v1/rooms/${roomUuid}/widgets/${widgetId}`,
|
|
1133
|
+
method: 'PUT',
|
|
1134
|
+
data: {
|
|
1135
|
+
state
|
|
1136
|
+
}
|
|
1137
|
+
});
|
|
1138
|
+
}
|
|
1125
1139
|
async startTranscribing(params) {
|
|
1126
1140
|
const {
|
|
1127
1141
|
roomUuid,
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { FcrRoomType } from '../room-control/type';
|
|
2
|
+
export const convertServerRoomTypeToFcrRoomType = roomType => {
|
|
3
|
+
switch (roomType) {
|
|
4
|
+
case 11:
|
|
5
|
+
return FcrRoomType.Mainroom;
|
|
6
|
+
case 102:
|
|
7
|
+
return FcrRoomType.Waitingroom;
|
|
8
|
+
case 101:
|
|
9
|
+
return FcrRoomType.Subroom;
|
|
10
|
+
case 103:
|
|
11
|
+
return FcrRoomType.Interpreterroom;
|
|
12
|
+
case 104:
|
|
13
|
+
return FcrRoomType.JoinBeforeHostWaitingRoom;
|
|
14
|
+
case 12:
|
|
15
|
+
return FcrRoomType.Infinityroom;
|
|
16
|
+
default:
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
};
|
|
@@ -25,6 +25,7 @@ export let ControllerType = /*#__PURE__*/function (ControllerType) {
|
|
|
25
25
|
ControllerType["STT"] = "stt";
|
|
26
26
|
ControllerType["REMOTE_CONTROL"] = "remote control";
|
|
27
27
|
ControllerType["APPLICATION"] = "application";
|
|
28
|
+
ControllerType["WIDGET"] = "widget";
|
|
28
29
|
return ControllerType;
|
|
29
30
|
}({});
|
|
30
31
|
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "fcr-core",
|
|
3
3
|
"description": "Core APIs for building online scenes",
|
|
4
|
-
"version": "3.10.
|
|
4
|
+
"version": "3.10.1-rc.2",
|
|
5
5
|
"module": "lib/index.js",
|
|
6
6
|
"types": "lib/index.d.ts",
|
|
7
7
|
"files": [
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"@types/lodash": "^4.14.168",
|
|
42
42
|
"@types/sinon": "^17.0.2",
|
|
43
43
|
"@types/uuid": "^8.3.0",
|
|
44
|
-
"agora-toolchain": "3.10.
|
|
44
|
+
"agora-toolchain": "3.10.1-rc.2",
|
|
45
45
|
"core-js": "^3.33.3",
|
|
46
46
|
"decomment": "^0.9.5",
|
|
47
47
|
"husky": "^9.0.11",
|
|
@@ -55,14 +55,14 @@
|
|
|
55
55
|
"dependencies": {
|
|
56
56
|
"@netless/app-slide": "^0.2.81",
|
|
57
57
|
"@netless/appliance-plugin": "^1.1.21",
|
|
58
|
-
"@netless/forge-room": "1.
|
|
59
|
-
"@netless/forge-rtm": "1.
|
|
60
|
-
"@netless/forge-whiteboard": "1.
|
|
58
|
+
"@netless/forge-room": "1.1.0",
|
|
59
|
+
"@netless/forge-rtm": "1.1.0",
|
|
60
|
+
"@netless/forge-whiteboard": "1.1.0",
|
|
61
61
|
"@netless/video-js-plugin": "^0.3.8",
|
|
62
62
|
"@netless/white-snapshot": "^0.4.2",
|
|
63
63
|
"@netless/window-manager": "^1.0.7-beta.6",
|
|
64
|
-
"agora-foundation": "3.10.
|
|
65
|
-
"agora-rte-sdk": "3.10.
|
|
64
|
+
"agora-foundation": "3.10.1-rc.2",
|
|
65
|
+
"agora-rte-sdk": "3.10.1-rc.2",
|
|
66
66
|
"await-to-js": "^3.0.0",
|
|
67
67
|
"dayjs": "^1.10.4",
|
|
68
68
|
"easemob-websdk": "4.13.0",
|