fcr-ui-scene 3.2.0 → 3.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (219) hide show
  1. package/installer/icons/favicon.ico +0 -0
  2. package/installer/icons/favicon.png +0 -0
  3. package/installer/mac/entitlements.mac.plist +16 -0
  4. package/lib/common/device-store.d.ts +1 -1
  5. package/lib/common/device-store.js +11 -3
  6. package/lib/common/event-store.d.ts +17 -1
  7. package/lib/common/event-store.js +38 -5
  8. package/lib/common/security-store.d.ts +14 -4
  9. package/lib/common/security-store.js +149 -30
  10. package/lib/electron/bootstrap-dev.d.ts +1 -0
  11. package/lib/electron/bootstrap-dev.js +51 -0
  12. package/lib/electron/bootstrap-sdk.d.ts +1 -0
  13. package/lib/electron/bootstrap-sdk.js +56 -0
  14. package/lib/electron/bootstrap.d.ts +1 -0
  15. package/lib/electron/bootstrap.js +56 -0
  16. package/lib/electron/default-options.js +1 -1
  17. package/lib/electron/dev.d.ts +1 -0
  18. package/lib/electron/dev.js +51 -0
  19. package/lib/electron/injections.d.ts +1 -1
  20. package/lib/electron/injections.js +3 -6
  21. package/lib/electron/main.js +4 -16
  22. package/lib/electron/plugins/meeting-state.d.ts +2 -0
  23. package/lib/electron/plugins/meeting-state.js +39 -0
  24. package/lib/electron/preload.js +1 -1
  25. package/lib/fragments/control-bar/control-bar-store.d.ts +34 -1
  26. package/lib/fragments/control-bar/control-bar-store.js +371 -79
  27. package/lib/fragments/control-bar/device/index.js +5 -3
  28. package/lib/fragments/control-bar/index.css +15 -10
  29. package/lib/fragments/control-bar/index.js +18 -0
  30. package/lib/fragments/control-bar/meeting-details/meeting-detail.css +109 -0
  31. package/lib/fragments/control-bar/meeting-details/meeting-details-portal.d.ts +3 -0
  32. package/lib/fragments/control-bar/meeting-details/meeting-details-portal.js +60 -0
  33. package/lib/fragments/control-bar/meeting-details/meeting-details.d.ts +2 -0
  34. package/lib/fragments/control-bar/meeting-details/meeting-details.js +179 -0
  35. package/lib/fragments/control-bar/more-actions/index.css +53 -0
  36. package/lib/fragments/control-bar/more-actions/index.js +72 -37
  37. package/lib/fragments/control-bar/security-content/index.css +10 -0
  38. package/lib/fragments/control-bar/security-content/index.js +40 -18
  39. package/lib/fragments/control-bar/view.js +8 -2
  40. package/lib/login-confirm-dialog.d.ts +12 -0
  41. package/lib/login-confirm-dialog.js +80 -0
  42. package/lib/modules/action-bar/action-bar-collapes-items.js +5 -5
  43. package/lib/modules/action-bar/chat/index.js +5 -5
  44. package/lib/modules/action-bar/device/index.css +7 -2
  45. package/lib/modules/action-bar/device/index.js +4 -4
  46. package/lib/modules/action-bar/index.css +59 -12
  47. package/lib/modules/action-bar/index.d.ts +3 -2
  48. package/lib/modules/action-bar/index.dev.js +1 -1
  49. package/lib/modules/action-bar/index.js +21 -0
  50. package/lib/modules/action-bar/leave/assign-host.d.ts +3 -0
  51. package/lib/modules/action-bar/leave/assign-host.js +2 -4
  52. package/lib/modules/action-bar/leave/index.js +29 -6
  53. package/lib/modules/action-bar/leave/leave-meeting.d.ts +11 -0
  54. package/lib/modules/action-bar/leave/leave-meeting.js +25 -16
  55. package/lib/modules/action-bar/more/poppover-content.js +4 -4
  56. package/lib/modules/action-bar/participants/index.css +12 -0
  57. package/lib/modules/action-bar/participants/index.js +21 -14
  58. package/lib/modules/action-bar/screen-share/index.js +5 -1
  59. package/lib/modules/action-bar/screen-share/submenu.js +16 -22
  60. package/lib/modules/action-bar/security/drop-menu.js +90 -13
  61. package/lib/modules/action-bar/store.d.ts +38 -6
  62. package/lib/modules/action-bar/store.js +487 -95
  63. package/lib/modules/action-bar/view.js +65 -42
  64. package/lib/modules/chat/chat-bar/index.js +39 -27
  65. package/lib/modules/chat/chat-select/index.css +14 -4
  66. package/lib/modules/chat/chat.d.ts +1 -2
  67. package/lib/modules/chat/chat.js +184 -105
  68. package/lib/modules/chat/index.css +49 -0
  69. package/lib/modules/chat/index.d.ts +2 -2
  70. package/lib/modules/chat/index.dev.js +1 -1
  71. package/lib/modules/chat/index.js +13 -8
  72. package/lib/modules/chat/message-list.js +59 -48
  73. package/lib/modules/chat/store.d.ts +48 -2
  74. package/lib/modules/chat/store.js +258 -45
  75. package/lib/modules/connection-gateway/index.d.ts +2 -1
  76. package/lib/modules/connection-gateway/store.d.ts +6 -3
  77. package/lib/modules/connection-gateway/store.js +5 -1
  78. package/lib/modules/device-pretest/audio-preview/speaker-control.js +1 -1
  79. package/lib/modules/device-pretest/index.css +0 -4
  80. package/lib/modules/device-pretest/settings/beauty.js +17 -6
  81. package/lib/modules/device-pretest/store.js +7 -11
  82. package/lib/modules/dialog/components/chat/electron.js +2 -1
  83. package/lib/modules/dialog/components/confirm/electron.js +5 -3
  84. package/lib/modules/dialog/components/connection-gateway/electron.js +3 -1
  85. package/lib/modules/dialog/components/connection-gateway/index.css +0 -2
  86. package/lib/modules/dialog/components/device-setting/electron.js +3 -1
  87. package/lib/modules/dialog/components/device-setting/index.css +0 -1
  88. package/lib/modules/dialog/components/operation-waiting-room/electron.d.ts +5 -0
  89. package/lib/modules/dialog/components/operation-waiting-room/electron.js +89 -0
  90. package/lib/modules/dialog/components/operation-waiting-room/index.css +44 -0
  91. package/lib/modules/dialog/components/operation-waiting-room/index.d.ts +5 -0
  92. package/lib/modules/dialog/components/operation-waiting-room/index.js +156 -0
  93. package/lib/modules/dialog/components/participant/electron.js +2 -1
  94. package/lib/modules/dialog/components/remove-admit-waiting-room/electron.d.ts +5 -0
  95. package/lib/modules/dialog/components/remove-admit-waiting-room/electron.js +89 -0
  96. package/lib/modules/dialog/components/remove-admit-waiting-room/index.css +50 -0
  97. package/lib/modules/dialog/components/remove-admit-waiting-room/index.d.ts +5 -0
  98. package/lib/modules/dialog/components/remove-admit-waiting-room/index.js +90 -0
  99. package/lib/modules/dialog/components/whiteboard/index.js +2 -1
  100. package/lib/modules/dialog/dialogs.js +17 -13
  101. package/lib/modules/dialog/index.css +2 -0
  102. package/lib/modules/dialog/store.d.ts +4 -0
  103. package/lib/modules/dialog/store.js +16 -2
  104. package/lib/modules/event-notification/context.d.ts +2 -0
  105. package/lib/modules/event-notification/context.js +9 -0
  106. package/lib/modules/event-notification/index.css +58 -0
  107. package/lib/modules/event-notification/index.d.ts +13 -0
  108. package/lib/modules/event-notification/index.js +48 -0
  109. package/lib/modules/event-notification/store.d.ts +17 -0
  110. package/lib/modules/event-notification/store.js +133 -0
  111. package/lib/modules/event-notification/view.d.ts +5 -0
  112. package/lib/modules/event-notification/view.js +114 -0
  113. package/lib/modules/invite/index.css +4 -4
  114. package/lib/modules/invite/pstn-invite.js +1 -0
  115. package/lib/modules/layout/components/Gallery.js +7 -1
  116. package/lib/modules/layout/components/Layout.js +82 -57
  117. package/lib/modules/layout/components/index.css +33 -6
  118. package/lib/modules/layout/index.css +30 -0
  119. package/lib/modules/layout/member-window/index.js +9 -3
  120. package/lib/modules/layout/store.d.ts +19 -2
  121. package/lib/modules/layout/store.js +177 -70
  122. package/lib/modules/layout/video-window-datasource.d.ts +1 -1
  123. package/lib/modules/layout/video-window-datasource.js +1 -1
  124. package/lib/modules/live-streaming/index.dev.js +1 -1
  125. package/lib/modules/participant/attendee/index.d.ts +12 -3
  126. package/lib/modules/participant/attendee/index.js +132 -30
  127. package/lib/modules/participant/index.css +20 -0
  128. package/lib/modules/participant/index.d.ts +5 -2
  129. package/lib/modules/participant/index.dev.js +1 -1
  130. package/lib/modules/participant/index.js +27 -0
  131. package/lib/modules/participant/room-control-drop-menu/index.css +37 -0
  132. package/lib/modules/participant/store.d.ts +30 -5
  133. package/lib/modules/participant/store.js +347 -74
  134. package/lib/modules/participant/view.js +133 -34
  135. package/lib/modules/setting/index.css +1 -5
  136. package/lib/modules/setting/index.dev.js +1 -1
  137. package/lib/modules/setting/store.d.ts +2 -2
  138. package/lib/modules/setting/store.js +3 -8
  139. package/lib/modules/setting/translate-settings/translate-settings.js +1 -1
  140. package/lib/modules/setting/video-settings/index.css +9 -6
  141. package/lib/modules/share-screen/index.d.ts +2 -0
  142. package/lib/modules/share-screen/index.dev.js +3 -2
  143. package/lib/modules/share-screen/selection/index.css +2 -0
  144. package/lib/modules/share-screen/store.d.ts +6 -3
  145. package/lib/modules/share-screen/store.js +170 -129
  146. package/lib/modules/state-bar/index.css +2 -2
  147. package/lib/modules/state-bar/index.d.ts +2 -2
  148. package/lib/modules/state-bar/index.dev.js +1 -1
  149. package/lib/modules/state-bar/meeting-detail.css +6 -4
  150. package/lib/modules/state-bar/meeting-details.js +29 -3
  151. package/lib/modules/state-bar/meeting-network-state.css +14 -3
  152. package/lib/modules/state-bar/meeting-network-state.js +10 -4
  153. package/lib/modules/state-bar/recording.js +3 -5
  154. package/lib/modules/state-bar/store.d.ts +4 -2
  155. package/lib/modules/state-bar/store.js +18 -3
  156. package/lib/modules/state-bar/view.js +1 -6
  157. package/lib/modules/video-window/index.css +1 -0
  158. package/lib/modules/video-window/store.d.ts +2 -2
  159. package/lib/modules/video-window/store.js +14 -11
  160. package/lib/modules/waiting-room-layout/context.d.ts +2 -0
  161. package/lib/modules/waiting-room-layout/context.js +9 -0
  162. package/lib/modules/waiting-room-layout/index.css +71 -0
  163. package/lib/modules/waiting-room-layout/index.d.ts +8 -0
  164. package/lib/modules/waiting-room-layout/index.js +47 -0
  165. package/lib/modules/waiting-room-layout/store.d.ts +30 -0
  166. package/lib/modules/waiting-room-layout/store.js +189 -0
  167. package/lib/modules/waiting-room-layout/type.d.ts +0 -0
  168. package/lib/modules/waiting-room-layout/type.js +1 -0
  169. package/lib/modules/waiting-room-layout/view.d.ts +3 -0
  170. package/lib/modules/waiting-room-layout/view.js +67 -0
  171. package/lib/modules/whiteboard/app.js +0 -6
  172. package/lib/modules/whiteboard/components/control-bar/index.css +3 -0
  173. package/lib/modules/whiteboard/components/multi-window/index.js +6 -1
  174. package/lib/modules/whiteboard/components/progress/electron.js +2 -1
  175. package/lib/modules/whiteboard/components/switch-theme/index.css +4 -0
  176. package/lib/modules/whiteboard/components/switch-theme/index.d.ts +2 -1
  177. package/lib/modules/whiteboard/components/switch-theme/index.js +20 -15
  178. package/lib/modules/whiteboard/components/switch-theme/item.d.ts +1 -0
  179. package/lib/modules/whiteboard/components/switch-theme/item.js +9 -2
  180. package/lib/modules/whiteboard/components/toolbar/components/shape-picker.js +14 -10
  181. package/lib/modules/whiteboard/components/toolbar/store.d.ts +1 -0
  182. package/lib/modules/whiteboard/components/toolbar/store.js +3 -0
  183. package/lib/modules/whiteboard/context.d.ts +4 -0
  184. package/lib/modules/whiteboard/context.js +4 -2
  185. package/lib/modules/whiteboard/index.js +22 -6
  186. package/lib/plugins/browser-runtime-plugin.js +1 -1
  187. package/lib/plugins/module-dev-plugin.js +8 -6
  188. package/lib/runtime.d.ts +1 -1
  189. package/lib/translations/enUS.d.ts +449 -6
  190. package/lib/translations/enUS.js +485 -32
  191. package/lib/translations/zhCN.d.ts +447 -6
  192. package/lib/translations/zhCN.js +468 -17
  193. package/lib/type.d.ts +6 -2
  194. package/lib/ui-manager.d.ts +7 -3
  195. package/lib/ui-manager.js +576 -139
  196. package/lib/ui-scene.d.ts +1 -0
  197. package/lib/ui-scene.js +26 -21
  198. package/lib/utilities/constant.d.ts +43 -4
  199. package/lib/utilities/constant.js +41 -1
  200. package/lib/utilities/parameters.js +2 -2
  201. package/lib/utilities/renderer.d.ts +1 -0
  202. package/lib/utilities/renderer.js +6 -2
  203. package/package.json +14 -14
  204. package/public/assets/fcr_defaultpage.png +0 -0
  205. package/public/assets/login_confirm.png +0 -0
  206. package/public/index.html +29 -11
  207. package/dist/132.js +0 -2
  208. package/dist/132.js.LICENSE.txt +0 -311
  209. package/dist/651.js +0 -2
  210. package/dist/651.js.LICENSE.txt +0 -1
  211. package/dist/73.js +0 -1
  212. package/dist/index.html +0 -13
  213. package/dist/main.da7c203ab32d15742cfe.css +0 -11760
  214. package/dist/main.js +0 -2
  215. package/dist/main.js.LICENSE.txt +0 -254
  216. package/dist/worker-entry.worker.js.LICENSE.txt +0 -13
  217. package/lib/modules/device-pretest/settings/index.css +0 -15
  218. package/lib/modules/participant/attendee/participants-more-action.d.ts +0 -18
  219. package/lib/modules/participant/attendee/participants-more-action.js +0 -278
