@tencentcloud/roomkit-electron-vue3 2.6.3 → 2.6.7

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 (33) 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.mjs +10 -0
  5. package/es/index.mjs +12 -12
  6. package/es/services/index.d.ts +1 -0
  7. package/es/services/manager/dataReportManager.d.ts +15 -2
  8. package/es/services/manager/dataReportManager.mjs +42 -13
  9. package/es/services/roomService.d.ts +2 -0
  10. package/es/services/roomService.mjs +2 -0
  11. package/es/services/types.d.ts +2 -0
  12. package/lib/components/RoomContent/StreamRegion/LocalScreenView/index.vue.js +1 -1
  13. package/lib/components/RoomContent/StreamRegion/LocalScreenView/index.vue2.js +10 -3
  14. package/lib/components/RoomFooter/WhiteboardControl.vue.js +5 -5
  15. package/lib/conference.js +10 -0
  16. package/lib/index.js +12 -12
  17. package/lib/services/index.d.ts +1 -0
  18. package/lib/services/manager/dataReportManager.d.ts +15 -2
  19. package/lib/services/manager/dataReportManager.js +42 -13
  20. package/lib/services/roomService.d.ts +2 -0
  21. package/lib/services/roomService.js +2 -0
  22. package/lib/services/types.d.ts +2 -0
  23. package/lib/utils/constants.js +1 -1
  24. package/package.json +2 -2
  25. package/src/TUIRoom/components/RoomContent/StreamRegion/LocalScreenView/index.vue +5 -7
  26. package/src/TUIRoom/components/RoomFooter/WhiteboardControl.vue +5 -8
  27. package/src/TUIRoom/conference.ts +10 -0
  28. package/src/TUIRoom/services/index.ts +1 -0
  29. package/src/TUIRoom/services/manager/dataReportManager.ts +48 -13
  30. package/src/TUIRoom/services/roomService.ts +2 -0
  31. package/src/TUIRoom/services/types.ts +2 -0
  32. package/es/package.json.mjs +0 -93
  33. package/lib/package.json.js +0 -93
@@ -1,7 +1,7 @@
1
1
  import _sfc_main from "./index.vue2.mjs";
2
2
  /* empty css */
3
3
  import _export_sfc from "../../../../_virtual/_plugin-vue_export-helper.mjs";
4
- const LocalScreenView = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-5c425af9"]]);
4
+ const LocalScreenView = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-222da582"]]);
5
5
  export {
6
6
  LocalScreenView as default
7
7
  };
@@ -8,7 +8,14 @@ import Dialog from "../../../common/base/Dialog/index.vue.mjs";
8
8
  import bus from "../../../../hooks/useMitt.mjs";
9
9
  import { useI18n } from "../../../../locales/index.mjs";
10
10
  import { useRoomStore } from "../../../../stores/room.mjs";
11
- import { DataReportManager, MetricsKey } from "../../../../services/manager/dataReportManager.mjs";
11
+ import { MetricsKey } from "../../../../services/manager/dataReportManager.mjs";
12
+ import "../../../../services/main.mjs";
13
+ import { roomService } from "../../../../services/roomService.mjs";
14
+ import "@tencentcloud/tuiroom-engine-electron";
15
+ import "mitt";
16
+ import "../../../../services/manager/roomActionManager.mjs";
17
+ import "@tencentcloud/tui-core";
18
+ import "../../../../utils/environment.mjs";
12
19
  const _hoisted_1 = { class: "local-screen-container" };
13
20
  const _hoisted_2 = { class: "local-screen-info" };
14
21
  const _hoisted_3 = { class: "text" };
@@ -41,16 +48,16 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
41
48
  if (isAnnotationVisiable.value) {
42
49
  (_a2 = ipcRenderer) == null ? void 0 : _a2.send("annotation:stop-annotating");
43
50
  isAnnotationVisiable.value = false;
44
- DataReportManager.reportCount(MetricsKey.stopAnnotating);
51
+ roomService.dataReportManager.reportCount(MetricsKey.stopAnnotating);
45
52
  } else {
46
53
  (_b = ipcRenderer) == null ? void 0 : _b.send("annotation:start-annotating");
47
54
  isAnnotationVisiable.value = true;
48
- DataReportManager.reportCount(MetricsKey.startAnnotating);
55
+ roomService.dataReportManager.reportCount(MetricsKey.startAnnotating);
49
56
  }
