@tencentcloud/roomkit-electron-vue3 2.6.3 → 2.6.7-beta.1

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 (39) hide show
  1. package/es/components/RoomContent/StreamRegion/LocalScreenView/index.vue.mjs +1 -1
  2. package/es/components/RoomContent/StreamRegion/LocalScreenView/index.vue2.mjs +11 -4
  3. package/es/components/RoomFooter/WhiteboardControl.vue.mjs +5 -5
  4. package/es/conference.d.ts +1 -1
  5. package/es/conference.mjs +10 -0
  6. package/es/constants/room.d.ts +1 -3
  7. package/es/hooks/useRoomEngine.d.ts +1 -3
  8. package/es/index.mjs +12 -12
  9. package/es/services/index.d.ts +1 -0
  10. package/es/services/manager/dataReportManager.d.ts +15 -2
  11. package/es/services/manager/dataReportManager.mjs +42 -13
  12. package/es/services/roomService.d.ts +4 -3
  13. package/es/services/roomService.mjs +2 -0
  14. package/es/services/types.d.ts +2 -0
  15. package/lib/components/RoomContent/StreamRegion/LocalScreenView/index.vue.js +1 -1
  16. package/lib/components/RoomContent/StreamRegion/LocalScreenView/index.vue2.js +10 -3
  17. package/lib/components/RoomFooter/WhiteboardControl.vue.js +5 -5
  18. package/lib/conference.d.ts +1 -1
  19. package/lib/conference.js +10 -0
  20. package/lib/constants/room.d.ts +1 -3
  21. package/lib/hooks/useRoomEngine.d.ts +1 -3
  22. package/lib/index.js +12 -12
  23. package/lib/services/index.d.ts +1 -0
  24. package/lib/services/manager/dataReportManager.d.ts +15 -2
  25. package/lib/services/manager/dataReportManager.js +42 -13
  26. package/lib/services/roomService.d.ts +4 -3
  27. package/lib/services/roomService.js +2 -0
  28. package/lib/services/types.d.ts +2 -0
  29. package/lib/utils/constants.js +1 -1
  30. package/package.json +3 -3
  31. package/src/TUIRoom/components/RoomContent/StreamRegion/LocalScreenView/index.vue +5 -7
  32. package/src/TUIRoom/components/RoomFooter/WhiteboardControl.vue +5 -8
  33. package/src/TUIRoom/conference.ts +10 -0
  34. package/src/TUIRoom/services/index.ts +1 -0
  35. package/src/TUIRoom/services/manager/dataReportManager.ts +48 -13
  36. package/src/TUIRoom/services/roomService.ts +2 -0
  37. package/src/TUIRoom/services/types.ts +2 -0
  38. package/es/package.json.mjs +0 -93
  39. package/lib/package.json.js +0 -93