Binary file
Binary file
@@ -0,0 +1,16 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+ <plist version="1.0">
4
+ <dict>
5
+ <key>com.apple.security.cs.allow-jit</key>
6
+ <true/>
7
+ <key>com.apple.security.cs.allow-unsigned-executable-memory</key>
8
+ <true/>
9
+ <key>com.apple.security.cs.allow-dyld-environment-variables</key>
10
+ <true/>
11
+ <key>com.apple.security.device.audio-input</key>
12
+ <true/>
13
+ <key>com.apple.security.device.camera</key>
14
+ <true/>
15
+ </dict>
16
+ </plist>
@@ -8,7 +8,7 @@ export interface FcrDeviceObserver {
8
8
  onCameraChanged?(cameraId: string): void;
9
9
  onMicrophoneChanged?(microphoneId: string): void;
10
10
  onSpeakerChanged?(speakerId: string): void;
11
- onCameraListUpdated?(cameraList: FcrDeviceInfo[], currentDeviceExist: boolean): void;
11
+ onCameraListUpdated?(cameraList: FcrDeviceInfo[]): void;
12
12
  onMicrophoneListUpdated?(microphoneList: FcrDeviceInfo[]): void;
13
13
  onSpeakerListUpdated?(speakerList: FcrDeviceInfo[]): void;
14
14
  }