50
57
  }
51
58
  (_a = ipcRenderer) == null ? void 0 : _a.on("annotation:stop-from-annotation-window", () => {
52
59
  isAnnotationVisiable.value = false;
53
- DataReportManager.reportCount(MetricsKey.stopAnnotating);
60
+ roomService.dataReportManager.reportCount(MetricsKey.stopAnnotating);
54
61
  });
55
62
  return (_ctx, _cache) => {
56
63
  return openBlock(), createElementBlock("div", _hoisted_1, [
@@ -15,9 +15,9 @@ import { EventType } from "../../services/types.mjs";
15
15
  import "mitt";
16
16
  import "../../services/manager/roomActionManager.mjs";
17
17
  import "@tencentcloud/tui-core";
18
+ import { MetricsKey } from "../../services/manager/dataReportManager.mjs";
18
19
  import "../../utils/environment.mjs";
19
20
  import { MESSAGE_DURATION } from "../../constants/message.mjs";
20
- import { DataReportManager, MetricsKey } from "../../services/manager/dataReportManager.mjs";
21
21
  const _hoisted_1 = { class: "whiteboard-control-container" };
22
22
  const _sfc_main = /* @__PURE__ */ defineComponent({
23
23
  __name: "WhiteboardControl",
@@ -87,10 +87,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
87
87
  var _a;
88
88
  (_a = roomEngine.instance) == null ? void 0 : _a.stopScreenSharing();
89
89
  if (isWhiteboardVisiable.value) {
90
- DataReportManager.reportCount(MetricsKey.stopSharingWhiteboard);
90
+ roomService.dataReportManager.reportCount(MetricsKey.stopSharingWhiteboard);
91
91
  }
92
92
  if (isAnnotationVisiable.value) {
93
- DataReportManager.reportCount(MetricsKey.stopAnnotating);
93
+ roomService.dataReportManager.reportCount(MetricsKey.stopAnnotating);
94
94
  }
95
95
  isWhiteboardVisiable.value = false;
96
96
  isAnnotationVisiable.value = false;
@@ -103,7 +103,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
103
103
  function showWhiteboardWindow() {
104
104
  isWhiteboardVisiable.value = true;
105
105
  ipcRenderer.send("whiteboard:show-window");
106
- DataReportManager.reportCount(MetricsKey.startSharingWhiteboard);
106
+ roomService.dataReportManager.reportCount(MetricsKey.startSharingWhiteboard);
107
107
  }
108
108
  ipcRenderer.on("whiteboard:window-closed", () => {
109
109
  stopShareWhiteboard();
@@ -112,7 +112,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
112
112
  stopShareWhiteboard();
113
113
  });
114
114
  ipcRenderer.on("whiteboard:save-from-whiteboard-window", () => {
115
- DataReportManager.reportCount(MetricsKey.saveWhiteboard);
115
+ roomService.dataReportManager.reportCount(MetricsKey.saveWhiteboard);
116
116
  });
117
117
  onMounted(() => {
118
118
  bus.on("ScreenShare:stopScreenShare", stopShareWhiteboard);
package/es/conference.mjs CHANGED
@@ -6,6 +6,7 @@ import "@tencentcloud/tuiroom-engine-electron";
6
6
  import "mitt";
7
7
  import "./services/manager/roomActionManager.mjs";
8
8
  import "@tencentcloud/tui-core";
9
+ import { MetricsKey } from "./services/manager/dataReportManager.mjs";
9
10
  import "./utils/environment.mjs";
10
11
  import { toTargetTheme } from "./utils/common.mjs";
11
12
  var RoomEvent = /* @__PURE__ */ ((RoomEvent2) => {
@@ -67,27 +68,36 @@ class Conference {
67
68
  return roomService.setSelfInfo(options);
68
69
  }
69
70
  setLanguage(language) {
71
+ roomService.dataReportManager.reportCount(MetricsKey.setLanguage);
70
72
  return roomService.setLanguage(language);
71
73
  }
72
74
  setTheme(theme) {
75
+ roomService.dataReportManager.reportCount(MetricsKey.setTheme);
73
76
  return roomService.setTheme(toTargetTheme(theme));
74
77
  }
75
78
  disableTextMessaging() {
79
+ roomService.dataReportManager.reportCount(MetricsKey.disableTextMessaging);
76
80
  roomService.setComponentConfig({ ChatControl: { visible: false } });
77
81
  }
78
82
  disableScreenSharing() {
83
+ roomService.dataReportManager.reportCount(MetricsKey.disableScreenSharing);
79
84
  roomService.setComponentConfig({ ScreenShare: { visible: false } });
80
85
  }
81
86
  enableWatermark() {
87
+ roomService.dataReportManager.reportCount(MetricsKey.enableWatermark);
82
88
  roomService.waterMark.toggleWatermark(true);
83
89
  }
84
90
  enableVirtualBackground() {
91
+ roomService.dataReportManager.reportCount(
92
+ MetricsKey.enableVirtualBackground
93
+ );
85
94
  roomService.setComponentConfig({ VirtualBackground: { visible: true } });
86
95
  }
87
96
  enableBasicBeauty() {
88
97
  roomService.setComponentConfig({ BasicBeauty: { visible: true } });
89
98
  }
90
99
  hideFeatureButton(name) {
100
+ roomService.dataReportManager.reportCount(MetricsKey.hideFeatureButton);
91
101
  roomService.setComponentConfig({ [name]: { visible: false } });
92
102
  }
93
103
  replaceFriendList(userList) {
package/es/index.mjs 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,6 +1,7 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
1
4
  import TUIRoomEngine__default from "@tencentcloud/tuiroom-engine-electron";
2
- import packageConfig from "../../package.json.mjs";
3
- const appVersion = packageConfig.version;
4
5
  const KEY_METRICS_API = "KeyMetricsStats";
5
6
  var MetricsKey = /* @__PURE__ */ ((MetricsKey2) => {
6
7
  MetricsKey2[MetricsKey2["startSharingWhiteboard"] = 106e3] = "startSharingWhiteboard";
@@ -8,20 +9,48 @@ var MetricsKey = /* @__PURE__ */ ((MetricsKey2) => {
8
9
  MetricsKey2[MetricsKey2["startAnnotating"] = 106002] = "startAnnotating";
9
10
  MetricsKey2[MetricsKey2["stopAnnotating"] = 106003] = "stopAnnotating";
10
11
  MetricsKey2[MetricsKey2["saveWhiteboard"] = 106004] = "saveWhiteboard";
12
+ MetricsKey2[MetricsKey2["setLanguage"] = 106050] = "setLanguage";
13
+ MetricsKey2[MetricsKey2["setTheme"] = 106051] = "setTheme";
14
+ MetricsKey2[MetricsKey2["disableTextMessaging"] = 106052] = "disableTextMessaging";
15
+ MetricsKey2[MetricsKey2["disableScreenSharing"] = 106053] = "disableScreenSharing";
16
+ MetricsKey2[MetricsKey2["enableWatermark"] = 106054] = "enableWatermark";
17
+ MetricsKey2[MetricsKey2["enableVirtualBackground"] = 106055] = "enableVirtualBackground";
18
+ MetricsKey2[MetricsKey2["hideFeatureButton"] = 106056] = "hideFeatureButton";
11
19
  return MetricsKey2;
12
20
  })(MetricsKey || {});
13
21
  class DataReportManager {
14
- static reportCount(key) {
15
- TUIRoomEngine__default.callExperimentalAPI(
16
- JSON.stringify({
17
- api: KEY_METRICS_API,
18
- params: {
19
- opt: "count",
20
- key,
21
- version: appVersion
22
- }
23
- })
24
- );
22
+ constructor() {
23
+ __publicField(this, "taskQueue", []);
24
+ __publicField(this, "isReady", false);
25
+ this.bindEvent();
26
+ }
27
+ reportCount(key) {
28
+ const task = this.createReportCountTask(key);
29
+ if (!this.isReady) {
30
+ this.taskQueue.push(task);
31
+ } else {
32
+ task();
33
+ }
34
+ }
35
+ bindEvent() {
36
+ TUIRoomEngine__default.once("ready", () => {
37
+ this.isReady = true;
38
+ this.executePendingTasks();
39
+ });
40
+ }
41
+ executePendingTasks() {
42
+ this.taskQueue.forEach((task) => task());
43
+ this.taskQueue = [];
44
+ }
45
+ createReportCountTask(key) {
46
+ return () => {
47
+ TUIRoomEngine__default.callExperimentalAPI(
48
+ JSON.stringify({
49
+ api: KEY_METRICS_API,
50
+ params: { key }
51
+ })
52
+ );
53
+ };
25
54
  }
26
55
  }
27
56
  export {
@@ -12,6 +12,7 @@ import { VirtualBackground } from './function/virtualBackground';
12
12
  import { BasicBeauty } from './function/basicBeauty';
13
13
  import { ScheduleConferenceManager } from './manager/scheduleConferenceManager';
14
14
  import { ConferenceInvitationManager } from './manager/conferenceInvitationManager';
15
+ import { DataReportManager } from './manager/dataReportManager';
15
16
  import { ErrorHandler } from './function/errorHandler';
16
17
  import { ChatManager } from './manager/chatManager';
17
18
  import { AITask } from './function/aiTask';
@@ -31,6 +32,7 @@ export declare class RoomService implements IRoomService {
31
32
  basicBeauty: BasicBeauty;
32
33
  scheduleConferenceManager: ScheduleConferenceManager;
33
34
  conferenceInvitationManager: ConferenceInvitationManager;
35
+ dataReportManager: DataReportManager;
34
36
  errorHandler: ErrorHandler;
35
37
  chatManager: ChatManager;
36
38
  aiTask: AITask;
@@ -24,6 +24,7 @@ import { VirtualBackground } from "./function/virtualBackground.mjs";
24
24
  import { BasicBeauty } from "./function/basicBeauty.mjs";
25
25
  import { ScheduleConferenceManager } from "./manager/scheduleConferenceManager.mjs";
26
26
  import { ConferenceInvitationManager } from "./manager/conferenceInvitationManager.mjs";
27
+ import { DataReportManager } from "./manager/dataReportManager.mjs";
27
28
  import { ErrorHandler } from "./function/errorHandler.mjs";
28
29
  import { ChatManager } from "./manager/chatManager.mjs";
29
30
  import { TUILogin } from "@tencentcloud/tui-core";
@@ -45,6 +46,7 @@ const _RoomService = class _RoomService {
45
46
  __publicField(this, "basicBeauty", new BasicBeauty(this));
46
47
  __publicField(this, "scheduleConferenceManager", new ScheduleConferenceManager(this));
47
48
  __publicField(this, "conferenceInvitationManager", new ConferenceInvitationManager(this));
49
+ __publicField(this, "dataReportManager", new DataReportManager());
48
50
  __publicField(this, "errorHandler", new ErrorHandler(this));
49
51
  __publicField(this, "chatManager", new ChatManager(this));
50
52
  __publicField(this, "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
 
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;
@@ -3,5 +3,5 @@ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toString
3
3
  const index_vue_vue_type_script_setup_true_lang = require("./index.vue2.js");
4
4
  ;/* empty css */
5
5
  const _pluginVue_exportHelper = require("../../../../_virtual/_plugin-vue_export-helper.js");
6
- const LocalScreenView = /* @__PURE__ */ _pluginVue_exportHelper.default(index_vue_vue_type_script_setup_true_lang.default, [["__scopeId", "data-v-5c425af9"]]);
6
+ const LocalScreenView = /* @__PURE__ */ _pluginVue_exportHelper.default(index_vue_vue_type_script_setup_true_lang.default, [["__scopeId", "data-v-222da582"]]);
7
7
  exports.default = LocalScreenView;
@@ -11,6 +11,13 @@ const useMitt = require("../../../../hooks/useMitt.js");
11
11
  const index = require("../../../../locales/index.js");
12
12
  const room = require("../../../../stores/room.js");
13
13
  const dataReportManager = require("../../../../services/manager/dataReportManager.js");
14
+ require("../../../../services/main.js");
15
+ const roomService = require("../../../../services/roomService.js");
16
+ require("@tencentcloud/tuiroom-engine-electron");
17
+ require("mitt");
18
+ require("../../../../services/manager/roomActionManager.js");
19
+ require("@tencentcloud/tui-core");
20
+ require("../../../../utils/environment.js");
14
21
  const _hoisted_1 = { class: "local-screen-container" };
15
22
  const _hoisted_2 = { class: "local-screen-info" };
16
23
  const _hoisted_3 = { class: "text" };
@@ -43,16 +50,16 @@ const _sfc_main = /* @__PURE__ */ Vue.defineComponent({
43
50
  if (isAnnotationVisiable.value) {
44
51
  (_a2 = electron.ipcRenderer) == null ? void 0 : _a2.send("annotation:stop-annotating");
45
52
  isAnnotationVisiable.value = false;
46
- dataReportManager.DataReportManager.reportCount(dataReportManager.MetricsKey.stopAnnotating);
53
+ roomService.roomService.dataReportManager.reportCount(dataReportManager.MetricsKey.stopAnnotating);
47
54
  } else {
48
55
  (_b = electron.ipcRenderer) == null ? void 0 : _b.send("annotation:start-annotating");
49
56
  isAnnotationVisiable.value = true;
50
- dataReportManager.DataReportManager.reportCount(dataReportManager.MetricsKey.startAnnotating);
57
+ roomService.roomService.dataReportManager.reportCount(dataReportManager.MetricsKey.startAnnotating);
51
58
  }
52
59
  }
53
60
  (_a = electron.ipcRenderer) == null ? void 0 : _a.on("annotation:stop-from-annotation-window", () => {
54
61
  isAnnotationVisiable.value = false;
55
- dataReportManager.DataReportManager.reportCount(dataReportManager.MetricsKey.stopAnnotating);
62
+ roomService.roomService.dataReportManager.reportCount(dataReportManager.MetricsKey.stopAnnotating);
56
63
  });
57
64
  return (_ctx, _cache) => {
58
65
  return Vue.openBlock(), Vue.createElementBlock("div", _hoisted_1, [
@@ -17,9 +17,9 @@ const types = require("../../services/types.js");
17
17
  require("mitt");
18
18
  require("../../services/manager/roomActionManager.js");
19
19
  require("@tencentcloud/tui-core");
20
+ const dataReportManager = require("../../services/manager/dataReportManager.js");
20
21
  require("../../utils/environment.js");
21
22
  const message = require("../../constants/message.js");
22
- const dataReportManager = require("../../services/manager/dataReportManager.js");
23
23
  const _hoisted_1 = { class: "whiteboard-control-container" };
24
24
  const _sfc_main = /* @__PURE__ */ Vue.defineComponent({
25
25
  __name: "WhiteboardControl",
@@ -89,10 +89,10 @@ const _sfc_main = /* @__PURE__ */ Vue.defineComponent({
89
89
  var _a;
90
90
  (_a = roomService.roomEngine.instance) == null ? void 0 : _a.stopScreenSharing();
91
91
  if (isWhiteboardVisiable.value) {
92
- dataReportManager.DataReportManager.reportCount(dataReportManager.MetricsKey.stopSharingWhiteboard);
92
+ roomService.roomService.dataReportManager.reportCount(dataReportManager.MetricsKey.stopSharingWhiteboard);
93
93
  }
94
94
  if (isAnnotationVisiable.value) {
95
- dataReportManager.DataReportManager.reportCount(dataReportManager.MetricsKey.stopAnnotating);
95
+ roomService.roomService.dataReportManager.reportCount(dataReportManager.MetricsKey.stopAnnotating);
96
96
  }
97
97
  isWhiteboardVisiable.value = false;
98
98
  isAnnotationVisiable.value = false;
@@ -105,7 +105,7 @@ const _sfc_main = /* @__PURE__ */ Vue.defineComponent({
105
105
  function showWhiteboardWindow() {
106
106
  isWhiteboardVisiable.value = true;
107
107
  electron.ipcRenderer.send("whiteboard:show-window");
108
- dataReportManager.DataReportManager.reportCount(dataReportManager.MetricsKey.startSharingWhiteboard);
108
+ roomService.roomService.dataReportManager.reportCount(dataReportManager.MetricsKey.startSharingWhiteboard);
109
109
  }
110
110
  electron.ipcRenderer.on("whiteboard:window-closed", () => {
111
111
  stopShareWhiteboard();
@@ -114,7 +114,7 @@ const _sfc_main = /* @__PURE__ */ Vue.defineComponent({
114
114
  stopShareWhiteboard();
115
115
  });
116
116
  electron.ipcRenderer.on("whiteboard:save-from-whiteboard-window", () => {
117
- dataReportManager.DataReportManager.reportCount(dataReportManager.MetricsKey.saveWhiteboard);
117
+ roomService.roomService.dataReportManager.reportCount(dataReportManager.MetricsKey.saveWhiteboard);
118
118
  });
119
119
  Vue.onMounted(() => {
120
120
  useMitt.default.on("ScreenShare:stopScreenShare", stopShareWhiteboard);
package/lib/conference.js CHANGED
@@ -8,6 +8,7 @@ require("@tencentcloud/tuiroom-engine-electron");
8
8
  require("mitt");
9
9
  require("./services/manager/roomActionManager.js");
10
10
  require("@tencentcloud/tui-core");
11
+ const dataReportManager = require("./services/manager/dataReportManager.js");
11
12
  require("./utils/environment.js");
12
13
  const common = require("./utils/common.js");
13
14
  var RoomEvent = /* @__PURE__ */ ((RoomEvent2) => {
@@ -69,27 +70,36 @@ class Conference {
69
70
  return roomService.roomService.setSelfInfo(options);
70
71
  }
71
72
  setLanguage(language) {
73
+ roomService.roomService.dataReportManager.reportCount(dataReportManager.MetricsKey.setLanguage);
72
74
  return roomService.roomService.setLanguage(language);
73
75
  }
74
76
  setTheme(theme) {
77
+ roomService.roomService.dataReportManager.reportCount(dataReportManager.MetricsKey.setTheme);
75
78
  return roomService.roomService.setTheme(common.toTargetTheme(theme));
76
79
  }
77
80
  disableTextMessaging() {
81
+ roomService.roomService.dataReportManager.reportCount(dataReportManager.MetricsKey.disableTextMessaging);
78
82
  roomService.roomService.setComponentConfig({ ChatControl: { visible: false } });
79
83
  }
80
84
  disableScreenSharing() {
85
+ roomService.roomService.dataReportManager.reportCount(dataReportManager.MetricsKey.disableScreenSharing);
81
86
  roomService.roomService.setComponentConfig({ ScreenShare: { visible: false } });
82
87
  }
83
88
  enableWatermark() {
89
+ roomService.roomService.dataReportManager.reportCount(dataReportManager.MetricsKey.enableWatermark);
84
90
  roomService.roomService.waterMark.toggleWatermark(true);
85
91
  }
86
92
  enableVirtualBackground() {
93
+ roomService.roomService.dataReportManager.reportCount(
94
+ dataReportManager.MetricsKey.enableVirtualBackground
95
+ );
87
96
  roomService.roomService.setComponentConfig({ VirtualBackground: { visible: true } });
88
97
  }
89
98
  enableBasicBeauty() {
90
99
  roomService.roomService.setComponentConfig({ BasicBeauty: { visible: true } });
91
100
  }
92
101
  hideFeatureButton(name) {
102
+ roomService.roomService.dataReportManager.reportCount(dataReportManager.MetricsKey.hideFeatureButton);
93
103
  roomService.roomService.setComponentConfig({ [name]: { visible: false } });
94
104
  }
95
105
  replaceFriendList(userList) {
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;
@@ -12,6 +12,7 @@ import { VirtualBackground } from './function/virtualBackground';
12
12
  import { BasicBeauty } from './function/basicBeauty';
13
13
  import { ScheduleConferenceManager } from './manager/scheduleConferenceManager';
14
14
  import { ConferenceInvitationManager } from './manager/conferenceInvitationManager';
15
+ import { DataReportManager } from './manager/dataReportManager';
15
16
  import { ErrorHandler } from './function/errorHandler';
16
17
  import { ChatManager } from './manager/chatManager';
17
18
  import { AITask } from './function/aiTask';
@@ -31,6 +32,7 @@ export declare class RoomService implements IRoomService {
31
32
  basicBeauty: BasicBeauty;
32
33
  scheduleConferenceManager: ScheduleConferenceManager;
33
34
  conferenceInvitationManager: ConferenceInvitationManager;
35
+ dataReportManager: DataReportManager;
34
36
  errorHandler: ErrorHandler;
35
37
  chatManager: ChatManager;
36
38
  aiTask: AITask;
@@ -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",
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",
@@ -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
- };
@@ -1,93 +0,0 @@
1
- "use strict";
2
- Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
- const name = "@tencentcloud/roomkit-electron-vue3";
4
- const version = "2.6.3";
5
- const main = "./lib/index.js";
6
- const module$1 = "./es/index.mjs";
7
- const types = "./es/index.d.ts";
8
- const homepage = "https://cloud.tencent.com/document/product/647/81962";
9
- const author = "Tencent Cloud Client R&D Center";
10
- const license = "ISC";
11
- const repository = {
12
- type: "git",
13
- url: "git@github.com:tencentyun/TUIRoomKit.git"
14
- };
15
- const keywords = [
16
- "conference",
17
- "tuiroomkit",
18
- "webrtc",
19
- "javascript"
20
- ];
21
- const scripts = {
22
- dev: "vite build --watch",
23
- build: "vite build"
24
- };
25
- const dependencies = {
26
- "@tencentcloud/chat": "latest",
27
- "@tencentcloud/tui-core": "latest",
28
- "@tencentcloud/tuiroom-engine-electron": "workspace:^2.6.3",
29
- "@tencentcloud/chat-uikit-engine": "2.2.7",
30
- "@tencentcloud/chat-uikit-vue": "2.2.7",
31
- "@tencentcloud/universal-api": "^2.0.9",
32
- "@tiptap/core": "^2.6.6",
33
- "@tiptap/extension-document": "^2.6.6",
34
- "@tiptap/extension-image": "^2.6.6",
35
- "@tiptap/extension-mention": "^2.6.6",
36
- "@tiptap/extension-paragraph": "^2.6.6",
37
- "@tiptap/extension-placeholder": "^2.6.6",
38
- "@tiptap/extension-text": "^2.6.6",
39
- "@tiptap/pm": "^2.6.6",
40
- "@tiptap/suggestion": "^2.6.6",
41
- dayjs: "^1.11.13",
42
- interactjs: "^1.10.26",
43
- mitt: "^3.0.0",
44
- fabric: "^5.3.0",
45
- "hotkeys-js": "^3.10.1"
46
- };
47
- const peerDependencies = {
48
- pinia: "^2.1.7",
49
- vue: "~3.3.13",
50
- electron: ">=4.0.0"
51
- };
52
- const devDependencies = {
53
- "@originjs/vite-plugin-commonjs": "^1.0.3",
54
- "@vitejs/plugin-vue": "^5.0.4",
55
- sass: "^1.72.0",
56
- typescript: "^5.2.2",
57
- vite: "^5.2.0",
58
- "vite-plugin-css-injected-by-js": "^3.5.0",
59
- "vite-plugin-dts": "^3.7.3",
60
- vue: "~3.3.13",
61
- "vue-tsc": "^2.0.6"
62
- };
63
- const packageConfig = {
64
- name,
65
- version,
66
- main,
67
- module: module$1,
68
- types,
69
- homepage,
70
- author,
71
- license,
72
- repository,
73
- keywords,
74
- scripts,
75
- dependencies,
76
- peerDependencies,
77
- devDependencies
78
- };
79
- exports.author = author;
80
- exports.default = packageConfig;
81
- exports.dependencies = dependencies;
82
- exports.devDependencies = devDependencies;
83
- exports.homepage = homepage;
84
- exports.keywords = keywords;
85
- exports.license = license;
86
- exports.main = main;
87
- exports.module = module$1;
88
- exports.name = name;
89
- exports.peerDependencies = peerDependencies;
90
- exports.repository = repository;
91
- exports.scripts = scripts;
92
- exports.types = types;
93
- exports.version = version;