fcr-ui-scene 3.7.8-rc.1 → 3.7.8-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/creator/index.js +13 -19
- package/lib/electron/bootstrap-sdk.js +19 -2
- package/lib/electron/sdk-helper.js +6 -2
- package/lib/electron/until.js +3 -0
- package/lib/index.js +8 -1
- package/lib/modules/components/leave-meeting/store.base.d.ts +1 -0
- package/lib/modules/components/leave-meeting/store.base.js +46 -5
- package/lib/modules/dialog/dialogs/confirm-leave-meeting/index.d.ts +1 -0
- package/lib/modules/dialog/dialogs/confirm-leave-meeting/index.js +2 -1
- package/lib/modules/dialog/dialogs/share-screen-selection/index.js +0 -12
- package/lib/modules/share-screen/store.base.js +0 -2
- package/lib/modules/share-screen/store.electron.js +54 -31
- package/lib/modules/video-window/popover-watcher.js +4 -1
- package/lib/modules/video-window/store.js +7 -1
- package/lib/modules/video-window/view.js +14 -4
- package/lib/providers/screen-share/strategy/browser.js +1 -1
- package/lib/providers/window/main-window.js +0 -3
- package/lib/providers/window/renderer-window.d.ts +3 -0
- package/lib/providers/window/renderer-window.js +47 -4
- package/lib/providers/window/type.d.ts +1 -0
- package/lib/scenes/main-scene.d.ts +1 -0
- package/lib/scenes/main-scene.js +32 -1
- package/lib/utilities/logger.js +1 -1
- package/package.json +5 -5
- package/public/index.html +2 -149
- package/public/meeting-manager.js +391 -0
- package/installer/icons/favicon.ico +0 -0
- package/installer/icons/favicon.png +0 -0
- package/installer/icons/icon.png +0 -0
- package/installer/mac/entitlements.mac.plist +0 -20
- package/lib/modules/control-bar/reactor.d.ts +0 -2
- package/lib/modules/control-bar/reactor.js +0 -8
package/lib/creator/index.js
CHANGED
|
@@ -183,17 +183,6 @@ var FcrUISceneCreator = exports.FcrUISceneCreator = /*#__PURE__*/function () {
|
|
|
183
183
|
type: _type.FcrUIGlobalNodeEventType.LAUNCH_SUCCESS,
|
|
184
184
|
data: args
|
|
185
185
|
});
|
|
186
|
-
|
|
187
|
-
// if (isElectron()) {
|
|
188
|
-
// const windowProvider = this._objectManager.getObject<FcrUIWindowProvider>(
|
|
189
|
-
// FcrUIObjectKeys.P_WINDOW_PROVIDER,
|
|
190
|
-
// );
|
|
191
|
-
|
|
192
|
-
// const mainWindow = windowProvider.getCurrentWindow();
|
|
193
|
-
|
|
194
|
-
// focusWindow(mainWindow);
|
|
195
|
-
// }
|
|
196
|
-
|
|
197
186
|
onSuccess.apply(void 0, args);
|
|
198
187
|
},
|
|
199
188
|
onLaunchFailure: function onLaunchFailure() {
|
|
@@ -325,12 +314,14 @@ var FcrUISceneCreator = exports.FcrUISceneCreator = /*#__PURE__*/function () {
|
|
|
325
314
|
key: "release",
|
|
326
315
|
value: function release() {
|
|
327
316
|
this._precheckState();
|
|
317
|
+
if (this._scene) {
|
|
318
|
+
this.logger.info('exit existing scene before releasing creator');
|
|
319
|
+
this._scene.exit();
|
|
320
|
+
}
|
|
328
321
|
this._globalNode.unmount();
|
|
329
322
|
this._globalNode.nodeWillInactive();
|
|
330
323
|
this._providerInitializer.onCreatorRelease();
|
|
331
|
-
// Release core engine last
|
|
332
324
|
this._released = true;
|
|
333
|
-
this._resetScene();
|
|
334
325
|
}
|
|
335
326
|
}, {
|
|
336
327
|
key: "_setMeetingState",
|
|
@@ -348,13 +339,16 @@ var FcrUISceneCreator = exports.FcrUISceneCreator = /*#__PURE__*/function () {
|
|
|
348
339
|
}, {
|
|
349
340
|
key: "_resetScene",
|
|
350
341
|
value: function _resetScene() {
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
342
|
+
var scene = this._scene;
|
|
343
|
+
var sceneObserver = this._sceneObserver;
|
|
344
|
+
if (scene) {
|
|
345
|
+
if (sceneObserver) {
|
|
346
|
+
scene.removeObserver(sceneObserver);
|
|
347
|
+
this._sceneObserver = null;
|
|
348
|
+
}
|
|
349
|
+
this._setMeetingState(_renderer.MeetingState.NOT_IN_MEETING);
|
|
350
|
+
this._scene = null;
|
|
355
351
|
}
|
|
356
|
-
this._setMeetingState(_renderer.MeetingState.NOT_IN_MEETING);
|
|
357
|
-
this._scene = null;
|
|
358
352
|
}
|
|
359
353
|
}, {
|
|
360
354
|
key: "_precheckState",
|
|
@@ -53,6 +53,7 @@ var mainWindow;
|
|
|
53
53
|
var mainWindowReady = false;
|
|
54
54
|
var userMinimize = false;
|
|
55
55
|
var mainWindowDisplayState = _struct.DisplayState.HIDE;
|
|
56
|
+
var lastInitParams = '';
|
|
56
57
|
(0, _main.initialize)();
|
|
57
58
|
var port = (_process$argv$find = process.argv.find(function (arg) {
|
|
58
59
|
return arg.startsWith('--port=');
|
|
@@ -101,7 +102,10 @@ ipcClient.addObserver({
|
|
|
101
102
|
_eventManager.eventManager.startMeetingProcess(roomId);
|
|
102
103
|
(0, _logger.getLogger)().info("CPP EVENT: LaunchMeeting: ".concat(JSON.stringify(message.data), ", has mainWindow ").concat(!!mainWindow, ", state changed to ").concat(_struct.FcrUISceneLaunchState[_eventManager.eventManager.launchState]));
|
|
103
104
|
if (mainWindow) {
|
|
104
|
-
mainWindow.webContents.send(_type.IPCMessageCMD.LaunchMeeting,
|
|
105
|
+
mainWindow.webContents.send(_type.IPCMessageCMD.LaunchMeeting, {
|
|
106
|
+
data: message.data,
|
|
107
|
+
lastInitParams: lastInitParams
|
|
108
|
+
});
|
|
105
109
|
mainWindow.show();
|
|
106
110
|
mainWindow.focus();
|
|
107
111
|
mainWindow.moveTop();
|
|
@@ -122,7 +126,8 @@ ipcClient.addObserver({
|
|
|
122
126
|
}
|
|
123
127
|
break;
|
|
124
128
|
case _type.IPCMessageCMD.InitCreator:
|
|
125
|
-
(0, _logger.getLogger)().info("InitCreator: ".concat(JSON.stringify(message.data)));
|
|
129
|
+
(0, _logger.getLogger)().info("InitCreator, current message data: ".concat(JSON.stringify(message.data)));
|
|
130
|
+
lastInitParams = JSON.stringify(message.data);
|
|
126
131
|
|
|
127
132
|
// 检查调用顺序:如果是 init -> launch 但 launch 在 PROCESSING 阶段,需要报错
|
|
128
133
|
if (_eventManager.eventManager.launchState === _struct.FcrUISceneLaunchState.PROCESSING) {
|
|
@@ -142,7 +147,10 @@ ipcClient.addObserver({
|
|
|
142
147
|
(0, _logger.getLogger)().error("InitCreator: ".concat(e));
|
|
143
148
|
}
|
|
144
149
|
if (mainWindow) {
|
|
150
|
+
(0, _logger.getLogger)().info("InitCreator: send InitCreator message to mainWindow");
|
|
145
151
|
mainWindow.webContents.send(_type.IPCMessageCMD.InitCreator, message.data);
|
|
152
|
+
} else {
|
|
153
|
+
(0, _logger.getLogger)().error("InitCreator: mainWindow is not ready");
|
|
146
154
|
}
|
|
147
155
|
break;
|
|
148
156
|
case _type.IPCMessageCMD.OpenSetting:
|
|
@@ -323,6 +331,15 @@ _electron.app.addListener('ready', function () {
|
|
|
323
331
|
if (_eventManager.eventManager.launchState !== _struct.FcrUISceneLaunchState.PROCESSING) {
|
|
324
332
|
return;
|
|
325
333
|
}
|
|
334
|
+
try {
|
|
335
|
+
// 再会议启动过程中,窗口被其他窗口遮挡也会触发hide事件,实际窗口在后面运行,所以需要判断窗口是否可见
|
|
336
|
+
if (mainWindow.isVisible()) {
|
|
337
|
+
(0, _logger.getLogger)().info('windows_release main window hidden, but window is visible, ignore this event');
|
|
338
|
+
return;
|
|
339
|
+
}
|
|
340
|
+
} catch (error) {
|
|
341
|
+
(0, _logger.getLogger)().error("windows_release main window hide, get main window visible error");
|
|
342
|
+
}
|
|
326
343
|
ipcClient.sendMessage({
|
|
327
344
|
// TODO
|
|
328
345
|
// cmd: IPCMessageCMD.ExitUiSceneFromMainProcess,
|
|
@@ -201,7 +201,8 @@ _renderer.ipcRenderer.on(_type.IPCMessageCMD.SetParameters, function (_event, va
|
|
|
201
201
|
_renderer.ipcRenderer.on(_type.IPCMessageCMD.LaunchMeeting, function (_event, value) {
|
|
202
202
|
console.log('LaunchMeeting in sdk-helper', value);
|
|
203
203
|
if (cppSdkHelper.onLaunchMeeting) {
|
|
204
|
-
var data = value
|
|
204
|
+
var data = value.data,
|
|
205
|
+
lastInitParams = value.lastInitParams;
|
|
205
206
|
try {
|
|
206
207
|
if (typeof value == 'string') {
|
|
207
208
|
data = JSON.parse(value);
|
|
@@ -209,7 +210,10 @@ _renderer.ipcRenderer.on(_type.IPCMessageCMD.LaunchMeeting, function (_event, va
|
|
|
209
210
|
} catch (e) {
|
|
210
211
|
console.error("windows_release Failed to parse launch options:, ".concat(JSON.stringify(e), ", typeof value: ").concat((0, _typeof2["default"])(value), ", value: ").concat(value));
|
|
211
212
|
}
|
|
212
|
-
cppSdkHelper.onLaunchMeeting(
|
|
213
|
+
cppSdkHelper.onLaunchMeeting({
|
|
214
|
+
data: data,
|
|
215
|
+
lastInitParams: lastInitParams
|
|
216
|
+
});
|
|
213
217
|
}
|
|
214
218
|
});
|
|
215
219
|
_renderer.ipcRenderer.on(_type.IPCMessageCMD.RenewUserToken, function (_event, value) {
|
package/lib/electron/until.js
CHANGED
|
@@ -54,7 +54,10 @@ var DetailErrorCode = /*#__PURE__*/function (DetailErrorCode) {
|
|
|
54
54
|
var generaErrorCode = exports.generaErrorCode = function generaErrorCode(serviceCode, uiSceneCode, detailCode) {
|
|
55
55
|
return serviceCode * 1000000 + uiSceneCode * 1000 + detailCode;
|
|
56
56
|
};
|
|
57
|
+
|
|
58
|
+
// 800010082
|
|
57
59
|
var windowHideErrorCode = exports.windowHideErrorCode = generaErrorCode(ServiceErrorCode.FcrUIScene, UISceneErrorCode.Creator, DetailErrorCode.mainWindowHidden);
|
|
60
|
+
// // 800010083
|
|
58
61
|
var closeWindowBeforeLaunchSuccessErrorCode = exports.closeWindowBeforeLaunchSuccessErrorCode = generaErrorCode(ServiceErrorCode.FcrUIScene, UISceneErrorCode.Creator, DetailErrorCode.closeWindowBeforeLaunchSuccess);
|
|
59
62
|
var meetingLaunchProcessingErrorCode = exports.meetingLaunchProcessingErrorCode = generaErrorCode(ServiceErrorCode.FcrUIScene, UISceneErrorCode.Creator, DetailErrorCode.meetingLaunchProcessing);
|
|
60
63
|
|
package/lib/index.js
CHANGED
|
@@ -47,10 +47,17 @@ require("./plugins/electron-rtc-plugin");
|
|
|
47
47
|
require("./plugins/multi-lang-plugin");
|
|
48
48
|
require("./plugins/rtm-plugin");
|
|
49
49
|
require("./plugins/web-rtc-plugin");
|
|
50
|
+
var _logger = require("./utilities/logger");
|
|
51
|
+
var _imports = require("fcr-core/lib/imports");
|
|
50
52
|
// import { configure } from 'mobx';
|
|
51
53
|
|
|
52
54
|
// configure({
|
|
53
55
|
// enforceActions: 'always',
|
|
54
56
|
// });
|
|
55
57
|
|
|
56
|
-
_dayjs["default"].extend(_duration["default"]);
|
|
58
|
+
_dayjs["default"].extend(_duration["default"]);
|
|
59
|
+
// @ts-ignore
|
|
60
|
+
window.__AgoraLogger = (0, _logger.getLogger)();
|
|
61
|
+
|
|
62
|
+
// @ts-ignore
|
|
63
|
+
window.__AgoraMutex = new _imports.Mutex();
|
|
@@ -32,5 +32,6 @@ export declare abstract class LeaveMeetingStoreBase {
|
|
|
32
32
|
setKeepConnect(value: boolean): void;
|
|
33
33
|
end(): Promise<void>;
|
|
34
34
|
release(): void;
|
|
35
|
+
private _checkIfQuitFullScreen;
|
|
35
36
|
}
|
|
36
37
|
export declare const LeaveMeetingStoreContext: import("react").Context<LeaveMeetingStoreBase>;
|
|
@@ -59,6 +59,7 @@ var _react = require("react");
|
|
|
59
59
|
var _constant = require("../../../utilities/constant");
|
|
60
60
|
var _objectManager = require("../../../object-manager");
|
|
61
61
|
var _env = require("agora-foundation/lib/utilities/env");
|
|
62
|
+
var _imports = require("fcr-core/lib/imports");
|
|
62
63
|
var _LeaveMeetingStoreBase;
|
|
63
64
|
var _initProto, _init_keepConnect, _init_canAssign, _init_loading, _showEndConfirmDialogDecs, _assignHostDecs, _setIsSelfEndMeetingDecs, _leaveDecs, _keepPhoneAudioConnectionDecs, _setCanAssignDecs, _setKeepConnectDecs, _endDecs, _ref;
|
|
64
65
|
function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
|
|
@@ -163,19 +164,22 @@ var LeaveMeetingStoreBase = exports.LeaveMeetingStoreBase = /*#__PURE__*/functio
|
|
|
163
164
|
return _regenerator["default"].wrap(function (_context) {
|
|
164
165
|
while (1) switch (_context.prev = _context.next) {
|
|
165
166
|
case 0:
|
|
167
|
+
_context.next = 1;
|
|
168
|
+
return this._checkIfQuitFullScreen();
|
|
169
|
+
case 1:
|
|
166
170
|
this.loading = true;
|
|
167
171
|
_t = this.keepConnect && this.isPstnUser;
|
|
168
172
|
if (!_t) {
|
|
169
|
-
_context.next =
|
|
173
|
+
_context.next = 2;
|
|
170
174
|
break;
|
|
171
175
|
}
|
|
172
|
-
_context.next =
|
|
176
|
+
_context.next = 2;
|
|
173
177
|
return this.keepPhoneAudioConnection();
|
|
174
|
-
case
|
|
178
|
+
case 2:
|
|
175
179
|
this.loading = false;
|
|
176
180
|
this._roomProvider.exitRoom();
|
|
177
181
|
this.resetPreventClose();
|
|
178
|
-
case
|
|
182
|
+
case 3:
|
|
179
183
|
case "end":
|
|
180
184
|
return _context.stop();
|
|
181
185
|
}
|
|
@@ -237,10 +241,13 @@ var LeaveMeetingStoreBase = exports.LeaveMeetingStoreBase = /*#__PURE__*/functio
|
|
|
237
241
|
return _regenerator["default"].wrap(function (_context3) {
|
|
238
242
|
while (1) switch (_context3.prev = _context3.next) {
|
|
239
243
|
case 0:
|
|
244
|
+
_context3.next = 1;
|
|
245
|
+
return this._checkIfQuitFullScreen();
|
|
246
|
+
case 1:
|
|
240
247
|
this._roomControl.close();
|
|
241
248
|
this._roomProvider.exitRoom();
|
|
242
249
|
this.resetPreventClose();
|
|
243
|
-
case
|
|
250
|
+
case 2:
|
|
244
251
|
case "end":
|
|
245
252
|
return _context3.stop();
|
|
246
253
|
}
|
|
@@ -254,6 +261,40 @@ var LeaveMeetingStoreBase = exports.LeaveMeetingStoreBase = /*#__PURE__*/functio
|
|
|
254
261
|
}, {
|
|
255
262
|
key: "release",
|
|
256
263
|
value: function release() {}
|
|
264
|
+
}, {
|
|
265
|
+
key: "_checkIfQuitFullScreen",
|
|
266
|
+
value: function () {
|
|
267
|
+
var _checkIfQuitFullScreen2 = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee4() {
|
|
268
|
+
var windowProvider, mainWindow;
|
|
269
|
+
return _regenerator["default"].wrap(function (_context4) {
|
|
270
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
271
|
+
case 0:
|
|
272
|
+
if (!(0, _env.isElectron)()) {
|
|
273
|
+
_context4.next = 1;
|
|
274
|
+
break;
|
|
275
|
+
}
|
|
276
|
+
windowProvider = this._objectManager.getObject(_objectManager.FcrUIObjectKeys.P_WINDOW_PROVIDER);
|
|
277
|
+
mainWindow = windowProvider.getCurrentWindow();
|
|
278
|
+
if (!mainWindow.isFullScreen()) {
|
|
279
|
+
_context4.next = 1;
|
|
280
|
+
break;
|
|
281
|
+
}
|
|
282
|
+
mainWindow.setFullScreen(false);
|
|
283
|
+
|
|
284
|
+
// 需要等待窗口退出全屏完成
|
|
285
|
+
_context4.next = 1;
|
|
286
|
+
return (0, _imports.sleep)(500);
|
|
287
|
+
case 1:
|
|
288
|
+
case "end":
|
|
289
|
+
return _context4.stop();
|
|
290
|
+
}
|
|
291
|
+
}, _callee4, this);
|
|
292
|
+
}));
|
|
293
|
+
function _checkIfQuitFullScreen() {
|
|
294
|
+
return _checkIfQuitFullScreen2.apply(this, arguments);
|
|
295
|
+
}
|
|
296
|
+
return _checkIfQuitFullScreen;
|
|
297
|
+
}()
|
|
257
298
|
}]);
|
|
258
299
|
}();
|
|
259
300
|
_LeaveMeetingStoreBase = LeaveMeetingStoreBase;
|
|
@@ -15,18 +15,6 @@ var ShareScreenSelectionDialog = exports.ShareScreenSelectionDialog = /*#__PURE_
|
|
|
15
15
|
children = _ref.children;
|
|
16
16
|
var transI18n = (0, _i18n.useI18n)();
|
|
17
17
|
var title = transI18n('fmt_screenshare_controlbar_security_list_participant_screenshare');
|
|
18
|
-
|
|
19
|
-
// const body = (
|
|
20
|
-
// <DialogContainer
|
|
21
|
-
// dialogId={dialogId}
|
|
22
|
-
// dialogKey={dialogKey}
|
|
23
|
-
// title={title}
|
|
24
|
-
// width={790}
|
|
25
|
-
// height={550}>
|
|
26
|
-
// {children}
|
|
27
|
-
// </DialogContainer>
|
|
28
|
-
// );
|
|
29
|
-
|
|
30
18
|
var body = children;
|
|
31
19
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_normalWindow.NormalWindow, {
|
|
32
20
|
title: title,
|
|
@@ -73,7 +73,6 @@ var _type = require("./type");
|
|
|
73
73
|
var _type2 = require("fcr-core/lib/type");
|
|
74
74
|
var _i18n = require("agora-ui-foundation/lib/i18n");
|
|
75
75
|
var _struct = require("../../providers/screen-share/struct");
|
|
76
|
-
var _constant = require("../../utilities/constant");
|
|
77
76
|
var _type3 = require("agora-ui-foundation/lib/components/icon/type");
|
|
78
77
|
var _ShareScreenStoreBase;
|
|
79
78
|
var _initProto, _init_isSharing, _init_displayList, _init_applicationList, _init_selectedShareItem, _init_isWhiteboardSelected, _init_isSharingWithAudio, _init_isSharingInSmoothMode, _loadSelectionListDecs, _setSelectedItemDecs, _ref;
|
|
@@ -379,7 +378,6 @@ var ShareScreenStoreBase = exports["default"] = /*#__PURE__*/function () {
|
|
|
379
378
|
captureType: captureType
|
|
380
379
|
});
|
|
381
380
|
case 6:
|
|
382
|
-
this.dialogProvider.closeDialog(_constant.FcrUIDialogKey.SHARE_SCREEN_SELECTION);
|
|
383
381
|
_context2.next = 8;
|
|
384
382
|
break;
|
|
385
383
|
case 7:
|
|
@@ -43,8 +43,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
43
43
|
});
|
|
44
44
|
exports["default"] = void 0;
|
|
45
45
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
46
|
-
require("core-js/modules/es.date.to-json.js");
|
|
47
|
-
require("core-js/modules/es.json.stringify.js");
|
|
48
46
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
49
47
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
50
48
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
@@ -66,6 +64,7 @@ var _mobx = require("mobx");
|
|
|
66
64
|
var _parameters = require("../../utilities/parameters");
|
|
67
65
|
var _type3 = require("fcr-core/lib/type");
|
|
68
66
|
var _levelConfig = require("../dialog/level-config");
|
|
67
|
+
var _imports = require("fcr-core/lib/imports");
|
|
69
68
|
var _ElectronShareScreenStore;
|
|
70
69
|
var _initProto, _handleSelectionOpenDecs, _setShareWithAudioStateDecs, _setShareInSmoothModeDecs, _ref;
|
|
71
70
|
function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); }
|
|
@@ -191,28 +190,52 @@ var ElectronShareScreenStore = exports["default"] = /*#__PURE__*/function (_Shar
|
|
|
191
190
|
}
|
|
192
191
|
}, {
|
|
193
192
|
key: "_showControlBar",
|
|
194
|
-
value: function
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
193
|
+
value: function () {
|
|
194
|
+
var _showControlBar2 = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
195
|
+
var isMultiDisplayActive, mainWindow, videoWindow;
|
|
196
|
+
return _regenerator["default"].wrap(function (_context) {
|
|
197
|
+
while (1) switch (_context.prev = _context.next) {
|
|
198
|
+
case 0:
|
|
199
|
+
this._isSharing = true;
|
|
200
|
+
this._dialogProvider.closeDialog(_constant.FcrUIDialogKey.SHARE_SCREEN_SELECTION);
|
|
201
|
+
isMultiDisplayActive = this._multiDisplayProvider.isActive;
|
|
202
|
+
mainWindow = this._windowProvider.getCurrentWindow();
|
|
203
|
+
if (isMultiDisplayActive) {
|
|
204
|
+
_context.next = 1;
|
|
205
|
+
break;
|
|
206
|
+
}
|
|
207
|
+
if (!mainWindow.isFullScreen()) {
|
|
208
|
+
_context.next = 1;
|
|
209
|
+
break;
|
|
210
|
+
}
|
|
211
|
+
mainWindow.setFullScreen(false);
|
|
212
|
+
|
|
213
|
+
// 需要等待窗口退出全屏完成
|
|
214
|
+
_context.next = 1;
|
|
215
|
+
return (0, _imports.sleep)(1000);
|
|
216
|
+
case 1:
|
|
217
|
+
videoWindow = this._windowProvider.getWindowById(_constant.FcrUIDialogKey.VIDEO_WINDOW);
|
|
218
|
+
if (!videoWindow.isVisible()) {
|
|
219
|
+
videoWindow.show();
|
|
220
|
+
}
|
|
221
|
+
videoWindow.setAlwaysOnTop(true, 'screen-saver', _levelConfig.WindowRelativeLevel.VIDEO_WINDOW_LEVEL);
|
|
222
|
+
this._ensureWindowsAreOpenAndPositioned(true, isMultiDisplayActive);
|
|
223
|
+
if (isMultiDisplayActive) {
|
|
224
|
+
this._multiDisplayProvider.moveMainWindowToIndexLeastDisplay();
|
|
225
|
+
} else {
|
|
226
|
+
mainWindow.hide();
|
|
227
|
+
}
|
|
228
|
+
case 2:
|
|
229
|
+
case "end":
|
|
230
|
+
return _context.stop();
|
|
231
|
+
}
|
|
232
|
+
}, _callee, this);
|
|
233
|
+
}));
|
|
234
|
+
function _showControlBar() {
|
|
235
|
+
return _showControlBar2.apply(this, arguments);
|
|
214
236
|
}
|
|
215
|
-
|
|
237
|
+
return _showControlBar;
|
|
238
|
+
}()
|
|
216
239
|
}, {
|
|
217
240
|
key: "_hideControlBar",
|
|
218
241
|
value: function _hideControlBar() {
|
|
@@ -235,20 +258,20 @@ var ElectronShareScreenStore = exports["default"] = /*#__PURE__*/function (_Shar
|
|
|
235
258
|
}, {
|
|
236
259
|
key: "_checkAutoStartScreenSharing",
|
|
237
260
|
value: function () {
|
|
238
|
-
var _checkAutoStartScreenSharing2 = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function
|
|
261
|
+
var _checkAutoStartScreenSharing2 = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
|
239
262
|
var needStartShare, displayList, _displayList$, bounds, id;
|
|
240
|
-
return _regenerator["default"].wrap(function (
|
|
241
|
-
while (1) switch (
|
|
263
|
+
return _regenerator["default"].wrap(function (_context2) {
|
|
264
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
242
265
|
case 0:
|
|
243
266
|
needStartShare = (0, _parameters.getStartScreenSharing)(this._sharedConfigDataSource.creatorConfig.parameters);
|
|
244
267
|
if (!needStartShare) {
|
|
245
|
-
|
|
268
|
+
_context2.next = 2;
|
|
246
269
|
break;
|
|
247
270
|
}
|
|
248
|
-
|
|
271
|
+
_context2.next = 1;
|
|
249
272
|
return this.screenShareProvider.getDisplayList();
|
|
250
273
|
case 1:
|
|
251
|
-
displayList =
|
|
274
|
+
displayList = _context2.sent;
|
|
252
275
|
if (displayList.length === 0) {
|
|
253
276
|
this.logger.error('cannot start auto screen sharing, no display found');
|
|
254
277
|
} else {
|
|
@@ -261,9 +284,9 @@ var ElectronShareScreenStore = exports["default"] = /*#__PURE__*/function (_Shar
|
|
|
261
284
|
}
|
|
262
285
|
case 2:
|
|
263
286
|
case "end":
|
|
264
|
-
return
|
|
287
|
+
return _context2.stop();
|
|
265
288
|
}
|
|
266
|
-
},
|
|
289
|
+
}, _callee2, this);
|
|
267
290
|
}));
|
|
268
291
|
function _checkAutoStartScreenSharing() {
|
|
269
292
|
return _checkAutoStartScreenSharing2.apply(this, arguments);
|
|
@@ -33,7 +33,10 @@ function usePopoverWatcher(_ref) {
|
|
|
33
33
|
mutationsList.forEach(function (mutation) {
|
|
34
34
|
if (mutation.type === 'childList') {
|
|
35
35
|
mutation.removedNodes.forEach(function (node) {
|
|
36
|
-
|
|
36
|
+
var hasPopoverNode = function hasPopoverNode(node) {
|
|
37
|
+
return node.classList.contains(popoverClassName) || node.querySelector(".".concat(popoverClassName));
|
|
38
|
+
};
|
|
39
|
+
if (isPopoverOpened && node.nodeType === Node.ELEMENT_NODE && hasPopoverNode(node)) {
|
|
37
40
|
isPopoverOpened = false;
|
|
38
41
|
resetVideoWindowSize();
|
|
39
42
|
}
|
|
@@ -496,7 +496,13 @@ var VideoWindowStore = exports["default"] = /*#__PURE__*/function () {
|
|
|
496
496
|
width: _type.DefaultVideoWindowWidth,
|
|
497
497
|
height: _type.DefaultVideoWindowSmallTypeHeight
|
|
498
498
|
};
|
|
499
|
-
|
|
499
|
+
|
|
500
|
+
// 如果是小窗模式, 则重置为 dialog 为小窗尺寸, 否则切换为小窗模式, reaction 里会更新 dialog 尺寸
|
|
501
|
+
if (_this4.videoWindowPreviewType === _type.FcrVideoWindowPreviewType.SMALL) {
|
|
502
|
+
_this4._setVideoWindowDialogSize(_type.DefaultVideoWindowWidth, _type.DefaultVideoWindowSmallTypeHeight);
|
|
503
|
+
} else {
|
|
504
|
+
_this4.setVideoWindowPreviewType(_type.FcrVideoWindowPreviewType.SMALL);
|
|
505
|
+
}
|
|
500
506
|
});
|
|
501
507
|
}
|
|
502
508
|
}]);
|
|
@@ -61,14 +61,24 @@ var View = exports.View = (0, _mobxReact.observer)(function () {
|
|
|
61
61
|
}, [isHover]);
|
|
62
62
|
(0, _react.useEffect)(function () {
|
|
63
63
|
if (divRef.current === null) return;
|
|
64
|
+
|
|
65
|
+
// 刚打开 dialog 时, divRef.current 还在主窗口的 document 中, 需要等到下一次渲染才会被移动到 dialog 的 document 中
|
|
66
|
+
if (divRef.current.ownerDocument === document) return;
|
|
64
67
|
var ownerDocument = divRef.current.ownerDocument;
|
|
65
68
|
var defaultView = ownerDocument.defaultView;
|
|
66
69
|
var body = ownerDocument.body;
|
|
67
70
|
var onResize = function onResize() {
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
71
|
+
if (defaultView) {
|
|
72
|
+
handleVideowWindowResize({
|
|
73
|
+
width: defaultView.innerWidth,
|
|
74
|
+
height: defaultView.innerHeight
|
|
75
|
+
});
|
|
76
|
+
} else {
|
|
77
|
+
handleVideowWindowResize({
|
|
78
|
+
width: body.clientWidth,
|
|
79
|
+
height: body.clientHeight
|
|
80
|
+
});
|
|
81
|
+
}
|
|
72
82
|
};
|
|
73
83
|
if (defaultView) {
|
|
74
84
|
defaultView.addEventListener('resize', onResize);
|
|
@@ -249,7 +249,7 @@ var FcrUIBrowserScreenShareStrategy = exports.FcrUIBrowserScreenShareStrategy =
|
|
|
249
249
|
});
|
|
250
250
|
screenTrack.addObserver(this._screenTrackObserver);
|
|
251
251
|
screenTrack.setCaptureParams({
|
|
252
|
-
withAudio:
|
|
252
|
+
withAudio: false,
|
|
253
253
|
dimensions: _defaultConfig.screenCaptureHighStreamEncoderConfig.dimensions,
|
|
254
254
|
frameRate: _defaultConfig.screenCaptureHighStreamEncoderConfig.frameRate,
|
|
255
255
|
bitrate: _defaultConfig.screenCaptureHighStreamEncoderConfig.bitrate
|
|
@@ -145,9 +145,6 @@ var FcrUICurrentWindowImpl = exports.FcrUICurrentWindowImpl = /*#__PURE__*/funct
|
|
|
145
145
|
}, {
|
|
146
146
|
key: "setAlwaysOnTop",
|
|
147
147
|
value: function setAlwaysOnTop(flag) {
|
|
148
|
-
// 这里目前没有地方调用,因为annotation调用了setAlwaysOnTop,并且设置了pop-up-menu
|
|
149
|
-
// 窗口在windows上设置的是pop-up-menu,看看是不是要成对出现
|
|
150
|
-
this.logger.info('windows_index setAlwaysOnTop in main-window');
|
|
151
148
|
this.browserWindow.setAlwaysOnTop(flag);
|
|
152
149
|
}
|
|
153
150
|
}, {
|
|
@@ -22,6 +22,8 @@ export declare class FcrUIWindowImpl implements FcrUIWindow, FcrUIManagedObject
|
|
|
22
22
|
private _alwaysOnTop?;
|
|
23
23
|
private _alwaysOnTopLevel?;
|
|
24
24
|
private _relativeLevel?;
|
|
25
|
+
private _visibleOnAllWorkspaces?;
|
|
26
|
+
private _visibleOnAllWorkspacesOptions?;
|
|
25
27
|
private _resizable?;
|
|
26
28
|
private _aspectRatio?;
|
|
27
29
|
private _minimumSize?;
|
|
@@ -56,6 +58,7 @@ export declare class FcrUIWindowImpl implements FcrUIWindow, FcrUIManagedObject
|
|
|
56
58
|
forward: boolean;
|
|
57
59
|
}): void;
|
|
58
60
|
setAlwaysOnTop(flag: boolean, level?: 'normal' | 'floating' | 'torn-off-menu' | 'modal-panel' | 'main-menu' | 'status' | 'pop-up-menu' | 'screen-saver', relativeLevel?: number): void;
|
|
61
|
+
setVisibleOnAllWorkspaces(visible: boolean, options?: Electron.VisibleOnAllWorkspacesOptions): void;
|
|
59
62
|
setTitle(title: string): void;
|
|
60
63
|
getTitle(): string;
|
|
61
64
|
maximize(): void;
|