package/lib/index.js CHANGED
@@ -3156,7 +3156,7 @@ input[data-v-e79d67af]:disabled {
3156
3156
  @keyframes breath-44d9a08c {
3157
3157
  50% {
3158
3158
  /* stylelint-disable-next-line scss/no-global-function-names */
3159
- background-color: lightgray;
3159
+ background-color: rgb(210.5, 210.5, 210.5);
3160
3160
  }
3161
3161
  }.overlay-container[data-v-567d271d] {
3162
3162
  position: fixed;
@@ -7923,7 +7923,7 @@ input[data-v-1927e971]:focus, input[data-v-1927e971]:active, textarea[data-v-192
7923
7923
  --screen-font-color: #b2bbd1;
7924
7924
  --user-has-no-camera-bg-color: rgba(34, 38, 46, 0.5);
7925
7925
  --user-info-container-bg-color: rgba(34, 38, 46, 0.8);
7926
- }.local-screen-container[data-v-5c425af9] {
7926
+ }.local-screen-container[data-v-222da582] {
7927
7927
  display: flex;
7928
7928
  align-items: center;
7929
7929
  justify-content: center;
@@ -7931,13 +7931,13 @@ input[data-v-1927e971]:focus, input[data-v-1927e971]:active, textarea[data-v-192
7931
7931
  height: 100%;
7932
7932
  background-color: var(--background-color-1);
7933
7933
  }
7934
- .local-screen-container[data-v-5c425af9]::before {
7934
+ .local-screen-container[data-v-222da582]::before {
7935
7935
  width: 100%;
7936
7936
  height: 100%;
7937
7937
  content: "";
7938
7938
  background-color: var(--local-screen-stream-bg-color);
7939
7939
  }
7940
- .local-screen-container .local-screen-control-container[data-v-5c425af9] {
7940
+ .local-screen-container .local-screen-control-container[data-v-222da582] {
7941
7941
  position: absolute;
7942
7942
  top: 50%;
7943
7943
  left: 50%;
@@ -7947,38 +7947,38 @@ input[data-v-1927e971]:focus, input[data-v-1927e971]:active, textarea[data-v-192
7947
7947
  color: var(--screen-font-color);
7948
7948
  transform: translate(-50%, -50%);
7949
7949
  }
7950
- .local-screen-container .local-screen-control-container.mini[data-v-5c425af9] {
7950
+ .local-screen-container .local-screen-control-container.mini[data-v-222da582] {
7951
7951
  transform: translate(-50%, -50%) scale(0.7);
7952
7952
  }
7953
- .local-screen-container .local-screen-control-container .local-screen-info[data-v-5c425af9] {
7953
+ .local-screen-container .local-screen-control-container .local-screen-info[data-v-222da582] {
7954
7954
  display: flex;
7955
7955
  flex-direction: column;
7956
7956
  align-items: center;
7957
7957
  }
7958
- .local-screen-container .local-screen-control-container .local-screen-info .text[data-v-5c425af9] {
7958
+ .local-screen-container .local-screen-control-container .local-screen-info .text[data-v-222da582] {
7959
7959
  font-size: 16px;
7960
7960
  font-style: normal;
7961
7961
  font-weight: 400;
7962
7962
  line-height: 24px;
7963
7963
  white-space: nowrap;
7964
7964
  }
7965
- .local-screen-container .local-screen-control-container .stop-button[data-v-5c425af9] {
7965
+ .local-screen-container .local-screen-control-container .stop-button[data-v-222da582] {
7966
7966
  margin-top: 30px;
7967
7967
  background-color: var(--red-color-3);
7968
7968
  border: 1.5px solid var(--red-color-3);
7969
7969
  }
7970
- .local-screen-container .local-screen-control-container .toggle-annotating-button[data-v-5c425af9] {
7970
+ .local-screen-container .local-screen-control-container .toggle-annotating-button[data-v-222da582] {
7971
7971
  margin-top: 30px;
7972
7972
  background-color: var(--red-color-3);
7973
7973
  border: 1.5px solid var(--red-color-3);
7974
7974
  }
7975
- .tui-theme-white .local-screen-container[data-v-5c425af9] {
7975
+ .tui-theme-white .local-screen-container[data-v-222da582] {
7976
7976
  --local-screen-stream-bg-color: rgba(228, 232, 238, 0.4);
7977
7977
  }
7978
- .tui-theme-black .local-screen-container[data-v-5c425af9] {
7978
+ .tui-theme-black .local-screen-container[data-v-222da582] {
7979
7979
  --local-screen-stream-bg-color: rgba(34, 38, 46, 0.5);
7980
7980
  }
7981
- .dialog-button[data-v-5c425af9] {
7981
+ .dialog-button[data-v-222da582] {
7982
7982
  margin-right: 12px;
7983
7983
  }.stream-region-container[data-v-5ad6ef67] {
7984
7984
  display: flex;
@@ -8,4 +8,5 @@ export * from './manager/lifeCycleManager';
8
8
  export * from './manager/roomActionManager';
9
9
  export * from './manager/scheduleConferenceManager';
10
10
  export * from './manager/chatManager';
11
+ export * from './manager/dataReportManager';
11
12
  export * from './function/aiTask';
@@ -3,8 +3,21 @@ export declare enum MetricsKey {
3
3
  stopSharingWhiteboard = 106001,
4
4
  startAnnotating = 106002,
5
5
  stopAnnotating = 106003,
6
- saveWhiteboard = 106004
6
+ saveWhiteboard = 106004,
7
+ setLanguage = 106050,
8
+ setTheme = 106051,
9
+ disableTextMessaging = 106052,
10
+ disableScreenSharing = 106053,
11
+ enableWatermark = 106054,
12
+ enableVirtualBackground = 106055,
13
+ hideFeatureButton = 106056
7
14
  }
8
15
  export declare class DataReportManager {
9
- static reportCount(key: MetricsKey): void;
16
+ private taskQueue;
17
+ private isReady;
18
+ constructor();
19
+ reportCount(key: MetricsKey): void;
20
+ private bindEvent;
21
+ private executePendingTasks;
22
+ private createReportCountTask;
10
23
  }
@@ -1,8 +1,9 @@
1
1
  "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
4
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
2
5
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
6
  const TUIRoomEngine = require("@tencentcloud/tuiroom-engine-electron");
4
- const _package = require("../../package.json.js");
5
- const appVersion = _package.default.version;
6
7
  const KEY_METRICS_API = "KeyMetricsStats";
7
8
  var MetricsKey = /* @__PURE__ */ ((MetricsKey2) => {
8
9
  MetricsKey2[MetricsKey2["startSharingWhiteboard"] = 106e3] = "startSharingWhiteboard";
@@ -10,20 +11,48 @@ var MetricsKey = /* @__PURE__ */ ((MetricsKey2) => {
10
11
  MetricsKey2[MetricsKey2["startAnnotating"] = 106002] = "startAnnotating";
11
12
  MetricsKey2[MetricsKey2["stopAnnotating"] = 106003] = "stopAnnotating";
12
13
  MetricsKey2[MetricsKey2["saveWhiteboard"] = 106004] = "saveWhiteboard";
14
+ MetricsKey2[MetricsKey2["setLanguage"] = 106050] = "setLanguage";
15
+ MetricsKey2[MetricsKey2["setTheme"] = 106051] = "setTheme";
16
+ MetricsKey2[MetricsKey2["disableTextMessaging"] = 106052] = "disableTextMessaging";
17
+ MetricsKey2[MetricsKey2["disableScreenSharing"] = 106053] = "disableScreenSharing";
18
+ MetricsKey2[MetricsKey2["enableWatermark"] = 106054] = "enableWatermark";
19
+ MetricsKey2[MetricsKey2["enableVirtualBackground"] = 106055] = "enableVirtualBackground";
20
+ MetricsKey2[MetricsKey2["hideFeatureButton"] = 106056] = "hideFeatureButton";
13
21
  return MetricsKey2;
14
22
  })(MetricsKey || {});
15
23
  class DataReportManager {
16
- static reportCount(key) {
17
- TUIRoomEngine.callExperimentalAPI(
18
- JSON.stringify({
19
- api: KEY_METRICS_API,
20
- params: {
21
- opt: "count",
22
- key,
23
- version: appVersion
24
- }
25
- })
26
- );
24
+ constructor() {
25
+ __publicField(this, "taskQueue", []);
26
+ __publicField(this, "isReady", false);
27
+ this.bindEvent();
28
+ }
29
+ reportCount(key) {
30
+ const task = this.createReportCountTask(key);
31
+ if (!this.isReady) {
32
+ this.taskQueue.push(task);
33
+ } else {
34
+ task();
35
+ }
36
+ }
37
+ bindEvent() {
38
+ TUIRoomEngine.once("ready", () => {
39
+ this.isReady = true;
40
+ this.executePendingTasks();
41
+ });
42
+ }
43
+ executePendingTasks() {
44
+ this.taskQueue.forEach((task) => task());
45
+ this.taskQueue = [];
46
+ }
47
+ createReportCountTask(key) {
48
+ return () => {
49
+ TUIRoomEngine.callExperimentalAPI(
50
+ JSON.stringify({
51
+ api: KEY_METRICS_API,
52
+ params: { key }
53
+ })
54
+ );
55
+ };
27
56
  }
28
57
  }
29
58
  exports.DataReportManager = DataReportManager;
@@ -1,5 +1,4 @@
1
1
  import { EventType, IRoomService, RoomInitData, RoomParam } from './types';
2
- import { default as TUIRoomEngine } from '@tencentcloud/tuiroom-engine-electron';
3
2
  import { UserInfo } from '../stores/room';
4
3
  import { ComponentConfig, ComponentManager, ComponentName } from './manager/componentManager';
5
4
  import { ConfigManager, LanguageOption, Theme } from './manager/configManager';
@@ -12,11 +11,12 @@ import { VirtualBackground } from './function/virtualBackground';
12
11
  import { BasicBeauty } from './function/basicBeauty';
13
12
  import { ScheduleConferenceManager } from './manager/scheduleConferenceManager';
14
13
  import { ConferenceInvitationManager } from './manager/conferenceInvitationManager';
14
+ import { DataReportManager } from './manager/dataReportManager';
15
15
  import { ErrorHandler } from './function/errorHandler';
16
16
  import { ChatManager } from './manager/chatManager';
17
17
  import { AITask } from './function/aiTask';
18
18
 
19
- export declare const roomEngine: Record<string, TUIRoomEngine | null>;
19
+ export declare const roomEngine: Record<string, any>;
20
20
  export declare class RoomService implements IRoomService {
21
21
  static instance?: RoomService;
22
22
  private emitter;
@@ -31,10 +31,11 @@ export declare class RoomService implements IRoomService {
31
31
  basicBeauty: BasicBeauty;
32
32
  scheduleConferenceManager: ScheduleConferenceManager;
33
33
  conferenceInvitationManager: ConferenceInvitationManager;
34
+ dataReportManager: DataReportManager;
34
35
  errorHandler: ErrorHandler;
35
36
  chatManager: ChatManager;
36
37
  aiTask: AITask;
37
- roomEngine: Record<string, TUIRoomEngine | null>;
38
+ roomEngine: Record<string, any>;
38
39
  t: any;
39
40
  get basicStore(): any;
40
41
  get roomStore(): any;
@@ -26,6 +26,7 @@ const virtualBackground = require("./function/virtualBackground.js");
26
26
  const basicBeauty = require("./function/basicBeauty.js");
27
27
  const scheduleConferenceManager = require("./manager/scheduleConferenceManager.js");
28
28
  const conferenceInvitationManager = require("./manager/conferenceInvitationManager.js");
29
+ const dataReportManager = require("./manager/dataReportManager.js");
29
30
  const errorHandler = require("./function/errorHandler.js");
30
31
  const chatManager = require("./manager/chatManager.js");
31
32
  const TUICore = require("@tencentcloud/tui-core");
@@ -47,6 +48,7 @@ const _RoomService = class _RoomService {
47
48
  __publicField(this, "basicBeauty", new basicBeauty.BasicBeauty(this));
48
49
  __publicField(this, "scheduleConferenceManager", new scheduleConferenceManager.ScheduleConferenceManager(this));
49
50
  __publicField(this, "conferenceInvitationManager", new conferenceInvitationManager.ConferenceInvitationManager(this));
51
+ __publicField(this, "dataReportManager", new dataReportManager.DataReportManager());
50
52
  __publicField(this, "errorHandler", new errorHandler.ErrorHandler(this));
51
53
  __publicField(this, "chatManager", new chatManager.ChatManager(this));
52
54
  __publicField(this, "aiTask", new aiTask.AITask(this));
@@ -8,6 +8,7 @@ import { RoomActionManager } from './manager/roomActionManager';
8
8
  import { ErrorHandler } from './function/errorHandler';
9
9
  import { AITask } from './function/aiTask';
10
10
  import { ConferenceInvitationManager } from './manager/conferenceInvitationManager';
11
+ import { DataReportManager } from './manager/dataReportManager';
11
12
 
12
13
  export interface IRoomService {
13
14
  t: any;
@@ -19,6 +20,7 @@ export interface IRoomService {
19
20
  roomActionManager?: RoomActionManager;
20
21
  scheduleConferenceManager: ScheduleConferenceManager;
21
22
  conferenceInvitationManager: ConferenceInvitationManager;
23
+ dataReportManager: DataReportManager;
22
24
  errorHandler: ErrorHandler;
23
25
  aiTask: AITask;
24
26
  on: (eventType: EventType, callback: (data?: any) => any) => void;
@@ -22,7 +22,7 @@ const Vue__namespace = /* @__PURE__ */ _interopNamespaceDefault(Vue);
22
22
  const __vite_import_meta_env__ = { "BASE_URL": "/", "DEV": false, "MODE": "production", "PROD": true, "SSR": false };
23
23
  const isVue27 = /^2\.7\.*/.test(Vue__namespace.version);
24
24
  const isVue3 = /^3\.*/.test(Vue__namespace.version);
25
- const isInnerScene = { url: typeof document === "undefined" ? require("url").pathToFileURL(__filename).href : _documentCurrentScript && _documentCurrentScript.src || new URL("utils/constants.js", document.baseURI).href } && __vite_import_meta_env__ && false;
25
+ const isInnerScene = { url: typeof document === "undefined" ? require("url").pathToFileURL(__filename).href : _documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === "SCRIPT" && _documentCurrentScript.src || new URL("utils/constants.js", document.baseURI).href } && __vite_import_meta_env__ && false;
26
26
  exports.isInnerScene = isInnerScene;
27
27
  exports.isVue27 = isVue27;
28
28
  exports.isVue3 = isVue3;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tencentcloud/roomkit-electron-vue3",
3
- "version": "2.6.3",
3
+ "version": "2.6.7-beta.1",
4
4
  "main": "./lib/index.js",
5
5
  "module": "./es/index.mjs",
6
6
  "types": "./es/index.d.ts",
@@ -20,7 +20,7 @@
20
20
  "dependencies": {
21
21
  "@tencentcloud/chat": "latest",
22
22
  "@tencentcloud/tui-core": "latest",
23
- "@tencentcloud/tuiroom-engine-electron": "^2.6.3",
23
+ "@tencentcloud/tuiroom-engine-electron": "^2.6.7",
24
24
  "@tencentcloud/chat-uikit-engine": "2.2.7",
25
25
  "@tencentcloud/chat-uikit-vue": "2.2.7",
26
26
  "@tencentcloud/universal-api": "^2.0.9",
@@ -40,7 +40,7 @@
40
40
  "hotkeys-js": "^3.10.1"
41
41
  },
42
42
  "peerDependencies": {
43
- "pinia": "^2.1.7",
43
+ "pinia": "~2.0.24",
44
44
  "vue": "~3.3.13",
45
45
  "electron": ">=4.0.0"
46
46
  },
@@ -69,10 +69,8 @@ import Dialog from '../../../common/base/Dialog/index.vue';
69
69
  import eventBus from '../../../../hooks/useMitt';
70
70
  import { useI18n } from '../../../../locales';
71
71
  import { useRoomStore } from '../../../../stores/room';
72
- import {
73
- DataReportManager,
74
- MetricsKey,
75
- } from '../../../../services/manager/dataReportManager';
72
+ import { MetricsKey } from '../../../../services/manager/dataReportManager';
73
+ import { roomService } from '../../../../services';
76
74
 
77
75
  const roomStore = useRoomStore();
78
76
  const { t } = useI18n();
@@ -108,17 +106,17 @@ function toggleAnnotationWindow() {
108
106
  if (isAnnotationVisiable.value) {
109
107
  ipcRenderer?.send('annotation:stop-annotating');
110
108
  isAnnotationVisiable.value = false;
111
- DataReportManager.reportCount(MetricsKey.stopAnnotating);
109
+ roomService.dataReportManager.reportCount(MetricsKey.stopAnnotating);
112
110
  } else {
113
111
  ipcRenderer?.send('annotation:start-annotating');
114
112
  isAnnotationVisiable.value = true;
115
- DataReportManager.reportCount(MetricsKey.startAnnotating);
113
+ roomService.dataReportManager.reportCount(MetricsKey.startAnnotating);
116
114
  }
117
115
  }
118
116
 
119
117
  ipcRenderer?.on('annotation:stop-from-annotation-window', () => {
120
118
  isAnnotationVisiable.value = false;
121
- DataReportManager.reportCount(MetricsKey.stopAnnotating);
119
+ roomService.dataReportManager.reportCount(MetricsKey.stopAnnotating);
122
120
  });
123
121
  </script>
124
122
 
@@ -30,10 +30,7 @@ import eventBus from '../../hooks/useMitt';
30
30
  import { EventType, roomEngine } from '../../services';
31
31
  import { MESSAGE_DURATION } from '../../constants/message';
32
32
  import { roomService } from '../../services/index';
33
- import {
34
- DataReportManager,
35
- MetricsKey,
36
- } from '../../services/manager/dataReportManager';
33
+ import { MetricsKey } from '../../services/manager/dataReportManager';
37
34
 
38
35
  const { t } = useI18n();
39
36
  const roomStore = useRoomStore();
@@ -109,10 +106,10 @@ async function startShareWhiteboard() {
109
106
  function stopShareWhiteboard() {
110
107
  roomEngine.instance?.stopScreenSharing();
111
108
  if (isWhiteboardVisiable.value) {
112
- DataReportManager.reportCount(MetricsKey.stopSharingWhiteboard);
109
+ roomService.dataReportManager.reportCount(MetricsKey.stopSharingWhiteboard);
113
110
  }
114
111
  if (isAnnotationVisiable.value) {
115
- DataReportManager.reportCount(MetricsKey.stopAnnotating);
112
+ roomService.dataReportManager.reportCount(MetricsKey.stopAnnotating);
116
113
  }
117
114
  isWhiteboardVisiable.value = false;
118
115
  isAnnotationVisiable.value = false;
@@ -127,7 +124,7 @@ function hideAllWhiteboardWindow() {
127
124
  function showWhiteboardWindow() {
128
125
  isWhiteboardVisiable.value = true;
129
126
  ipcRenderer.send('whiteboard:show-window');
130
- DataReportManager.reportCount(MetricsKey.startSharingWhiteboard);
127
+ roomService.dataReportManager.reportCount(MetricsKey.startSharingWhiteboard);
131
128
  }
132
129
 
133
130
  ipcRenderer.on('whiteboard:window-closed', () => {
@@ -139,7 +136,7 @@ ipcRenderer.on('whiteboard:stop-from-whiteboard-window', () => {
139
136
  });
140
137
 
141
138
  ipcRenderer.on('whiteboard:save-from-whiteboard-window', () => {
142
- DataReportManager.reportCount(MetricsKey.saveWhiteboard);
139
+ roomService.dataReportManager.reportCount(MetricsKey.saveWhiteboard);
143
140
  });
144
141
 
145
142
  onMounted(() => {
@@ -6,6 +6,7 @@ import {
6
6
  LanguageOption,
7
7
  Theme,
8
8
  EventType,
9
+ MetricsKey,
9
10
  } from './services';
10
11
  import { TUIRoomEngine } from './index';
11
12
  import logger from './utils/common/logger';
@@ -144,26 +145,34 @@ class Conference implements IConference {
144
145
  }
145
146
 
146
147
  public setLanguage(language: LanguageOption) {
148
+ roomService.dataReportManager.reportCount(MetricsKey.setLanguage);
147
149
  return roomService.setLanguage(language);
148
150
  }
149
151
 
150
152
  public setTheme(theme: ThemeOption) {
153
+ roomService.dataReportManager.reportCount(MetricsKey.setTheme);
151
154
  return roomService.setTheme(toTargetTheme(theme) as Theme);
152
155
  }
153
156
 
154
157
  public disableTextMessaging() {
158
+ roomService.dataReportManager.reportCount(MetricsKey.disableTextMessaging);
155
159
  roomService.setComponentConfig({ ChatControl: { visible: false } });
156
160
  }
157
161
 
158
162
  public disableScreenSharing() {
163
+ roomService.dataReportManager.reportCount(MetricsKey.disableScreenSharing);
159
164
  roomService.setComponentConfig({ ScreenShare: { visible: false } });
160
165
  }
161
166
 
162
167
  public enableWatermark() {
168
+ roomService.dataReportManager.reportCount(MetricsKey.enableWatermark);
163
169
  roomService.waterMark.toggleWatermark(true);
164
170
  }
165
171
 
166
172
  public enableVirtualBackground() {
173
+ roomService.dataReportManager.reportCount(
174
+ MetricsKey.enableVirtualBackground
175
+ );
167
176
  roomService.setComponentConfig({ VirtualBackground: { visible: true } });
168
177
  }
169
178
 
@@ -172,6 +181,7 @@ class Conference implements IConference {
172
181
  }
173
182
 
174
183
  public hideFeatureButton(name: FeatureButton) {
184
+ roomService.dataReportManager.reportCount(MetricsKey.hideFeatureButton);
175
185
  roomService.setComponentConfig({ [name]: { visible: false } });
176
186
  }
177
187
 
@@ -9,4 +9,5 @@ export * from './manager/lifeCycleManager';
9
9
  export * from './manager/roomActionManager';
10
10
  export * from './manager/scheduleConferenceManager';
11
11
  export * from './manager/chatManager';
12
+ export * from './manager/dataReportManager';
12
13
  export * from './function/aiTask';
@@ -1,6 +1,5 @@
1
1
  import TUIRoomEngine from '@tencentcloud/tuiroom-engine-electron';
2
- import packageConfig from '../../../../package.json';
3
- const appVersion = packageConfig.version;
2
+
4
3
  const KEY_METRICS_API = 'KeyMetricsStats';
5
4
 
6
5
  export enum MetricsKey {
@@ -9,19 +8,55 @@ export enum MetricsKey {
9
8
  startAnnotating = 106002,
10
9
  stopAnnotating = 106003,
11
10
  saveWhiteboard = 106004,
11
+
12
+ setLanguage = 106050,
13
+ setTheme = 106051,
14
+ disableTextMessaging = 106052,
15
+ disableScreenSharing = 106053,
16
+ enableWatermark = 106054,
17
+ enableVirtualBackground = 106055,
18
+ hideFeatureButton = 106056,
12
19
  }
13
20
 
21
+ type Task = () => void;
22
+
14
23
  export class DataReportManager {
15
- static reportCount(key: MetricsKey) {
16
- TUIRoomEngine.callExperimentalAPI(
17
- JSON.stringify({
18
- api: KEY_METRICS_API,
19
- params: {
20
- opt: 'count',
21
- key,
22
- version: appVersion,
23
- },
24
- })
25
- );
24
+ private taskQueue: Task[] = [];
25
+ private isReady = false;
26
+
27
+ constructor() {
28
+ this.bindEvent();
29
+ }
30
+
31
+ public reportCount(key: MetricsKey) {
32
+ const task = this.createReportCountTask(key);
33
+ if (!this.isReady) {
34
+ this.taskQueue.push(task);
35
+ } else {
36
+ task();
37
+ }
38
+ }
39
+
40
+ private bindEvent() {
41
+ TUIRoomEngine.once('ready', () => {
42
+ this.isReady = true;
43
+ this.executePendingTasks();
44
+ });
45
+ }
46
+
47
+ private executePendingTasks() {
48
+ this.taskQueue.forEach(task => task());
49
+ this.taskQueue = [];
50
+ }
51
+
52
+ private createReportCountTask(key: MetricsKey): Task {
53
+ return () => {
54
+ TUIRoomEngine.callExperimentalAPI(
55
+ JSON.stringify({
56
+ api: KEY_METRICS_API,
57
+ params: { key },
58
+ })
59
+ );
60
+ };
26
61
  }
27
62
  }
@@ -37,6 +37,7 @@ import { VirtualBackground } from './function/virtualBackground';
37
37
  import { BasicBeauty } from './function/basicBeauty';
38
38
  import { ScheduleConferenceManager } from './manager/scheduleConferenceManager';
39
39
  import { ConferenceInvitationManager } from './manager/conferenceInvitationManager';
40
+ import { DataReportManager } from './manager/dataReportManager';
40
41
  import { ErrorHandler } from './function/errorHandler';
41
42
  import { ChatManager } from './manager/chatManager';
42
43
  import { TUILogin } from '@tencentcloud/tui-core';
@@ -63,6 +64,7 @@ export class RoomService implements IRoomService {
63
64
  new ScheduleConferenceManager(this);
64
65
  public conferenceInvitationManager: ConferenceInvitationManager =
65
66
  new ConferenceInvitationManager(this);
67
+ public dataReportManager: DataReportManager = new DataReportManager();
66
68
  public errorHandler: ErrorHandler = new ErrorHandler(this);
67
69
  public chatManager: ChatManager = new ChatManager(this);
68
70
  public aiTask: AITask = new AITask(this);
@@ -8,6 +8,7 @@ import { RoomActionManager } from './manager/roomActionManager';
8
8
  import { ErrorHandler } from './function/errorHandler';
9
9
  import { AITask } from './function/aiTask';
10
10
  import { ConferenceInvitationManager } from './manager/conferenceInvitationManager';
11
+ import { DataReportManager } from './manager/dataReportManager';
11
12
  export interface IRoomService {
12
13
  t: any;
13
14
  roomEngine: Record<string, any>;
@@ -18,6 +19,7 @@ export interface IRoomService {
18
19
  roomActionManager?: RoomActionManager;
19
20
  scheduleConferenceManager: ScheduleConferenceManager;
20
21
  conferenceInvitationManager: ConferenceInvitationManager;
22
+ dataReportManager: DataReportManager;
21
23
  errorHandler: ErrorHandler;
22
24
  aiTask: AITask;
23
25
  on: (eventType: EventType, callback: (data?: any) => any) => void;
@@ -1,93 +0,0 @@
1
- const name = "@tencentcloud/roomkit-electron-vue3";
2
- const version = "2.6.3";
3
- const main = "./lib/index.js";
4
- const module = "./es/index.mjs";
5
- const types = "./es/index.d.ts";
6
- const homepage = "https://cloud.tencent.com/document/product/647/81962";
7
- const author = "Tencent Cloud Client R&D Center";
8
- const license = "ISC";
9
- const repository = {
10
- type: "git",
11
- url: "git@github.com:tencentyun/TUIRoomKit.git"
12
- };
13
- const keywords = [
14
- "conference",
15
- "tuiroomkit",
16
- "webrtc",
17
- "javascript"
18
- ];
19
- const scripts = {
20
- dev: "vite build --watch",
21
- build: "vite build"
22
- };
23
- const dependencies = {
24
- "@tencentcloud/chat": "latest",
25
- "@tencentcloud/tui-core": "latest",
26
- "@tencentcloud/tuiroom-engine-electron": "workspace:^2.6.3",
27
- "@tencentcloud/chat-uikit-engine": "2.2.7",
28
- "@tencentcloud/chat-uikit-vue": "2.2.7",
29
- "@tencentcloud/universal-api": "^2.0.9",
30
- "@tiptap/core": "^2.6.6",
31
- "@tiptap/extension-document": "^2.6.6",
32
- "@tiptap/extension-image": "^2.6.6",
33
- "@tiptap/extension-mention": "^2.6.6",
34
- "@tiptap/extension-paragraph": "^2.6.6",
35
- "@tiptap/extension-placeholder": "^2.6.6",
36
- "@tiptap/extension-text": "^2.6.6",
37
- "@tiptap/pm": "^2.6.6",
38
- "@tiptap/suggestion": "^2.6.6",
39
- dayjs: "^1.11.13",
40
- interactjs: "^1.10.26",
41
- mitt: "^3.0.0",
42
- fabric: "^5.3.0",
43
- "hotkeys-js": "^3.10.1"
44
- };
45
- const peerDependencies = {
46
- pinia: "^2.1.7",
47
- vue: "~3.3.13",
48
- electron: ">=4.0.0"
49
- };
50
- const devDependencies = {
51
- "@originjs/vite-plugin-commonjs": "^1.0.3",
52
- "@vitejs/plugin-vue": "^5.0.4",
53
- sass: "^1.72.0",
54
- typescript: "^5.2.2",
55
- vite: "^5.2.0",
56
- "vite-plugin-css-injected-by-js": "^3.5.0",
57
- "vite-plugin-dts": "^3.7.3",
58
- vue: "~3.3.13",
59
- "vue-tsc": "^2.0.6"
60
- };
61
- const packageConfig = {
62
- name,
63
- version,
64
- main,
65
- module,
66
- types,
67
- homepage,
68
- author,
69
- license,
70
- repository,
71
- keywords,
72
- scripts,
73
- dependencies,
74
- peerDependencies,
75
- devDependencies
76
- };
77
- export {
78
- author,
79
- packageConfig as default,
80
- dependencies,
81
- devDependencies,
82
- homepage,
83
- keywords,
84
- license,
85
- main,
86
- module,
87
- name,
88
- peerDependencies,
89
- repository,
90
- scripts,
91
- types,
92
- version
93
- };