@@ -1214,7 +1214,7 @@ var FcrDeviceStore = exports.FcrDeviceStore = /*#__PURE__*/function () {
1214
1214
  value: function () {
1215
1215
  var _handleCameraListUpdated2 = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee6() {
1216
1216
  var _this12 = this;
1217
- var currentDeviceExist, cameraEnabled, deviceId;
1217
+ var currentDeviceExist, cameraEnabled, deviceId, _deviceId;
1218
1218
  return _regenerator["default"].wrap(function _callee6$(_context6) {
1219
1219
  while (1) switch (_context6.prev = _context6.next) {
1220
1220
  case 0:
@@ -1242,8 +1242,16 @@ var FcrDeviceStore = exports.FcrDeviceStore = /*#__PURE__*/function () {
1242
1242
  }
1243
1243
  }
1244
1244
  }
1245
- this._observable.notifyObservers('onCameraListUpdated', this.cameraList, currentDeviceExist);
1246
- case 6:
1245
+
1246
+ // select the first camera in the list as default
1247
+ if (!currentDeviceExist) {
1248
+ if (this.cameraList.length > 0) {
1249
+ _deviceId = this.cameraList[0].deviceId;
1250
+ this.setCameraId(_deviceId);
1251
+ }
1252
+ }
1253
+ this._observable.notifyObservers('onCameraListUpdated', this.cameraList);
1254
+ case 7:
1247
1255
  case "end":
1248
1256
  return _context6.stop();
1249
1257
  }
@@ -7,6 +7,7 @@ import { FcrIconType } from 'agora-ui-foundation/lib/components/icon/type';
7
7
  import { ButtonType } from 'agora-ui-foundation/lib/components/button';
8
8
  import { ConfirmContentProps } from 'agora-ui-foundation/lib/components/confirm-content';
9
9
  import { FcrChatRoomReceiveBaseMessage } from 'agora-edu-core/lib/room-control/chatroom-control/type';
10
+ import React from 'react';
10
11
  export interface FcrUIDialogParams {
11
12
  dialogKey: DialogKey;
12
13
  dialogId: string;
@@ -20,6 +21,16 @@ export interface FcrUIToastParams {
20
21
  size?: ToastSize;
21
22
  customRootClass?: string;
22
23
  }
24
+ export declare enum NotificationContentType {
25
+ WAITING_ROOM = "WAITING_ROOM"
26
+ }
27
+ export interface FcrNotificationParams {
28
+ duration?: number;
29
+ placement: 'top' | 'topLeft' | 'topRight' | 'bottom' | 'bottomLeft' | 'bottomRight';
30
+ type: NotificationContentType;
31
+ onOk?: () => void;
32
+ onClose?: () => void;
33
+ }
23
34
  export interface FcrUIConfirmDialogParams {
24
35
  title: string;
25
36
  content: React.ReactNode;
@@ -44,6 +55,7 @@ export interface FcrUIUpdateAsideParams {
44
55
  export interface FcrUINewChatMessagesParams {
45
56
  latestMessage: FcrChatRoomReceiveBaseMessage;
46
57
  count: number;
58
+ type: string;
47
59
  }
48
60
  export interface FcrUIToggleLayoutParams {
49
61
  layout: 'speaker' | 'gallery';
@@ -82,6 +94,8 @@ export declare class FcrUIEventStore {
82
94
  private _observable;
83
95
  sendEvent(action: UIAction, payload?: unknown): void;
84
96
  showToast(params: FcrUIToastParams): void;
97
+ showNotification(params: FcrNotificationParams): void;
98
+ closeNotification(key: NotificationContentType): void;
85
99
  showChatToast(params: FcrUIToastParams): void;
86
100
  openConfirmDialog(params: ConfirmContentProps & {
87
101
  height?: number;
@@ -106,8 +120,10 @@ export declare class FcrUIEventStore {
106
120
  stopLiveStreaming(): void;
107
121
  openInviteDialog(): void;
108
122
  closeInviteDialog(): void;
123
+ closeWaitingRoomDialog(): void;
124
+ closeRemoveAdmitWaitingRoomDialog(dialogKey: DialogKey): void;
109
125
  closeConfirmDialog(): void;
110
- exitRoom(reason: FcrUIExitReason): void;
126
+ exitRoom(reason: FcrUIExitReason, roomType: number): void;
111
127
  cloudRecording(action: FcrCloudRecordingParams['action']): void;
112
128
  notifySpotlightStreamChanged(params: FcrSpotlightStreamChangedParams): void;
113
129
  notifyCustomSettingsChanged(settings: CustomSetting): void;
@@ -20,7 +20,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
20
20
  Object.defineProperty(exports, "__esModule", {
21
21
  value: true
22
22
  });
23
- exports.FcrUIEventStore = void 0;
23
+ exports.NotificationContentType = exports.FcrUIEventStore = void 0;
24
24
  require("core-js/modules/es.array.concat.js");
25
25
  require("core-js/modules/es.date.now.js");
26
26
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
@@ -32,6 +32,10 @@ var _logger = require("agora-foundation/lib/logger");
32
32
  var _chat = require("../modules/chat");
33
33
  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; }
34
34
  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; }
35
+ var NotificationContentType = exports.NotificationContentType = /*#__PURE__*/function (NotificationContentType) {
36
+ NotificationContentType["WAITING_ROOM"] = "WAITING_ROOM";
37
+ return NotificationContentType;
38
+ }({});
35
39
  var FcrUIEventStore = exports.FcrUIEventStore = /*#__PURE__*/function () {
36
40
  function FcrUIEventStore() {
37
41
  (0, _classCallCheck2["default"])(this, FcrUIEventStore);
@@ -41,14 +45,32 @@ var FcrUIEventStore = exports.FcrUIEventStore = /*#__PURE__*/function () {
41
45
  return (0, _createClass2["default"])(FcrUIEventStore, [{
42
46
  key: "sendEvent",
43
47
  value: function sendEvent(action, payload) {
44
- this.logger.debug('[FcrUIEventStore] sendEvent', _constant.UIAction[action], payload);
45
- this._observable.notifyObservers('onEvent', action, payload);
48
+ var start = Date.now();
49
+ try {
50
+ this._observable.notifyObservers('onEvent', action, payload);
51
+ } finally {
52
+ var end = Date.now();
53
+ var time = end - start;
54
+ if (time >= 10) {
55
+ this.logger.warn("[FcrUIEventStore] sendEvent ".concat(_constant.UIAction[action], ", payload: ").concat(payload, ", handlers took: ").concat(end - start, "ms"));
56
+ }
57
+ }
46
58
  }
47
59
  }, {
48
60
  key: "showToast",
49
61
  value: function showToast(params) {
50
62
  this.sendEvent(_constant.UIAction.SHOW_TOAST, params);
51
63
  }
64
+ }, {
65
+ key: "showNotification",
66
+ value: function showNotification(params) {
67
+ this.sendEvent(_constant.UIAction.SHOW_NOTIFICATION, params);
68
+ }
69
+ }, {
70
+ key: "closeNotification",
71
+ value: function closeNotification(key) {
72
+ this.sendEvent(_constant.UIAction.COLSE_NOTIFICATION, key);
73
+ }
52
74
  }, {
53
75
  key: "showChatToast",
54
76
  value: function showChatToast(params) {
@@ -184,6 +206,16 @@ var FcrUIEventStore = exports.FcrUIEventStore = /*#__PURE__*/function () {
184
206
  value: function closeInviteDialog() {
185
207
  this.sendEvent(_constant.UIAction.CLOSE_INVITE_DIALOG);
186
208
  }
209
+ }, {
210
+ key: "closeWaitingRoomDialog",
211
+ value: function closeWaitingRoomDialog() {
212
+ this.sendEvent(_constant.UIAction.CLOSE_WAITING_ROOM_DIALOG);
213
+ }
214
+ }, {
215
+ key: "closeRemoveAdmitWaitingRoomDialog",
216
+ value: function closeRemoveAdmitWaitingRoomDialog(dialogKey) {
217
+ this.sendEvent(_constant.UIAction.CLOSE_REMOVE_ADMIT_WAITING_ROOM_DIALOG, dialogKey);
218
+ }
187
219
  }, {
188
220
  key: "closeConfirmDialog",
189
221
  value: function closeConfirmDialog() {
@@ -191,9 +223,10 @@ var FcrUIEventStore = exports.FcrUIEventStore = /*#__PURE__*/function () {
191
223
  }
192
224
  }, {
193
225
  key: "exitRoom",
194
- value: function exitRoom(reason) {
226
+ value: function exitRoom(reason, roomType) {
195
227
  this.sendEvent(_constant.UIAction.EXIT_ROOM, {
196
- reason: reason
228
+ reason: reason,
229
+ roomType: roomType
197
230
  });
198
231
  }
199
232
  }, {
@@ -1,9 +1,9 @@
1
1
  import { FcrPrivilegeControl, FcrStreamControl, FcrUserControl } from 'agora-edu-core';
2
- import { FcrUserRole, FcrUserInfo } from 'agora-edu-core/lib/type';
2
+ import { FcrUserRole, FcrUserInfo, FcrLineType } from 'agora-edu-core/lib/type';
3
3
  import { FcrUIEventStore } from './event-store';
4
4
  import { FcrSharePermissionState } from 'agora-edu-core/lib/room-control/whiteboard-control/enums';
5
5
  import { FcrRoomSessionControl } from 'agora-edu-core/lib/room-control/room-session/type';
6
- import { FcrPermissionAction, FcrPermissionInfo, FcrPrivilegeUserRole, FcrSecurityInfo, FcrSecuritySendChatPayload, FcrSecuritySharePayload, FcrSecurityWriteBoardPayload } from 'agora-edu-core/lib/room-control/privilege-control/type';
6
+ import { FcrPermissionAction, FcrPermissionInfo, FcrPrivilegeUserRole, FcrSecurityInfo, FcrSecuritySendChatPayload } from 'agora-edu-core/lib/room-control/privilege-control/type';
7
7
  export type FcrSecuritySendChatOriginalPayload = {
8
8
  public: 0 | 1;
9
9
  private: {
@@ -20,6 +20,7 @@ export declare class FcrSecurityStore {
20
20
  private _uiEventStore;
21
21
  protected logger: import("agora-foundation/lib/logger").Logger;
22
22
  private _disposers;
23
+ private _prevWaterMarkEnable;
23
24
  accessor securityInfos: FcrSecurityInfo[];
24
25
  accessor permissionInfos: FcrPermissionInfo[] | undefined;
25
26
  accessor privilegeOperator: FcrUserInfo | undefined;
@@ -29,6 +30,7 @@ export declare class FcrSecurityStore {
29
30
  get localUser(): FcrUserInfo;
30
31
  allowChangeSelfName: () => boolean;
31
32
  allowChat: () => boolean;
33
+ getWaterMarkContent: () => string;
32
34
  convertSendChatPayload: (payload: FcrSecuritySendChatOriginalPayload) => FcrSecuritySendChatPayload;
33
35
  allowedAllChat: () => boolean | undefined;
34
36
  allowedPublicChatAndDisallowedPrivateChat: () => boolean | undefined;
@@ -42,6 +44,8 @@ export declare class FcrSecurityStore {
42
44
  allowUnmuteSelfAudio: () => boolean;
43
45
  isLockRoomEnabled: () => boolean;
44
46
  isWaitingRoomEnabled: () => boolean;
47
+ isWaterMarkEnabled: () => boolean;
48
+ hasWaitingRoomPermission: (role?: FcrPrivilegeUserRole | FcrUserRole) => boolean;
45
49
  hasMutePermission: (targetRole: FcrPrivilegeUserRole | FcrUserRole) => boolean;
46
50
  hasUnmutePermission: (targetRole: FcrPrivilegeUserRole | FcrUserRole) => boolean;
47
51
  hasRequestStartAudioPermission: (targetRole: FcrPrivilegeUserRole | FcrUserRole) => boolean;
@@ -58,6 +62,7 @@ export declare class FcrSecurityStore {
58
62
  hasCallSplitPermission(): boolean;
59
63
  hasStartScreenSharePermission: () => boolean;
60
64
  hasChatSendPublicPermission: () => boolean;
65
+ hasChatSendPublicPermissionByTargetRole: (targetRole: FcrPrivilegeUserRole | FcrUserRole) => boolean;
61
66
  hasPermissionToSendPrivateMessage: (targetRole: FcrPrivilegeUserRole | FcrUserRole) => boolean;
62
67
  hasPermissionToControlAllowSendAll: () => boolean;
63
68
  hasPermissionToControlDisallowSendAll: () => boolean;
@@ -74,6 +79,8 @@ export declare class FcrSecurityStore {
74
79
  hasEnableJoinWithAudioPermission: () => boolean;
75
80
  hasEnableStartScreenSharePermission: () => boolean;
76
81
  hasLockRoomPermission: () => boolean;
82
+ hasWatermarkEnablePermission: () => boolean;
83
+ hasWatermarkDisablePermission: () => boolean;
77
84
  hasEndRoomPermission(): boolean;
78
85
  hasAssignHostBeforeLeavingPermission(role: FcrPrivilegeUserRole | FcrUserRole): boolean;
79
86
  hasStartBoardPermission(): boolean;
@@ -84,9 +91,11 @@ export declare class FcrSecurityStore {
84
91
  hasAllowWriteBoardPermission(): boolean;
85
92
  hasDisallowWriteBoardPermission(): boolean;
86
93
  hasAllowScreenShareAndBoardPermission(): boolean;
94
+ hasAllowWaterMarkPermission(): boolean;
95
+ isMulti: () => boolean;
87
96
  getAllowedOperations(targetUserRole: FcrUserRole, isSelf: boolean): string[];
88
- allowShare(state: FcrSharePermissionState, payload: FcrSecuritySharePayload): Promise<void>;
89
- setAllowWriteBoard(state: FcrSharePermissionState, payload: FcrSecurityWriteBoardPayload): Promise<void>;
97
+ allowShare(state: FcrSharePermissionState): Promise<void>;
98
+ setAllowWriteBoard(state: FcrSharePermissionState): Promise<void>;
90
99
  muteAll: () => void;
91
100
  unmuteAll: () => void;
92
101
  setLockRoomEnabled: (enable: boolean) => void;
@@ -110,4 +119,5 @@ export declare class FcrSecurityStore {
110
119
  private _handleProcessEvent;
111
120
  private _addReactions;
112
121
  private _removeReactions;
122
+ setAllowWaterMark(state: boolean, lineType?: FcrLineType): Promise<void>;
113
123
  }
@@ -39,6 +39,7 @@ Object.defineProperty(exports, "__esModule", {
39
39
  });
40
40
  exports.FcrSecurityStore = void 0;
41
41
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
42
+ require("core-js/modules/es.array.concat.js");
42
43
  require("core-js/modules/es.array.find.js");
43
44
  require("core-js/modules/es.array.for-each.js");
44
45
  require("core-js/modules/es.array.includes.js");
@@ -127,6 +128,9 @@ var FcrSecurityStore = exports.FcrSecurityStore = /*#__PURE__*/function () {
127
128
  });
128
129
  return !!(info !== null && info !== void 0 && info.enable);
129
130
  }));
131
+ (0, _defineProperty2["default"])(this, "getWaterMarkContent", function () {
132
+ return _this._userControl.getWaterMarkContent() || 'Watermark';
133
+ });
130
134
  (0, _defineProperty2["default"])(this, "convertSendChatPayload", function (payload) {
131
135
  return {
132
136
  "public": !!payload["public"],
@@ -194,7 +198,7 @@ var FcrSecurityStore = exports.FcrSecurityStore = /*#__PURE__*/function () {
194
198
  return (info === null || info === void 0 ? void 0 : info.action) === _type4.FcrSecurityAction.Sharing;
195
199
  });
196
200
  var shareState = info === null || info === void 0 || (_info$info = info.info) === null || _info$info === void 0 ? void 0 : _info$info.payload;
197
- var screenShareState = shareState.screen === _enums.FcrSharePermissionState.ON;
201
+ var screenShareState = (shareState === null || shareState === void 0 ? void 0 : shareState.screen) === _enums.FcrSharePermissionState.ON;
198
202
  return screenShareState;
199
203
  }));
200
204
  (0, _defineProperty2["default"])(this, "allowBoardWrite", (0, _mobxUtils.computedFn)(function () {
@@ -204,7 +208,7 @@ var FcrSecurityStore = exports.FcrSecurityStore = /*#__PURE__*/function () {
204
208
  return (info === null || info === void 0 ? void 0 : info.action) === _type4.FcrSecurityAction.Sharing;
205
209
  });
206
210
  var shareState = info === null || info === void 0 || (_info$info2 = info.info) === null || _info$info2 === void 0 ? void 0 : _info$info2.payload;
207
- var boardWriteState = ((_shareState$board = shareState.board) === null || _shareState$board === void 0 ? void 0 : _shareState$board.write) === _enums.FcrSharePermissionState.ON;
211
+ var boardWriteState = (shareState === null || shareState === void 0 || (_shareState$board = shareState.board) === null || _shareState$board === void 0 ? void 0 : _shareState$board.write) === _enums.FcrSharePermissionState.ON;
208
212
  return boardWriteState;
209
213
  }));
210
214
  (0, _defineProperty2["default"])(this, "allowUnmuteSelfVideo", (0, _mobxUtils.computedFn)(function () {
@@ -235,6 +239,17 @@ var FcrSecurityStore = exports.FcrSecurityStore = /*#__PURE__*/function () {
235
239
  });
236
240
  return !!(info !== null && info !== void 0 && info.enable);
237
241
  }));
242
+ (0, _defineProperty2["default"])(this, "isWaterMarkEnabled", (0, _mobxUtils.computedFn)(function () {
243
+ var info = _this.securityInfos.find(function (_ref16) {
244
+ var info = _ref16.info;
245
+ return (info === null || info === void 0 ? void 0 : info.action) === _type4.FcrSecurityAction.WaterMark;
246
+ });
247
+ return !!(info !== null && info !== void 0 && info.enable);
248
+ }));
249
+ (0, _defineProperty2["default"])(this, "hasWaitingRoomPermission", function () {
250
+ var role = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _type4.FcrPrivilegeUserRole.PARTICIPANT;
251
+ return _this._hasPermission(_type4.FcrPermissionAction.WaitingRoomOpen, role);
252
+ });
238
253
  (0, _defineProperty2["default"])(this, "hasMutePermission", function (targetRole) {
239
254
  return _this._hasPermission(_type4.FcrPermissionAction.StreamMuteAudio, targetRole);
240
255
  });
@@ -277,6 +292,9 @@ var FcrSecurityStore = exports.FcrSecurityStore = /*#__PURE__*/function () {
277
292
  (0, _defineProperty2["default"])(this, "hasChatSendPublicPermission", function () {
278
293
  return _this._hasPermission(_type4.FcrPermissionAction.ChatSendPublic, _type4.FcrPrivilegeUserRole.SELF);
279
294
  });
295
+ (0, _defineProperty2["default"])(this, "hasChatSendPublicPermissionByTargetRole", function (targetRole) {
296
+ return _this._hasPermission(_type4.FcrPermissionAction.ChatSendPublic, targetRole);
297
+ });
280
298
  // 是否有权限发送私信息
281
299
  (0, _defineProperty2["default"])(this, "hasPermissionToSendPrivateMessage", function (targetRole) {
282
300
  return _this._hasPermission(_type4.FcrPermissionAction.ChatSendPrivate, targetRole);
@@ -327,6 +345,20 @@ var FcrSecurityStore = exports.FcrSecurityStore = /*#__PURE__*/function () {
327
345
  (0, _defineProperty2["default"])(this, "hasLockRoomPermission", function () {
328
346
  return _this._hasPermission(_type4.FcrPermissionAction.RoomLock, _type4.FcrPrivilegeUserRole.PARTICIPANT);
329
347
  });
348
+ (0, _defineProperty2["default"])(this, "hasWatermarkEnablePermission", function () {
349
+ return _this._hasPermission(_type4.FcrPermissionAction.RoomEnableWatermark, _type4.FcrPrivilegeUserRole.PARTICIPANT);
350
+ });
351
+ (0, _defineProperty2["default"])(this, "hasWatermarkDisablePermission", function () {
352
+ return _this._hasPermission(_type4.FcrPermissionAction.RoomDisableWatermark, _type4.FcrPrivilegeUserRole.PARTICIPANT);
353
+ });
354
+ (0, _defineProperty2["default"])(this, "isMulti", (0, _mobxUtils.computedFn)(function () {
355
+ var _info$info3;
356
+ var info = _this.securityInfos.find(function (_ref17) {
357
+ var info = _ref17.info;
358
+ return (info === null || info === void 0 ? void 0 : info.action) === _type4.FcrSecurityAction.WaterMark;
359
+ });
360
+ return (info === null || info === void 0 || (_info$info3 = info.info) === null || _info$info3 === void 0 ? void 0 : _info$info3.payload.lineType) === _type.FcrLineType.MULTI_ROW;
361
+ }));
330
362
  //全体静音
331
363
  (0, _defineProperty2["default"])(this, "muteAll", function () {
332
364
  _this._streamControl.updatePublishPrivilegeOfStreams({
@@ -399,14 +431,7 @@ var FcrSecurityStore = exports.FcrSecurityStore = /*#__PURE__*/function () {
399
431
  });
400
432
  //允许屏幕共享
401
433
  (0, _defineProperty2["default"])(this, "setAllowShareScreen", function (state) {
402
- var enable = state ? _enums.FcrSharePermissionState.ON : _enums.FcrSharePermissionState.OFF;
403
- var payload = {
404
- screen: enable,
405
- board: {
406
- start: enable
407
- }
408
- };
409
- _this._privilegeControl.allowShare(state, [_type4.FcrPrivilegeUserRole.PARTICIPANT], payload);
434
+ _this._privilegeControl.allowShare(state, [_type4.FcrPrivilegeUserRole.PARTICIPANT]);
410
435
  });
411
436
  //允许开启视频
412
437
  (0, _defineProperty2["default"])(this, "setAllowUnmuteSelfVideo", function (enable) {
@@ -419,9 +444,9 @@ var FcrSecurityStore = exports.FcrSecurityStore = /*#__PURE__*/function () {
419
444
  (0, _defineProperty2["default"])(this, "_hasPermission", (0, _mobxUtils.computedFn)(function (action, targetRole) {
420
445
  var _this$permissionInfos;
421
446
  var convertedRole = targetRole === _type4.FcrPrivilegeUserRole.SELF ? [_this.localUser.userRole, _type4.FcrPrivilegeUserRole.SELF] : [targetRole];
422
- var info = (_this$permissionInfos = _this.permissionInfos) === null || _this$permissionInfos === void 0 ? void 0 : _this$permissionInfos.find(function (_ref16) {
447
+ var info = (_this$permissionInfos = _this.permissionInfos) === null || _this$permissionInfos === void 0 ? void 0 : _this$permissionInfos.find(function (_ref18) {
423
448
  var _info$targetRoles;
424
- var info = _ref16.info;
449
+ var info = _ref18.info;
425
450
  return (info === null || info === void 0 ? void 0 : info.action) === action && ((info === null || info === void 0 || (_info$targetRoles = info.targetRoles) === null || _info$targetRoles === void 0 ? void 0 : _info$targetRoles.length) === 0 || convertedRole.some(function (role) {
426
451
  var _info$targetRoles2;
427
452
  return info === null || info === void 0 || (_info$targetRoles2 = info.targetRoles) === null || _info$targetRoles2 === void 0 ? void 0 : _info$targetRoles2.includes(role);
@@ -437,9 +462,9 @@ var FcrSecurityStore = exports.FcrSecurityStore = /*#__PURE__*/function () {
437
462
  return _params && _params[key].includes(params[key]);
438
463
  });
439
464
  };
440
- var info = (_this$permissionInfos2 = _this.permissionInfos) === null || _this$permissionInfos2 === void 0 ? void 0 : _this$permissionInfos2.find(function (_ref17) {
465
+ var info = (_this$permissionInfos2 = _this.permissionInfos) === null || _this$permissionInfos2 === void 0 ? void 0 : _this$permissionInfos2.find(function (_ref19) {
441
466
  var _info$targetRoles3, _info$params;
442
- var info = _ref17.info;
467
+ var info = _ref19.info;
443
468
  return (info === null || info === void 0 ? void 0 : info.action) === action && ((info === null || info === void 0 || (_info$targetRoles3 = info.targetRoles) === null || _info$targetRoles3 === void 0 ? void 0 : _info$targetRoles3.length) === 0 || convertedRole.some(function (role) {
444
469
  var _info$targetRoles4;
445
470
  return info === null || info === void 0 || (_info$targetRoles4 = info.targetRoles) === null || _info$targetRoles4 === void 0 ? void 0 : _info$targetRoles4.includes(role);
@@ -593,6 +618,12 @@ var FcrSecurityStore = exports.FcrSecurityStore = /*#__PURE__*/function () {
593
618
  var _this$_privilegeContr;
594
619
  return (_this$_privilegeContr = this._privilegeControl.getSecurityInfo(_type4.FcrSecurityAction.Sharing)) === null || _this$_privilegeContr === void 0 ? void 0 : _this$_privilegeContr.enable;
595
620
  }
621
+ }, {
622
+ key: "hasAllowWaterMarkPermission",
623
+ value: function hasAllowWaterMarkPermission() {
624
+ var _this$_privilegeContr2;
625
+ return (_this$_privilegeContr2 = this._privilegeControl.getSecurityInfo(_type4.FcrSecurityAction.WaterMark)) === null || _this$_privilegeContr2 === void 0 ? void 0 : _this$_privilegeContr2.enable;
626
+ }
596
627
  }, {
597
628
  key: "getAllowedOperations",
598
629
  value: function getAllowedOperations(targetUserRole, isSelf) {
@@ -634,19 +665,22 @@ var FcrSecurityStore = exports.FcrSecurityStore = /*#__PURE__*/function () {
634
665
  //移除房间权限
635
666
  operations.push('kick_out');
636
667
  }
668
+ if (this.hasWaitingRoomPermission(targetUserRole)) {
669
+ operations.push('put_into_waiting_room');
670
+ }
637
671
  return operations;
638
672
  }
639
673
  }, {
640
674
  key: "allowShare",
641
675
  value: function () {
642
- var _allowShare = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee(state, payload) {
676
+ var _allowShare = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee(state) {
643
677
  var enable;
644
678
  return _regenerator["default"].wrap(function _callee$(_context) {
645
679
  while (1) switch (_context.prev = _context.next) {
646
680
  case 0:
647
681
  enable = state === _enums.FcrSharePermissionState.ON;
648
682
  _context.next = 3;
649
- return this._privilegeControl.allowShare(enable, [_type4.FcrPrivilegeUserRole.PARTICIPANT], payload);
683
+ return this._privilegeControl.allowShare(enable, [_type4.FcrPrivilegeUserRole.PARTICIPANT]);
650
684
  case 3:
651
685
  return _context.abrupt("return", _context.sent);
652
686
  case 4:
@@ -655,7 +689,7 @@ var FcrSecurityStore = exports.FcrSecurityStore = /*#__PURE__*/function () {
655
689
  }
656
690
  }, _callee, this);
657
691
  }));
658
- function allowShare(_x, _x2) {
692
+ function allowShare(_x) {
659
693
  return _allowShare.apply(this, arguments);
660
694
  }
661
695
  return allowShare;
@@ -663,7 +697,7 @@ var FcrSecurityStore = exports.FcrSecurityStore = /*#__PURE__*/function () {
663
697
  }, {
664
698
  key: "setAllowWriteBoard",
665
699
  value: function () {
666
- var _setAllowWriteBoard = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2(state, payload) {
700
+ var _setAllowWriteBoard = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2(state) {
667
701
  var enable;
668
702
  return _regenerator["default"].wrap(function _callee2$(_context2) {
669
703
  while (1) switch (_context2.prev = _context2.next) {
@@ -671,7 +705,7 @@ var FcrSecurityStore = exports.FcrSecurityStore = /*#__PURE__*/function () {
671
705
  this.logger.info('setAllowWriteBoard', state);
672
706
  enable = state === _enums.FcrSharePermissionState.ON;
673
707
  _context2.next = 4;
674
- return this._privilegeControl.allowWriteBoard(enable, [], payload);
708
+ return this._privilegeControl.allowWriteBoard(enable, [_type4.FcrPrivilegeUserRole.PARTICIPANT]);
675
709
  case 4:
676
710
  return _context2.abrupt("return", _context2.sent);
677
711
  case 5:
@@ -680,7 +714,7 @@ var FcrSecurityStore = exports.FcrSecurityStore = /*#__PURE__*/function () {
680
714
  }
681
715
  }, _callee2, this);
682
716
  }));
683
- function setAllowWriteBoard(_x3, _x4) {
717
+ function setAllowWriteBoard(_x2) {
684
718
  return _setAllowWriteBoard.apply(this, arguments);
685
719
  }
686
720
  return setAllowWriteBoard;
@@ -693,18 +727,23 @@ var FcrSecurityStore = exports.FcrSecurityStore = /*#__PURE__*/function () {
693
727
  }, {
694
728
  key: "_handleSecurityUpdated",
695
729
  value: function _handleSecurityUpdated(roomId, event) {
696
- var _securityInfo$info,
730
+ var _event$operatorUser,
731
+ _event$operatorUser2,
732
+ _this$privilegeOperat,
733
+ _securityInfo$info,
697
734
  _securityInfo$info2,
698
735
  _securityInfo$info3,
699
736
  _securityInfo$info4,
700
737
  _securityInfo$info5,
701
738
  _securityInfo$info6,
702
- _this2 = this;
739
+ _this2 = this,
740
+ _event$securityInfo$i,
741
+ _event$securityInfo$i2;
703
742
  this.securityInfos = this._privilegeControl.getAllSecurityInfo();
704
743
  this.privilegeOperator = event.operatorUser;
705
744
  var securityInfo = event.securityInfo;
706
745
  var enable = securityInfo.enable;
707
- var operator = this.localUser.userRole === _type.FcrUserRole.HOST ? (0, _i18n.transI18n)('fmt_settings_labels_you') : (0, _i18n.transI18n)('fmt_role_host');
746
+ var operator = this.localUser.userId === ((_event$operatorUser = event.operatorUser) === null || _event$operatorUser === void 0 ? void 0 : _event$operatorUser.userId) ? (0, _i18n.transI18n)('fmt_settings_labels_you') : (((_event$operatorUser2 = event.operatorUser) === null || _event$operatorUser2 === void 0 ? void 0 : _event$operatorUser2.userRole) === _type.FcrUserRole.HOST ? (0, _i18n.transI18n)('fmt_role_host') : (0, _i18n.transI18n)('fmt_role_cohost')) + " ".concat((_this$privilegeOperat = this.privilegeOperator) === null || _this$privilegeOperat === void 0 ? void 0 : _this$privilegeOperat.userName, " ");
708
747
  if (((_securityInfo$info = securityInfo.info) === null || _securityInfo$info === void 0 ? void 0 : _securityInfo$info.action) === _type4.FcrSecurityAction.JoinWithMuteAudio) {
709
748
  if (enable) {
710
749
  this._uiEventStore.showToast({
@@ -785,6 +824,54 @@ var FcrSecurityStore = exports.FcrSecurityStore = /*#__PURE__*/function () {
785
824
  }
786
825
  });
787
826
  }
827
+ } else if (((_event$securityInfo$i = event.securityInfo.info) === null || _event$securityInfo$i === void 0 ? void 0 : _event$securityInfo$i.action) === _type4.FcrSecurityAction.WaitingRoom) {
828
+ var _event$operatorUser3, _event$operatorUser4;
829
+ var isSelf = this.localUser.userId === ((_event$operatorUser3 = event.operatorUser) === null || _event$operatorUser3 === void 0 ? void 0 : _event$operatorUser3.userId);
830
+ var userName = (_event$operatorUser4 = event.operatorUser) === null || _event$operatorUser4 === void 0 ? void 0 : _event$operatorUser4.userName;
831
+ if (!isSelf) {
832
+ if (enable) {
833
+ this._uiEventStore.showToast({
834
+ type: 'normal',
835
+ message: "".concat(userName).concat((0, _i18n.transI18n)('fmt_waitingroom_setting_tips_enable'))
836
+ });
837
+ } else {
838
+ this._uiEventStore.showToast({
839
+ type: 'normal',
840
+ message: "".concat(userName).concat((0, _i18n.transI18n)('fmt_waitingroom_mobile_setting_label_disable'))
841
+ });
842
+ }
843
+ }
844
+ } else if (((_event$securityInfo$i2 = event.securityInfo.info) === null || _event$securityInfo$i2 === void 0 ? void 0 : _event$securityInfo$i2.action) == _type4.FcrSecurityAction.WaterMark) {
845
+ var _event$securityInfo$i3;
846
+ var _enable = event.securityInfo.enable;
847
+ if (this._prevWaterMarkEnable !== _enable) {
848
+ var _event$operatorUser5;
849
+ var toastText = '';
850
+ var roleValue = (_event$operatorUser5 = event.operatorUser) === null || _event$operatorUser5 === void 0 ? void 0 : _event$operatorUser5.userRole;
851
+ var canTriggerToast = roleValue === _type.FcrUserRole.HOST || roleValue === _type.FcrUserRole.COHOST;
852
+ if (canTriggerToast) {
853
+ if (_enable) {
854
+ if (roleValue === _type.FcrUserRole.HOST) {
855
+ toastText = (0, _i18n.transI18n)('fmt_security_setting_popup_toast_facilitator_watermark');
856
+ } else if (roleValue === _type.FcrUserRole.COHOST) {
857
+ toastText = (0, _i18n.transI18n)('fmt_security_setting_popup_toast_co_facilitator_watermark');
858
+ }
859
+ } else {
860
+ toastText = (0, _i18n.transI18n)('fmt_security_setting_popup_toast_turn_off_watermark');
861
+ }
862
+ this._prevWaterMarkEnable = _enable;
863
+ if (toastText) {
864
+ this._uiEventStore.showToast({
865
+ type: 'normal',
866
+ message: toastText
867
+ });
868
+ }
869
+ }
870
+ }
871
+ this._uiEventStore.sendEvent(_constant.UIAction.WATERMARK_INFO_UPDATE, {
872
+ enable: _enable,
873
+ lineType: (_event$securityInfo$i3 = event.securityInfo.info) === null || _event$securityInfo$i3 === void 0 ? void 0 : _event$securityInfo$i3.payload.lineType
874
+ });
788
875
  }
789
876
  }
790
877
  }, {
@@ -840,9 +927,9 @@ var FcrSecurityStore = exports.FcrSecurityStore = /*#__PURE__*/function () {
840
927
  }, {
841
928
  key: "_handleProcessEvent",
842
929
  value: function _handleProcessEvent(event) {
843
- var _ref18 = event,
844
- action = _ref18.action,
845
- payload = _ref18.payload;
930
+ var _ref20 = event,
931
+ action = _ref20.action,
932
+ payload = _ref20.payload;
846
933
  switch (action) {
847
934
  case _constant.RendererEventAction.FRAGMENT_SET_ALLOW_CHANGE_SELF_NAME:
848
935
  // this.setAllowChangeSelfName(payload.allow);
@@ -856,6 +943,11 @@ var FcrSecurityStore = exports.FcrSecurityStore = /*#__PURE__*/function () {
856
943
  case _constant.RendererEventAction.FRAGMENT_SET_ALLOW_SHARE_SCREEN:
857
944
  this.setAllowShareScreen(payload.allow);
858
945
  break;
946
+ case _constant.RendererEventAction.FRAGMENT_SET_ALLOW_BOARD_WRITE:
947
+ {
948
+ this.setAllowWriteBoard(_enums.FcrSharePermissionState.ON);
949
+ break;
950
+ }
859
951
  case _constant.RendererEventAction.FRAGMENT_SET_ALLOW_UNMUTE_SELF_VIDEO:
860
952
  this.setAllowUnmuteSelfVideo(payload.allow);
861
953
  break;
@@ -896,6 +988,11 @@ var FcrSecurityStore = exports.FcrSecurityStore = /*#__PURE__*/function () {
896
988
  return _this3.allowScreenShareAndBoard();
897
989
  },
898
990
  action: _constant.RendererEventAction.MAIN_SET_ALLOW_SHARE_SCREEN
991
+ }, {
992
+ observable: function observable() {
993
+ return _this3.allowBoardWrite();
994
+ },
995
+ action: _constant.RendererEventAction.MAIN_SET_ALLOW_BOARD_WRITE
899
996
  }, {
900
997
  observable: function observable() {
901
998
  return _this3.allowUnmuteSelfVideo();
@@ -979,9 +1076,9 @@ var FcrSecurityStore = exports.FcrSecurityStore = /*#__PURE__*/function () {
979
1076
  },
980
1077
  action: _constant.RendererEventAction.LOCK_ROOM_PERMISSION
981
1078
  }];
982
- securityReactions.forEach(function (_ref19) {
983
- var observable = _ref19.observable,
984
- action = _ref19.action;
1079
+ securityReactions.forEach(function (_ref21) {
1080
+ var observable = _ref21.observable,
1081
+ action = _ref21.action;
985
1082
  _this3._disposers.push((0, _mobx.reaction)(observable, function (allow) {
986
1083
  window.runtime.sendEvent({
987
1084
  action: action,
@@ -1000,10 +1097,32 @@ var FcrSecurityStore = exports.FcrSecurityStore = /*#__PURE__*/function () {
1000
1097
  });
1001
1098
  this._disposers = [];
1002
1099
  }
1100
+ }, {
1101
+ key: "setAllowWaterMark",
1102
+ value: function () {
1103
+ var _setAllowWaterMark = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee3(state, lineType) {
1104
+ return _regenerator["default"].wrap(function _callee3$(_context3) {
1105
+ while (1) switch (_context3.prev = _context3.next) {
1106
+ case 0:
1107
+ _context3.next = 2;
1108
+ return this._privilegeControl.allowWatermark(state, [_type4.FcrPrivilegeUserRole.PARTICIPANT], lineType);
1109
+ case 2:
1110
+ return _context3.abrupt("return", _context3.sent);
1111
+ case 3:
1112
+ case "end":
1113
+ return _context3.stop();
1114
+ }
1115
+ }, _callee3, this);
1116
+ }));
1117
+ function setAllowWaterMark(_x3, _x4) {
1118
+ return _setAllowWaterMark.apply(this, arguments);
1119
+ }
1120
+ return setAllowWaterMark;
1121
+ }()
1003
1122
  }]);
1004
1123
  }();
1005
1124
  _FcrSecurityStore = FcrSecurityStore;
1006
- var _applyDecs$e = _applyDecs(_FcrSecurityStore, [[_mobx.observable, 1, "securityInfos"], [_mobx.observable, 1, "permissionInfos"], [_mobx.observable, 1, "privilegeOperator"], [_mobx.observable, 1, "boardOwnerUser"], [_handlePermissionUpdatedDecs, 18, "_handlePermissionUpdated"], [_handleSecurityUpdatedDecs, 18, "_handleSecurityUpdated"], [_decorator.bound, 2, "_handleProcessEvent"], [_decorator.bound, 2, "_addReactions"], [_decorator.bound, 2, "_removeReactions"]], []).e;
1125
+ var _applyDecs$e = _applyDecs(_FcrSecurityStore, [[_mobx.observable, 1, "securityInfos"], [_mobx.observable, 1, "permissionInfos"], [_mobx.observable, 1, "privilegeOperator"], [_mobx.observable, 1, "boardOwnerUser"], [_handlePermissionUpdatedDecs, 18, "_handlePermissionUpdated"], [_handleSecurityUpdatedDecs, 18, "_handleSecurityUpdated"], [_decorator.bound, 2, "_handleProcessEvent"], [_decorator.bound, 2, "_addReactions"], [_decorator.bound, 2, "_removeReactions"], [_decorator.bound, 2, "setAllowWaterMark"]], []).e;
1007
1126
  var _applyDecs$e2 = (0, _slicedToArray2["default"])(_applyDecs$e, 5);
1008
1127
  _init_securityInfos = _applyDecs$e2[0];
1009
1128
  _init_permissionInfos = _applyDecs$e2[1];
@@ -0,0 +1 @@
1
+ export {};