@tencentcloud/roomkit-electron-vue3 2.4.2 → 2.5.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 (430) hide show
  1. package/es/components/Chat/ChatEditor/useChatEditor.mjs +1 -1
  2. package/es/components/Chat/MessageList/index.vue.mjs +1 -1
  3. package/es/components/Chat/MessageList/index.vue2.mjs +5 -1
  4. package/es/components/Chat/MessageList/useMessageListHook.mjs +4 -3
  5. package/es/components/ManageMember/MemberControl/index.vue.mjs +1 -1
  6. package/es/components/ManageMember/MemberControl/index.vue2.mjs +36 -19
  7. package/es/components/ManageMember/MemberControl/useMemberControlHooks.d.ts +6 -1
  8. package/es/components/ManageMember/MemberControl/useMemberControlHooks.mjs +113 -17
  9. package/es/components/ManageMember/MemberItem/useMemberItemHooks.d.ts +1 -0
  10. package/es/components/ManageMember/MemberItem/useMemberItemHooks.mjs +8 -6
  11. package/es/components/ManageMember/MemberItemCommon/MemberInfo.vue.mjs +1 -1
  12. package/es/components/ManageMember/MemberItemCommon/MemberInfo.vue2.mjs +7 -3
  13. package/es/components/ManageMember/index.vue.mjs +1 -1
  14. package/es/components/ManageMember/index.vue2.mjs +58 -7
  15. package/es/components/ManageMember/useIndexHooks.mjs +63 -14
  16. package/es/components/RoomContent/StreamContainer/index.vue.mjs +1 -1
  17. package/es/components/RoomContent/StreamContainer/index.vue2.mjs +10 -9
  18. package/es/components/RoomContent/StreamContainer/useStreamContainerHooks.d.ts +8 -0
  19. package/es/components/RoomContent/StreamContainer/useStreamContainerHooks.mjs +73 -29
  20. package/es/components/RoomContent/StreamRegion/index.vue.d.ts +5 -1
  21. package/es/components/RoomContent/StreamRegion/index.vue.mjs +1 -1
  22. package/es/components/RoomContent/StreamRegion/index.vue2.mjs +29 -5
  23. package/es/components/RoomFooter/ApplyControl/MasterApplyControl/index.vue.mjs +1 -1
  24. package/es/components/RoomFooter/ApplyControl/MasterApplyControl/index.vue2.mjs +10 -4
  25. package/es/components/RoomFooter/ApplyControl/MemberApplyControl.vue2.mjs +2 -2
  26. package/es/components/RoomFooter/AudioControl.vue2.mjs +2 -2
  27. package/es/components/RoomFooter/EndControl/index.vue.mjs +1 -1
  28. package/es/components/RoomFooter/EndControl/index.vue2.mjs +1 -1
  29. package/es/components/RoomFooter/EndControl/useEndControlHooks.mjs +16 -4
  30. package/es/components/RoomFooter/ScreenShareControl/Index.vue.mjs +1 -1
  31. package/es/components/RoomFooter/ScreenShareControl/Index.vue2.mjs +11 -3
  32. package/es/components/RoomFooter/VideoControl.vue.mjs +1 -1
  33. package/es/components/RoomFooter/VideoControl.vue2.mjs +8 -14
  34. package/es/components/RoomHeader/RoomInfo/index.vue2.mjs +2 -2
  35. package/es/components/RoomHeader/UserInfo/index.vue.d.ts +3 -11
  36. package/es/components/RoomHeader/UserInfo/index.vue.mjs +1 -1
  37. package/es/components/RoomHeader/UserInfo/index.vue2.mjs +9 -92
  38. package/es/components/RoomHeader/UserInfo/useUserInfoHooks.d.ts +2 -8
  39. package/es/components/RoomHeader/UserInfo/useUserInfoHooks.mjs +1 -18
  40. package/es/components/RoomHeader/index/NetworkInfo.vue2.mjs +2 -2
  41. package/es/components/RoomHome/RoomControl/index.vue.d.ts +10 -0
  42. package/es/components/RoomHome/RoomControl/index.vue.mjs +1 -1
  43. package/es/components/RoomHome/RoomControl/index.vue2.mjs +153 -120
  44. package/es/components/RoomInvite/index.vue2.mjs +2 -2
  45. package/es/components/RoomMore/index.vue2.mjs +2 -2
  46. package/es/components/RoomSidebar/useSideBarHooks.mjs +3 -2
  47. package/es/components/ScheduleConference/Contacts.vue.d.ts +22 -0
  48. package/es/components/ScheduleConference/Contacts.vue.mjs +7 -0
  49. package/es/components/ScheduleConference/Contacts.vue2.mjs +212 -0
  50. package/es/components/ScheduleConference/DurationTimePicker.vue.d.ts +18 -0
  51. package/es/components/ScheduleConference/DurationTimePicker.vue.mjs +67 -0
  52. package/es/components/ScheduleConference/DurationTimePicker.vue2.mjs +4 -0
  53. package/es/components/ScheduleConference/ScheduleConferencePanel.vue.d.ts +22 -0
  54. package/es/components/ScheduleConference/ScheduleConferencePanel.vue.mjs +7 -0
  55. package/es/components/ScheduleConference/ScheduleConferencePanel.vue2.mjs +613 -0
  56. package/es/components/ScheduleConference/ScheduleConferencePanel.vue3.mjs +1 -0
  57. package/es/components/ScheduleConference/ScheduleRoomControl.vue.d.ts +29 -0
  58. package/es/components/ScheduleConference/ScheduleRoomControl.vue.mjs +7 -0
  59. package/es/components/ScheduleConference/ScheduleRoomControl.vue2.mjs +464 -0
  60. package/es/components/ScheduleConference/ScheduleRoomControl.vue3.mjs +1 -0
  61. package/es/components/{common/base/Input.vue.d.ts → ScheduleConference/ScheduleRoomList.vue.d.ts} +11 -22
  62. package/es/components/ScheduleConference/ScheduleRoomList.vue.mjs +7 -0
  63. package/es/components/ScheduleConference/ScheduleRoomList.vue2.mjs +219 -0
  64. package/es/components/ScheduleConference/ScheduleRoomList.vue3.mjs +1 -0
  65. package/es/components/ScheduleConference/ShareLink.vue.d.ts +24 -0
  66. package/es/components/ScheduleConference/ShareLink.vue.mjs +7 -0
  67. package/es/components/ScheduleConference/ShareLink.vue2.mjs +113 -0
  68. package/es/components/ScheduleConference/ShareLink.vue3.mjs +1 -0
  69. package/es/components/ScheduleConference/TimezonePicker.vue.d.ts +18 -0
  70. package/es/components/ScheduleConference/TimezonePicker.vue.mjs +84 -0
  71. package/es/components/ScheduleConference/TimezonePicker.vue2.mjs +4 -0
  72. package/es/components/common/Avatar.vue.mjs +2 -2
  73. package/es/components/common/DeviceSelect.vue.mjs +1 -1
  74. package/es/components/common/DeviceSelect.vue2.mjs +58 -19
  75. package/es/components/common/Logo.vue.mjs +1 -1
  76. package/es/components/common/Logo.vue2.mjs +3 -3
  77. package/es/components/common/VideoProfile.vue2.mjs +2 -2
  78. package/es/components/common/base/Badge.vue.d.ts +1 -1
  79. package/es/components/common/base/Button.vue.d.ts +2 -2
  80. package/es/components/common/base/Checkbox.vue.d.ts +4 -2
  81. package/es/components/common/base/Checkbox.vue.mjs +2 -2
  82. package/es/components/common/base/Checkbox.vue2.mjs +12 -5
  83. package/es/components/common/base/Datepicker/Datepicker.vue.d.ts +18 -0
  84. package/es/components/common/base/Datepicker/Datepicker.vue.mjs +7 -0
  85. package/es/components/common/base/Datepicker/Datepicker.vue2.mjs +167 -0
  86. package/es/components/common/base/Datepicker/Datepicker.vue3.mjs +1 -0
  87. package/es/components/common/base/Datepicker/Timepicker.vue.d.ts +18 -0
  88. package/es/components/common/base/Datepicker/Timepicker.vue.mjs +66 -0
  89. package/es/components/common/base/Datepicker/Timepicker.vue2.mjs +4 -0
  90. package/es/components/common/base/Dialog/index.vue.d.ts +8 -4
  91. package/es/components/common/base/Dialog/index.vue.mjs +1 -1
  92. package/es/components/common/base/Dialog/index.vue2.mjs +17 -9
  93. package/es/components/common/base/Drawer.vue.d.ts +1 -1
  94. package/es/components/common/base/IconButton.vue.d.ts +2 -2
  95. package/es/components/common/base/Input/index.vue.d.ts +77 -0
  96. package/es/components/common/base/Input/index.vue.mjs +7 -0
  97. package/es/components/common/base/Input/index.vue2.mjs +140 -0
  98. package/es/components/common/base/Input/index.vue3.mjs +1 -0
  99. package/es/components/common/base/Message/Instance.mjs +1 -1
  100. package/es/components/common/base/Message/Message.vue.d.ts +4 -4
  101. package/es/components/common/base/MessageBox/index.d.ts +3 -2
  102. package/es/components/common/base/MessageBox/index.mjs +2 -1
  103. package/es/components/common/base/MessageBox/index.vue.d.ts +6 -1
  104. package/es/components/common/base/MessageBox/index.vue.mjs +1 -1
  105. package/es/components/common/base/MessageBox/index.vue2.mjs +60 -10
  106. package/es/components/common/base/Notification/index.vue.d.ts +2 -2
  107. package/es/components/common/base/Option.vue.d.ts +11 -1
  108. package/es/components/common/base/Option.vue.mjs +1 -1
  109. package/es/components/common/base/Option.vue2.mjs +16 -6
  110. package/es/components/common/base/Select.vue.d.ts +5 -1
  111. package/es/components/common/base/Select.vue.mjs +1 -1
  112. package/es/components/common/base/Select.vue2.mjs +12 -11
  113. package/es/components/common/base/index.d.ts +1 -1
  114. package/es/components/common/icons/AllMembersShareScreenIcon.vue.d.ts +2 -0
  115. package/es/components/common/icons/AllMembersShareScreenIcon.vue.mjs +22 -0
  116. package/es/components/common/icons/CalendarIcon.vue.d.ts +2 -0
  117. package/es/components/common/icons/CalendarIcon.vue.mjs +24 -0
  118. package/es/components/common/icons/CopyIcon.vue.mjs +2 -2
  119. package/es/components/common/icons/EditNameCardIcon.vue.d.ts +2 -0
  120. package/es/components/common/icons/EditNameCardIcon.vue.mjs +21 -0
  121. package/es/components/common/icons/EllipsisIcon.vue.d.ts +2 -0
  122. package/es/components/common/icons/EllipsisIcon.vue.mjs +34 -0
  123. package/es/components/common/icons/HostShareScreenIcon.vue.d.ts +2 -0
  124. package/es/components/common/icons/HostShareScreenIcon.vue.mjs +22 -0
  125. package/es/components/common/icons/LinkIcon.vue.d.ts +2 -0
  126. package/es/components/common/icons/LinkIcon.vue.mjs +36 -0
  127. package/es/components/common/icons/LoadingScheduleIcon.vue.d.ts +2 -0
  128. package/es/components/common/icons/LoadingScheduleIcon.vue.mjs +24 -0
  129. package/es/components/common/icons/ScheduleAttendees.vue.d.ts +6 -0
  130. package/es/components/common/icons/ScheduleAttendees.vue.mjs +25 -0
  131. package/es/components/common/icons/ScheduleAttendees.vue2.mjs +4 -0
  132. package/es/components/common/icons/ScheduleRoomIcon.vue.d.ts +2 -0
  133. package/es/components/common/icons/ScheduleRoomIcon.vue.mjs +24 -0
  134. package/es/components/common/icons/SuccessIcon.vue.d.ts +2 -0
  135. package/es/components/common/icons/SuccessIcon.vue.mjs +32 -0
  136. package/es/components/common/icons/WarningIcon.vue.d.ts +2 -0
  137. package/es/components/common/icons/WarningIcon.vue.mjs +29 -0
  138. package/es/conference.d.ts +2 -0
  139. package/es/conference.mjs +3 -0
  140. package/es/conference.vue.mjs +1 -1
  141. package/es/conference.vue2.mjs +9 -4
  142. package/es/directives/vDblTouch.d.ts +10 -0
  143. package/es/directives/vTap.d.ts +1 -0
  144. package/es/directives/vTap.mjs +30 -3
  145. package/es/extension/chatExtension.mjs +3 -3
  146. package/es/hooks/useDeviceManager.mjs +3 -3
  147. package/es/hooks/useMasterApplyControl.mjs +5 -5
  148. package/es/hooks/useRoomEngine.mjs +4 -4
  149. package/es/index.d.ts +1 -0
  150. package/es/index.mjs +2383 -1545
  151. package/es/locales/en-US.d.ts +75 -0
  152. package/es/locales/en-US.mjs +78 -1
  153. package/es/locales/zh-CN.d.ts +79 -0
  154. package/es/locales/zh-CN.mjs +83 -2
  155. package/es/preConference.vue.d.ts +10 -0
  156. package/es/preConference.vue.mjs +1 -1
  157. package/es/preConference.vue2.mjs +89 -13
  158. package/es/services/function/errorHandler.d.ts +10 -0
  159. package/es/services/function/errorHandler.mjs +158 -0
  160. package/es/services/function/virtualBackground.mjs +4 -3
  161. package/es/services/index.d.ts +1 -0
  162. package/es/services/manager/roomActionManager.d.ts +1 -0
  163. package/es/services/manager/roomActionManager.mjs +10 -18
  164. package/es/services/manager/scheduleConferenceManager.d.ts +113 -0
  165. package/es/services/manager/scheduleConferenceManager.mjs +141 -0
  166. package/es/services/manager/userManager.d.ts +2 -0
  167. package/es/services/manager/userManager.mjs +7 -3
  168. package/es/services/roomService.d.ts +8 -0
  169. package/es/services/roomService.mjs +42 -16
  170. package/es/services/types.d.ts +8 -0
  171. package/es/services/types.mjs +2 -0
  172. package/es/stores/basic.mjs +9 -3
  173. package/es/stores/room.d.ts +2 -0
  174. package/es/stores/room.mjs +55 -24
  175. package/es/utils/adapter.mjs +39 -3
  176. package/es/utils/utils.d.ts +3 -0
  177. package/es/utils/utils.mjs +64 -0
  178. package/lib/components/Chat/ChatEditor/useChatEditor.js +1 -1
  179. package/lib/components/Chat/MessageList/index.vue.js +1 -1
  180. package/lib/components/Chat/MessageList/index.vue2.js +5 -1
  181. package/lib/components/Chat/MessageList/useMessageListHook.js +2 -1
  182. package/lib/components/ManageMember/MemberControl/index.vue.js +1 -1
  183. package/lib/components/ManageMember/MemberControl/index.vue2.js +35 -18
  184. package/lib/components/ManageMember/MemberControl/useMemberControlHooks.d.ts +6 -1
  185. package/lib/components/ManageMember/MemberControl/useMemberControlHooks.js +113 -17
  186. package/lib/components/ManageMember/MemberItem/useMemberItemHooks.d.ts +1 -0
  187. package/lib/components/ManageMember/MemberItem/useMemberItemHooks.js +8 -6
  188. package/lib/components/ManageMember/MemberItemCommon/MemberInfo.vue.js +1 -1
  189. package/lib/components/ManageMember/MemberItemCommon/MemberInfo.vue2.js +5 -1
  190. package/lib/components/ManageMember/index.vue.js +1 -1
  191. package/lib/components/ManageMember/index.vue2.js +57 -6
  192. package/lib/components/ManageMember/useIndexHooks.js +63 -14
  193. package/lib/components/RoomContent/StreamContainer/index.vue.js +1 -1
  194. package/lib/components/RoomContent/StreamContainer/index.vue2.js +10 -9
  195. package/lib/components/RoomContent/StreamContainer/useStreamContainerHooks.d.ts +8 -0
  196. package/lib/components/RoomContent/StreamContainer/useStreamContainerHooks.js +72 -28
  197. package/lib/components/RoomContent/StreamRegion/index.vue.d.ts +5 -1
  198. package/lib/components/RoomContent/StreamRegion/index.vue.js +1 -1
  199. package/lib/components/RoomContent/StreamRegion/index.vue2.js +27 -3
  200. package/lib/components/RoomFooter/ApplyControl/MasterApplyControl/index.vue.js +1 -1
  201. package/lib/components/RoomFooter/ApplyControl/MasterApplyControl/index.vue2.js +8 -2
  202. package/lib/components/RoomFooter/EndControl/index.vue.js +1 -1
  203. package/lib/components/RoomFooter/EndControl/index.vue2.js +1 -1
  204. package/lib/components/RoomFooter/EndControl/useEndControlHooks.js +14 -2
  205. package/lib/components/RoomFooter/ScreenShareControl/Index.vue.js +1 -1
  206. package/lib/components/RoomFooter/ScreenShareControl/Index.vue2.js +9 -1
  207. package/lib/components/RoomFooter/VideoControl.vue.js +1 -1
  208. package/lib/components/RoomFooter/VideoControl.vue2.js +6 -12
  209. package/lib/components/RoomHeader/UserInfo/index.vue.d.ts +3 -11
  210. package/lib/components/RoomHeader/UserInfo/index.vue.js +1 -1
  211. package/lib/components/RoomHeader/UserInfo/index.vue2.js +6 -89
  212. package/lib/components/RoomHeader/UserInfo/useUserInfoHooks.d.ts +2 -8
  213. package/lib/components/RoomHeader/UserInfo/useUserInfoHooks.js +1 -18
  214. package/lib/components/RoomHome/RoomControl/index.vue.d.ts +10 -0
  215. package/lib/components/RoomHome/RoomControl/index.vue.js +1 -1
  216. package/lib/components/RoomHome/RoomControl/index.vue2.js +150 -117
  217. package/lib/components/RoomSidebar/useSideBarHooks.js +3 -2
  218. package/lib/components/ScheduleConference/Contacts.vue.d.ts +22 -0
  219. package/lib/components/ScheduleConference/Contacts.vue.js +7 -0
  220. package/lib/components/ScheduleConference/Contacts.vue2.js +212 -0
  221. package/lib/components/ScheduleConference/DurationTimePicker.vue.d.ts +18 -0
  222. package/lib/components/ScheduleConference/DurationTimePicker.vue.js +67 -0
  223. package/lib/components/ScheduleConference/DurationTimePicker.vue2.js +4 -0
  224. package/lib/components/ScheduleConference/ScheduleConferencePanel.vue.d.ts +22 -0
  225. package/lib/components/ScheduleConference/ScheduleConferencePanel.vue.js +7 -0
  226. package/lib/components/ScheduleConference/ScheduleConferencePanel.vue2.js +613 -0
  227. package/lib/components/ScheduleConference/ScheduleConferencePanel.vue3.js +1 -0
  228. package/lib/components/ScheduleConference/ScheduleRoomControl.vue.d.ts +29 -0
  229. package/lib/components/ScheduleConference/ScheduleRoomControl.vue.js +7 -0
  230. package/lib/components/ScheduleConference/ScheduleRoomControl.vue2.js +464 -0
  231. package/lib/components/ScheduleConference/ScheduleRoomControl.vue3.js +1 -0
  232. package/lib/components/{common/base/Input.vue.d.ts → ScheduleConference/ScheduleRoomList.vue.d.ts} +11 -22
  233. package/lib/components/ScheduleConference/ScheduleRoomList.vue.js +7 -0
  234. package/lib/components/ScheduleConference/ScheduleRoomList.vue2.js +219 -0
  235. package/lib/components/ScheduleConference/ScheduleRoomList.vue3.js +1 -0
  236. package/lib/components/ScheduleConference/ShareLink.vue.d.ts +24 -0
  237. package/lib/components/ScheduleConference/ShareLink.vue.js +7 -0
  238. package/lib/components/ScheduleConference/ShareLink.vue2.js +113 -0
  239. package/lib/components/ScheduleConference/ShareLink.vue3.js +1 -0
  240. package/lib/components/ScheduleConference/TimezonePicker.vue.d.ts +18 -0
  241. package/lib/components/ScheduleConference/TimezonePicker.vue.js +84 -0
  242. package/lib/components/ScheduleConference/TimezonePicker.vue2.js +4 -0
  243. package/lib/components/common/Avatar.vue.js +2 -2
  244. package/lib/components/common/DeviceSelect.vue.js +1 -1
  245. package/lib/components/common/DeviceSelect.vue2.js +57 -18
  246. package/lib/components/common/Logo.vue.js +1 -1
  247. package/lib/components/common/Logo.vue2.js +2 -2
  248. package/lib/components/common/base/Badge.vue.d.ts +1 -1
  249. package/lib/components/common/base/Button.vue.d.ts +2 -2
  250. package/lib/components/common/base/Checkbox.vue.d.ts +4 -2
  251. package/lib/components/common/base/Checkbox.vue.js +2 -2
  252. package/lib/components/common/base/Checkbox.vue2.js +11 -4
  253. package/lib/components/common/base/Datepicker/Datepicker.vue.d.ts +18 -0
  254. package/lib/components/common/base/Datepicker/Datepicker.vue.js +7 -0
  255. package/lib/components/common/base/Datepicker/Datepicker.vue2.js +167 -0
  256. package/lib/components/common/base/Datepicker/Datepicker.vue3.js +1 -0
  257. package/lib/components/common/base/Datepicker/Timepicker.vue.d.ts +18 -0
  258. package/lib/components/common/base/Datepicker/Timepicker.vue.js +66 -0
  259. package/lib/components/common/base/Datepicker/Timepicker.vue2.js +4 -0
  260. package/lib/components/common/base/Dialog/index.vue.d.ts +8 -4
  261. package/lib/components/common/base/Dialog/index.vue.js +1 -1
  262. package/lib/components/common/base/Dialog/index.vue2.js +16 -8
  263. package/lib/components/common/base/Drawer.vue.d.ts +1 -1
  264. package/lib/components/common/base/IconButton.vue.d.ts +2 -2
  265. package/lib/components/common/base/Input/index.vue.d.ts +77 -0
  266. package/lib/components/common/base/Input/index.vue.js +7 -0
  267. package/lib/components/common/base/Input/index.vue2.js +140 -0
  268. package/lib/components/common/base/Input/index.vue3.js +1 -0
  269. package/lib/components/common/base/Message/Instance.js +1 -1
  270. package/lib/components/common/base/Message/Message.vue.d.ts +4 -4
  271. package/lib/components/common/base/MessageBox/index.d.ts +3 -2
  272. package/lib/components/common/base/MessageBox/index.js +2 -1
  273. package/lib/components/common/base/MessageBox/index.vue.d.ts +6 -1
  274. package/lib/components/common/base/MessageBox/index.vue.js +1 -1
  275. package/lib/components/common/base/MessageBox/index.vue2.js +59 -9
  276. package/lib/components/common/base/Notification/index.vue.d.ts +2 -2
  277. package/lib/components/common/base/Option.vue.d.ts +11 -1
  278. package/lib/components/common/base/Option.vue.js +1 -1
  279. package/lib/components/common/base/Option.vue2.js +15 -5
  280. package/lib/components/common/base/Select.vue.d.ts +5 -1
  281. package/lib/components/common/base/Select.vue.js +1 -1
  282. package/lib/components/common/base/Select.vue2.js +11 -10
  283. package/lib/components/common/base/index.d.ts +1 -1
  284. package/lib/components/common/icons/AllMembersShareScreenIcon.vue.d.ts +2 -0
  285. package/lib/components/common/icons/AllMembersShareScreenIcon.vue.js +22 -0
  286. package/lib/components/common/icons/CalendarIcon.vue.d.ts +2 -0
  287. package/lib/components/common/icons/CalendarIcon.vue.js +24 -0
  288. package/lib/components/common/icons/CopyIcon.vue.js +2 -2
  289. package/lib/components/common/icons/EditNameCardIcon.vue.d.ts +2 -0
  290. package/lib/components/common/icons/EditNameCardIcon.vue.js +21 -0
  291. package/lib/components/common/icons/EllipsisIcon.vue.d.ts +2 -0
  292. package/lib/components/common/icons/EllipsisIcon.vue.js +34 -0
  293. package/lib/components/common/icons/HostShareScreenIcon.vue.d.ts +2 -0
  294. package/lib/components/common/icons/HostShareScreenIcon.vue.js +22 -0
  295. package/lib/components/common/icons/LinkIcon.vue.d.ts +2 -0
  296. package/lib/components/common/icons/LinkIcon.vue.js +36 -0
  297. package/lib/components/common/icons/LoadingScheduleIcon.vue.d.ts +2 -0
  298. package/lib/components/common/icons/LoadingScheduleIcon.vue.js +24 -0
  299. package/lib/components/common/icons/ScheduleAttendees.vue.d.ts +6 -0
  300. package/lib/components/common/icons/ScheduleAttendees.vue.js +25 -0
  301. package/lib/components/common/icons/ScheduleAttendees.vue2.js +4 -0
  302. package/lib/components/common/icons/ScheduleRoomIcon.vue.d.ts +2 -0
  303. package/lib/components/common/icons/ScheduleRoomIcon.vue.js +24 -0
  304. package/lib/components/common/icons/SuccessIcon.vue.d.ts +2 -0
  305. package/lib/components/common/icons/SuccessIcon.vue.js +32 -0
  306. package/lib/components/common/icons/WarningIcon.vue.d.ts +2 -0
  307. package/lib/components/common/icons/WarningIcon.vue.js +29 -0
  308. package/lib/conference.d.ts +2 -0
  309. package/lib/conference.js +3 -0
  310. package/lib/conference.vue.js +1 -1
  311. package/lib/conference.vue2.js +9 -4
  312. package/lib/directives/vDblTouch.d.ts +10 -0
  313. package/lib/directives/vTap.d.ts +1 -0
  314. package/lib/directives/vTap.js +30 -3
  315. package/lib/extension/chatExtension.js +1 -1
  316. package/lib/hooks/useMasterApplyControl.js +3 -3
  317. package/lib/index.d.ts +1 -0
  318. package/lib/index.js +2390 -1546
  319. package/lib/locales/en-US.d.ts +75 -0
  320. package/lib/locales/en-US.js +78 -1
  321. package/lib/locales/zh-CN.d.ts +79 -0
  322. package/lib/locales/zh-CN.js +83 -2
  323. package/lib/preConference.vue.d.ts +10 -0
  324. package/lib/preConference.vue.js +1 -1
  325. package/lib/preConference.vue2.js +88 -12
  326. package/lib/services/function/errorHandler.d.ts +10 -0
  327. package/lib/services/function/errorHandler.js +158 -0
  328. package/lib/services/function/virtualBackground.js +3 -2
  329. package/lib/services/index.d.ts +1 -0
  330. package/lib/services/manager/roomActionManager.d.ts +1 -0
  331. package/lib/services/manager/roomActionManager.js +10 -18
  332. package/lib/services/manager/scheduleConferenceManager.d.ts +113 -0
  333. package/lib/services/manager/scheduleConferenceManager.js +147 -0
  334. package/lib/services/manager/userManager.d.ts +2 -0
  335. package/lib/services/manager/userManager.js +4 -0
  336. package/lib/services/roomService.d.ts +8 -0
  337. package/lib/services/roomService.js +38 -12
  338. package/lib/services/types.d.ts +8 -0
  339. package/lib/services/types.js +2 -0
  340. package/lib/stores/basic.js +8 -2
  341. package/lib/stores/room.d.ts +2 -0
  342. package/lib/stores/room.js +55 -24
  343. package/lib/utils/adapter.js +39 -3
  344. package/lib/utils/utils.d.ts +3 -0
  345. package/lib/utils/utils.js +64 -0
  346. package/package.json +2 -2
  347. package/src/TUIRoom/assets/style/black-theme.scss +3 -1
  348. package/src/TUIRoom/assets/style/white-theme.scss +3 -1
  349. package/src/TUIRoom/components/Chat/ChatEditor/useChatEditor.ts +1 -1
  350. package/src/TUIRoom/components/Chat/MessageList/index.vue +5 -1
  351. package/src/TUIRoom/components/Chat/MessageList/useMessageListHook.ts +2 -1
  352. package/src/TUIRoom/components/ManageMember/MemberControl/index.vue +23 -7
  353. package/src/TUIRoom/components/ManageMember/MemberControl/useMemberControlHooks.ts +110 -14
  354. package/src/TUIRoom/components/ManageMember/MemberItem/useMemberItemHooks.ts +9 -4
  355. package/src/TUIRoom/components/ManageMember/MemberItemCommon/MemberInfo.vue +2 -1
  356. package/src/TUIRoom/components/ManageMember/index.vue +85 -5
  357. package/src/TUIRoom/components/ManageMember/useIndexHooks.ts +58 -9
  358. package/src/TUIRoom/components/RoomContent/StreamContainer/index.vue +7 -6
  359. package/src/TUIRoom/components/RoomContent/StreamContainer/useStreamContainerHooks.ts +90 -26
  360. package/src/TUIRoom/components/RoomContent/StreamRegion/index.vue +27 -3
  361. package/src/TUIRoom/components/RoomFooter/ApplyControl/MasterApplyControl/index.vue +2 -1
  362. package/src/TUIRoom/components/RoomFooter/EndControl/index.vue +1 -1
  363. package/src/TUIRoom/components/RoomFooter/EndControl/useEndControlHooks.ts +10 -3
  364. package/src/TUIRoom/components/RoomFooter/ScreenShareControl/Index.vue +11 -1
  365. package/src/TUIRoom/components/RoomFooter/VideoControl.vue +0 -7
  366. package/src/TUIRoom/components/RoomHeader/UserInfo/index.vue +19 -50
  367. package/src/TUIRoom/components/RoomHeader/UserInfo/useUserInfoHooks.ts +1 -28
  368. package/src/TUIRoom/components/RoomHome/RoomControl/index.vue +91 -73
  369. package/src/TUIRoom/components/RoomSidebar/useSideBarHooks.ts +3 -2
  370. package/src/TUIRoom/components/ScheduleConference/Contacts.vue +265 -0
  371. package/src/TUIRoom/components/ScheduleConference/DurationTimePicker.vue +54 -0
  372. package/src/TUIRoom/components/ScheduleConference/ScheduleConferencePanel.vue +731 -0
  373. package/src/TUIRoom/components/ScheduleConference/ScheduleRoomControl.vue +577 -0
  374. package/src/TUIRoom/components/ScheduleConference/ScheduleRoomList.vue +295 -0
  375. package/src/TUIRoom/components/ScheduleConference/ShareLink.vue +122 -0
  376. package/src/TUIRoom/components/ScheduleConference/TimezonePicker.vue +70 -0
  377. package/src/TUIRoom/components/common/DeviceSelect.vue +62 -20
  378. package/src/TUIRoom/components/common/Logo.vue +3 -3
  379. package/src/TUIRoom/components/common/base/Checkbox.vue +19 -11
  380. package/src/TUIRoom/components/common/base/Datepicker/Datepicker.vue +252 -0
  381. package/src/TUIRoom/components/common/base/Datepicker/Timepicker.vue +54 -0
  382. package/src/TUIRoom/components/common/base/Dialog/index.vue +17 -7
  383. package/src/TUIRoom/components/common/base/Input/index.vue +187 -0
  384. package/src/TUIRoom/components/common/base/Message/Instance.ts +2 -1
  385. package/src/TUIRoom/components/common/base/MessageBox/index.ts +4 -2
  386. package/src/TUIRoom/components/common/base/MessageBox/index.vue +57 -26
  387. package/src/TUIRoom/components/common/base/Option.vue +14 -4
  388. package/src/TUIRoom/components/common/base/Select.vue +18 -13
  389. package/src/TUIRoom/components/common/base/index.ts +1 -1
  390. package/src/TUIRoom/components/common/icons/AllMembersShareScreenIcon.vue +15 -0
  391. package/src/TUIRoom/components/common/icons/ArrowStrokeRightIcon.vue +8 -0
  392. package/src/TUIRoom/components/common/icons/CalendarIcon.vue +6 -0
  393. package/src/TUIRoom/components/common/icons/EditNameCardIcon.vue +13 -0
  394. package/src/TUIRoom/components/common/icons/EllipsisIcon.vue +8 -0
  395. package/src/TUIRoom/components/common/icons/HostShareScreenIcon.vue +13 -0
  396. package/src/TUIRoom/components/common/icons/LinkIcon.vue +10 -0
  397. package/src/TUIRoom/components/common/icons/LoadingScheduleIcon.vue +6 -0
  398. package/src/TUIRoom/components/common/icons/ScheduleAttendees.vue +13 -0
  399. package/src/TUIRoom/components/common/icons/ScheduleRoomIcon.vue +6 -0
  400. package/src/TUIRoom/components/common/icons/SuccessIcon.vue +8 -0
  401. package/src/TUIRoom/components/common/icons/WarningIcon.vue +13 -0
  402. package/src/TUIRoom/conference.ts +6 -0
  403. package/src/TUIRoom/conference.vue +16 -5
  404. package/src/TUIRoom/directives/vDblTouch.ts +41 -0
  405. package/src/TUIRoom/directives/vTap.ts +32 -3
  406. package/src/TUIRoom/extension/chatExtension.ts +1 -1
  407. package/src/TUIRoom/hooks/useMasterApplyControl.ts +2 -2
  408. package/src/TUIRoom/index.ts +1 -0
  409. package/src/TUIRoom/locales/en-US.ts +77 -0
  410. package/src/TUIRoom/locales/zh-CN.ts +82 -1
  411. package/src/TUIRoom/preConference.vue +97 -2
  412. package/src/TUIRoom/services/function/errorHandler.ts +169 -0
  413. package/src/TUIRoom/services/function/virtualBackground.ts +3 -3
  414. package/src/TUIRoom/services/index.ts +1 -0
  415. package/src/TUIRoom/services/manager/roomActionManager.ts +10 -18
  416. package/src/TUIRoom/services/manager/scheduleConferenceManager.ts +263 -0
  417. package/src/TUIRoom/services/manager/userManager.ts +6 -0
  418. package/src/TUIRoom/services/roomService.ts +41 -13
  419. package/src/TUIRoom/services/types.ts +8 -1
  420. package/src/TUIRoom/stores/basic.ts +9 -2
  421. package/src/TUIRoom/stores/room.ts +60 -19
  422. package/src/TUIRoom/utils/adapter.ts +44 -4
  423. package/src/TUIRoom/utils/utils.ts +42 -0
  424. package/es/components/common/base/Input.vue.mjs +0 -7
  425. package/es/components/common/base/Input.vue2.mjs +0 -34
  426. package/lib/components/common/base/Input.vue.js +0 -7
  427. package/lib/components/common/base/Input.vue2.js +0 -34
  428. package/src/TUIRoom/components/common/base/Input.vue +0 -61
  429. /package/es/components/{common/base/Input.vue3.mjs → ScheduleConference/Contacts.vue3.mjs} +0 -0
  430. /package/lib/components/{common/base/Input.vue3.js → ScheduleConference/Contacts.vue3.js} +0 -0
@@ -8,6 +8,8 @@ import { TUIMediaDevice } from '@tencentcloud/tuiroom-engine-electron';
8
8
  import TUIMessage from '../common/base/Message/index';
9
9
  import { MESSAGE_DURATION } from '../../constants/message';
10
10
  import { isMobile } from '../../utils/environment';
11
+ import AllMembersShareScreenIcon from '../common/icons/AllMembersShareScreenIcon.vue';
12
+ import HostShareScreenIcon from '../common/icons/HostShareScreenIcon.vue';
11
13
 
12
14
  export default function useIndex() {
13
15
  const roomEngine = useGetRoomEngine();
@@ -21,11 +23,19 @@ export default function useIndex() {
21
23
  anchorUserList,
22
24
  applyToAnchorList,
23
25
  isOnStateTabActive,
26
+ generalUserScreenStreamList,
24
27
  } = storeToRefs(roomStore);
25
28
 
29
+ enum ManageControlType {
30
+ AUDIO = 'audio',
31
+ VIDEO = 'video',
32
+ SCREEN = 'screen',
33
+ }
34
+
26
35
  const audienceUserList = computed(() => userList.value.filter(user => !anchorUserList.value.includes(user)));
27
36
 
28
37
  const searchText = ref('');
38
+ const showMoreControl = ref(false);
29
39
 
30
40
  function handleToggleStaged() {
31
41
  isOnStateTabActive.value = !isOnStateTabActive.value;
@@ -42,7 +52,7 @@ export default function useIndex() {
42
52
  if (!searchText.value) {
43
53
  return list;
44
54
  }
45
- return list.filter((item: UserInfo) => item.userName?.includes(searchText.value) || item.userId.includes(searchText.value));
55
+ return list.filter((item: UserInfo) => item.nameCard?.includes(searchText.value) || item.userName?.includes(searchText.value) || item.userId.includes(searchText.value));
46
56
  });
47
57
  const alreadyStaged = computed(() => `${t('Already on stage')} (${(anchorUserList.value.length)})`);
48
58
  const notStaged = computed(() => `${t('Not on stage')} (${(audienceUserList.value.length)})`);
@@ -54,24 +64,30 @@ export default function useIndex() {
54
64
  const audioManageInfo = computed(() => (roomStore.isMicrophoneDisableForAllUser ? t('Lift all mute') : t('All mute')));
55
65
  const videoManageInfo = computed(() => (roomStore.isCameraDisableForAllUser ? t('Lift stop all video') : t('All stop video')));
56
66
 
67
+ const moreControlList = computed(() => ([
68
+ {
69
+ title: roomStore.isScreenShareDisableForAllUser ? t('All members can share screen') : t('Screen sharing for host/admin only'),
70
+ icon: roomStore.isScreenShareDisableForAllUser ? AllMembersShareScreenIcon : HostShareScreenIcon,
71
+ func: toggleManageAllMember,
72
+ type: ManageControlType.SCREEN,
73
+ },
74
+ ]));
75
+
57
76
  const showManageAllUserDialog: Ref<boolean> = ref(false);
58
77
  const dialogContent: Ref<string> = ref('');
59
78
  const dialogTitle: Ref<string> = ref('');
60
79
  const dialogActionInfo: Ref<string> = ref('');
61
80
  let stateForAllAudio: boolean = false;
62
81
  let stateForAllVideo: boolean = false;
82
+ let stateForScreenShare: boolean = false;
63
83
 
64
- enum ManageControlType {
65
- AUDIO = 'audio',
66
- VIDEO = 'video',
67
- }
68
84
  const currentControlType: Ref<ManageControlType> = ref(ManageControlType.AUDIO);
69
85
 
70
86
  async function toggleManageAllMember(type: ManageControlType) {
71
- showManageAllUserDialog.value = true;
72
87
  currentControlType.value = type;
73
88
  switch (type) {
74
89
  case ManageControlType.AUDIO:
90
+ showManageAllUserDialog.value = true;
75
91
  dialogTitle.value = roomStore.isMicrophoneDisableForAllUser
76
92
  ? t('Enable all audios') : t('All current and new members will be muted');
77
93
  dialogContent.value = roomStore.isMicrophoneDisableForAllUser
@@ -83,6 +99,7 @@ export default function useIndex() {
83
99
  dialogActionInfo.value = audioManageInfo.value;
84
100
  break;
85
101
  case ManageControlType.VIDEO:
102
+ showManageAllUserDialog.value = true;
86
103
  dialogTitle.value = roomStore.isCameraDisableForAllUser
87
104
  ? t('Enable all videos') : t('All and new members will be banned from the camera');
88
105
  dialogContent.value = roomStore.isCameraDisableForAllUser
@@ -93,6 +110,16 @@ export default function useIndex() {
93
110
  await nextTick();
94
111
  dialogActionInfo.value = videoManageInfo.value;
95
112
  break;
113
+ case ManageControlType.SCREEN:
114
+ stateForScreenShare = !roomStore.isScreenShareDisableForAllUser;
115
+ if (generalUserScreenStreamList.value.length === 0) {
116
+ toggleAllScreenShare();
117
+ break;
118
+ }
119
+ showManageAllUserDialog.value = true;
120
+ dialogTitle.value = t('Is it turned on that only the host/admin can share the screen?');
121
+ dialogContent.value = t("Other member is sharing the screen is now, the member's sharing will be terminated after you turning on");
122
+ break;
96
123
  default:
97
124
  break;
98
125
  }
@@ -106,11 +133,26 @@ export default function useIndex() {
106
133
  case ManageControlType.VIDEO:
107
134
  toggleAllVideo();
108
135
  break;
136
+ case ManageControlType.SCREEN:
137
+ await roomEngine.instance?.closeRemoteDeviceByAdmin({
138
+ userId: generalUserScreenStreamList.value[0].userId,
139
+ device: TUIMediaDevice.kScreen,
140
+ });
141
+ toggleAllScreenShare();
142
+ break;
109
143
  default:
110
144
  break;
111
145
  }
112
146
  showManageAllUserDialog.value = false;
113
147
  }
148
+ async function toggleAllScreenShare() {
149
+ await roomEngine.instance?.disableDeviceForAllUserByAdmin({
150
+ isDisable: stateForScreenShare,
151
+ device: TUIMediaDevice.kScreen,
152
+ });
153
+ roomStore.setDisableScreenShareForAllUserByAdmin(stateForScreenShare);
154
+ showMoreControl.value = false;
155
+ }
114
156
  function showApplyUserList() {
115
157
  if (isMobile) {
116
158
  basicStore.setSidebarOpenStatus(true);
@@ -134,7 +176,7 @@ export default function useIndex() {
134
176
  isDisable: stateForAllAudio,
135
177
  device: TUIMediaDevice.kMicrophone,
136
178
  });
137
- roomStore.setMicrophoneDisableState(stateForAllAudio);
179
+ roomStore.setDisableMicrophoneForAllUserByAdmin(stateForAllAudio);
138
180
  }
139
181
 
140
182
  async function toggleAllVideo() {
@@ -151,18 +193,22 @@ export default function useIndex() {
151
193
  isDisable: stateForAllVideo,
152
194
  device: TUIMediaDevice.kCamera,
153
195
  });
154
- roomStore.setCameraDisableState(stateForAllVideo);
196
+ roomStore.setDisableCameraForAllUserByAdmin(stateForAllVideo);
155
197
  }
156
198
 
157
199
  const applyToAnchorUserContent = computed(() => {
158
200
  const lastIndex = applyToAnchorList.value.length - 1;
159
- const userName = applyToAnchorList.value[lastIndex]?.userName || applyToAnchorList.value[lastIndex]?.userId;
201
+ const userName = applyToAnchorList.value[lastIndex]?.nameCard || applyToAnchorList.value[lastIndex]?.userName || applyToAnchorList.value[lastIndex]?.userId;
160
202
  if (applyToAnchorList.value.length === 1) {
161
203
  return `${userName} ${t('Applying for the stage')}`;
162
204
  }
163
205
  return `${userName} ${t('and so on number people applying to stage', { number: applyToAnchorList.value.length })}`;
164
206
  });
165
207
 
208
+ function toggleClickMoreBtn() {
209
+ showMoreControl.value = !showMoreControl.value;
210
+ }
211
+
166
212
  return {
167
213
  showApplyUserList,
168
214
  searchText,
@@ -183,5 +229,8 @@ export default function useIndex() {
183
229
  isOnStateTabActive,
184
230
  handleToggleStaged,
185
231
  applyToAnchorUserContent,
232
+ toggleClickMoreBtn,
233
+ showMoreControl,
234
+ moreControlList,
186
235
  };
187
236
  }
@@ -24,7 +24,7 @@
24
24
  :enlarge-dom-id="enlargeDomId"
25
25
  class="single-stream"
26
26
  :style="streamStyle"
27
- @room_dblclick="handleEnlargeStreamRegion(stream)"
27
+ @room-dblclick="handleEnlargeStreamRegion(stream)"
28
28
  ></stream-region>
29
29
  </div>
30
30
  </div>
@@ -65,6 +65,7 @@ import { useBasicStore } from '../../../stores/basic';
65
65
  import { LAYOUT } from '../../../constants/render';
66
66
  import StreamRegion from '../StreamRegion/index.vue';
67
67
  import TUIMessage from '../../common/base/Message/index';
68
+ import TUIMessageBox from '../../common/base/MessageBox/index';
68
69
  import { MESSAGE_DURATION } from '../../../constants/message';
69
70
  import { debounce } from '../../../utils/utils';
70
71
  import logger from '../../../utils/common/logger';
@@ -510,10 +511,10 @@ const onUserVideoStateChanged = (eventInfo: {
510
511
  }
511
512
  // Host turns off screen sharing
512
513
  if (streamType === TUIVideoStreamType.kScreenStream) {
513
- TUIMessage({
514
- type: 'warning',
515
- message: t('The host has turned off your screen sharing'),
516
- duration: MESSAGE_DURATION.NORMAL,
514
+ TUIMessageBox({
515
+ title: t('Your screen sharing has been stopped'),
516
+ message: t('Your screen sharing has been stopped, Now only the host/admin can share the screen'),
517
+ confirmButtonText: t('I got it'),
517
518
  });
518
519
  }
519
520
  }
@@ -577,10 +578,10 @@ const handleLargeStreamLeave = () => {
577
578
 
578
579
  // Handle lazy loading of videos in sidebar & top bar
579
580
  const handleStreamContainerScroll = async () => {
580
- const childDom = streamListRef.value.children[0];
581
581
  // Add nextTick to handle the problem of new users triggering scroll in top bar mode,
582
582
  // but the obtained streamListRef.value.offsetWidth has not been updated yet.
583
583
  await nextTick();
584
+ const childDom = streamListRef.value.children[0];
584
585
 
585
586
  // From which number
586
587
  let index = 0;
@@ -1,7 +1,8 @@
1
- import { watch } from 'vue';
1
+ import { watch, ref } from 'vue';
2
+ import type { Ref } from 'vue';
2
3
  import useGetRoomEngine from '../../../hooks/useRoomEngine';
3
- import { useRoomStore } from '../../../stores/room';
4
- import { TUIChangeReason, TUIMediaDeviceType, TUIUserInfo } from '@tencentcloud/tuiroom-engine-electron';
4
+ import { useRoomStore, StreamInfo } from '../../../stores/room';
5
+ import { TUIChangeReason, TUIMediaDeviceType, TUIUserInfo, TRTCVolumeInfo } from '@tencentcloud/tuiroom-engine-electron';
5
6
  import TUIMessage from '../../common/base/Message/index';
6
7
  import { useI18n } from '../../../locales';
7
8
  import { useBasicStore } from '../../../stores/basic';
@@ -11,6 +12,8 @@ import { isMobile, isWeChat } from '../../../utils/environment';
11
12
  import logger from '../../../utils/common/logger';
12
13
  import { SMALL_VIDEO_ENC_PARAM } from '../../../constants/room';
13
14
  import useDeviceManager from '../../../hooks/useDeviceManager';
15
+ import { throttle } from '../../../utils/utils';
16
+ import { LAYOUT } from '../../../constants/render';
14
17
 
15
18
  const logPrefix = '[StreamContainer]';
16
19
 
@@ -19,9 +22,14 @@ export default function useStreamContainer() {
19
22
  const roomEngine = useGetRoomEngine();
20
23
  const basicStore = useBasicStore();
21
24
  const roomStore = useRoomStore();
25
+ const { layout } = storeToRefs(basicStore);
26
+ const { localStream } = storeToRefs(roomStore);
22
27
  const { t } = useI18n();
23
28
  const { deviceManager } = useDeviceManager();
24
29
 
30
+ const currentRemoteSpeakerUserId: Ref<string> = ref('');
31
+ const currentSpeakerUserId: Ref<string> = ref('');
32
+
25
33
  const onRemoteUserEnterRoom = (eventInfo: { userInfo: TUIUserInfo }) => {
26
34
  roomStore.addRemoteUser(eventInfo.userInfo);
27
35
  };
@@ -55,6 +63,76 @@ export default function useStreamContainer() {
55
63
  roomStore.setCanControlSelfAudio(!roomStore.isMicrophoneDisableForAllUser);
56
64
  }
57
65
  };
66
+
67
+ // Calculate the userId of the loudest speaker in the room
68
+ // Calculate the userId of the remote user who speaks the loudest in the current room.
69
+ function handleUserVoiceVolume(userVolumeList: Array<TRTCVolumeInfo>) {
70
+ const localUserVolume = {
71
+ userId: basicStore.userId,
72
+ volume: 0,
73
+ };
74
+ const largestRemoteUserVolume = {
75
+ userId: '',
76
+ volume: 0,
77
+ };
78
+ userVolumeList.forEach((item: TRTCVolumeInfo) => {
79
+ if (item.userId === basicStore.userId && localStream.value.hasAudioStream) {
80
+ localUserVolume.volume = item.volume;
81
+ } else if (item.userId !== basicStore.userId && roomStore.remoteUserObj[item.userId]?.hasAudioStream) {
82
+ const { userId, volume } = item;
83
+ if (volume > largestRemoteUserVolume.volume) {
84
+ largestRemoteUserVolume.userId = userId;
85
+ largestRemoteUserVolume.volume = volume;
86
+ }
87
+ }
88
+ });
89
+
90
+ const largestUserVolume = localUserVolume.volume > largestRemoteUserVolume.volume
91
+ ? localUserVolume : largestRemoteUserVolume;
92
+
93
+ if (currentRemoteSpeakerUserId.value) {
94
+ const lastRemoteSpeakerUserVolumeInfo = userVolumeList.find((item: TRTCVolumeInfo) => (
95
+ item.userId === currentRemoteSpeakerUserId.value
96
+ ));
97
+ if (!lastRemoteSpeakerUserVolumeInfo || lastRemoteSpeakerUserVolumeInfo.volume === 0) {
98
+ if (largestRemoteUserVolume.volume > 0) {
99
+ currentRemoteSpeakerUserId.value = largestRemoteUserVolume.userId;
100
+ }
101
+ }
102
+ } else {
103
+ if (largestRemoteUserVolume.volume > 0) {
104
+ currentRemoteSpeakerUserId.value = largestRemoteUserVolume.userId;
105
+ }
106
+ }
107
+
108
+ if (currentSpeakerUserId.value) {
109
+ const lastSpeakerUserVolumeInfo: TRTCVolumeInfo | undefined = userVolumeList.find((item: TRTCVolumeInfo) => (
110
+ item.userId === currentSpeakerUserId.value
111
+ ));
112
+ if (!lastSpeakerUserVolumeInfo || lastSpeakerUserVolumeInfo.volume === 0) {
113
+ if (largestUserVolume.volume > 0) {
114
+ currentSpeakerUserId.value = largestUserVolume.userId;
115
+ }
116
+ }
117
+ } else {
118
+ if (largestUserVolume.volume > 0) {
119
+ currentSpeakerUserId.value = largestUserVolume.userId;
120
+ }
121
+ }
122
+ }
123
+
124
+ const handleUserVoiceVolumeThrottle = throttle(handleUserVoiceVolume, 1000);
125
+
126
+ // volume change
127
+ const onUserVoiceVolumeChanged = (eventInfo: {
128
+ userVolumeList: any[],
129
+ }) => {
130
+ const { userVolumeList } = eventInfo;
131
+ if (layout.value === LAYOUT.LARGE_SMALL_WINDOW) {
132
+ handleUserVoiceVolumeThrottle(userVolumeList);
133
+ }
134
+ };
135
+
58
136
  const {
59
137
  isDefaultOpenCamera,
60
138
  isDefaultOpenMicrophone,
@@ -67,31 +145,13 @@ export default function useStreamContainer() {
67
145
  *
68
146
  **/
69
147
  if (isWeChat) {
70
- await roomEngine.instance?.setLocalVideoView({
71
- view: `${roomStore.localStream.userId}_${roomStore.localStream.streamType}`,
72
- });
73
- // @ts-ignore
74
148
  await roomEngine.instance?.openLocalCamera({ isFrontCamera: basicStore.isFrontCamera });
75
149
  } else if (isMobile) {
76
- const previewDom = document?.getElementById(`${roomStore.localStream.userId}_${roomStore.localStream.streamType}`);
77
- if (!previewDom) {
78
- logger.error(`${logPrefix}watch isDefaultOpenCamera:`, isDefaultOpenCamera, previewDom);
79
- return;
80
- }
81
- await roomEngine.instance?.setLocalVideoView({
82
- view: `${roomStore.localStream.userId}_${roomStore.localStream.streamType}`,
83
- });
84
150
  const trtcCloud = roomEngine.instance?.getTRTCCloud();
85
151
  trtcCloud?.enableSmallVideoStream(false, SMALL_VIDEO_ENC_PARAM);
86
- // @ts-ignore
87
152
  await roomEngine.instance?.openLocalCamera({ isFrontCamera: basicStore.isFrontCamera });
88
153
  return;
89
154
  } else {
90
- const previewDom = document?.getElementById(`${roomStore.localStream.userId}_${roomStore.localStream.streamType}`);
91
- if (!previewDom) {
92
- logger.error(`${logPrefix}watch isDefaultOpenCamera:`, isDefaultOpenCamera, previewDom);
93
- return;
94
- }
95
155
  /**
96
156
  * Set device id
97
157
  *
@@ -112,13 +172,10 @@ export default function useStreamContainer() {
112
172
  * Turn on the local camera
113
173
  *
114
174
  **/
115
- await roomEngine.instance?.setLocalVideoView({
116
- view: `${roomStore.localStream.userId}_${roomStore.localStream.streamType}`,
117
- });
118
175
  await roomEngine.instance?.openLocalCamera();
119
176
  }
120
177
  }
121
- }, {immediate: true});
178
+ }, { immediate: true });
122
179
 
123
180
  watch(isDefaultOpenMicrophone, async (val) => {
124
181
  if (val) {
@@ -142,12 +199,19 @@ export default function useStreamContainer() {
142
199
  } else {
143
200
  await roomEngine.instance?.muteLocalAudio();
144
201
  }
145
- }, {immediate: true});
202
+ }, { immediate: true });
203
+
204
+ const isSameStream = (stream1: StreamInfo | null, stream2: StreamInfo | null) => `${stream1?.userId}_${stream1?.streamType}` === `${stream2?.userId}_${stream2?.streamType}`;
205
+
146
206
  return {
207
+ currentRemoteSpeakerUserId,
208
+ currentSpeakerUserId,
147
209
  onRemoteUserEnterRoom,
148
210
  onRemoteUserLeaveRoom,
149
211
  onSeatListChanged,
150
212
  onUserAudioStateChanged,
213
+ onUserVoiceVolumeChanged,
214
+ isSameStream,
151
215
  t,
152
216
  };
153
217
  }
@@ -3,7 +3,7 @@
3
3
  v-if="playRegionDomId !== enlargeDomId"
4
4
  ref="streamRegionRef"
5
5
  class="user-stream-container"
6
- @dblclick="$emit('room_dblclick')"
6
+ @dblclick="$emit('room-dblclick')"
7
7
  >
8
8
  <local-screen-stream
9
9
  v-if="isLocalScreen"
@@ -80,6 +80,7 @@ interface Props {
80
80
  }
81
81
 
82
82
  const props = defineProps<Props>();
83
+ defineEmits(['room-dblclick']);
83
84
 
84
85
  // Whether it is a local screen sharing placeholder window
85
86
  const isLocalScreen = computed(() => (
@@ -111,11 +112,34 @@ const showIcon = computed(() => showMasterIcon.value || showAdminIcon.value);
111
112
  const isScreenStream = computed(() => props.stream.streamType === TUIVideoStreamType.kScreenStream);
112
113
  const userInfo = computed(() => {
113
114
  if (isInnerScene) {
114
- return `${props.stream.userName} | ${props.stream.userId}` || props.stream.userId;
115
+ return `${props.stream.nameCard || props.stream.userName} | ${props.stream.userId}`;
115
116
  }
116
- return props.stream.userName || props.stream.userId;
117
+ return props.stream.nameCard || props.stream.userName || props.stream.userId;
117
118
  });
118
119
 
120
+ watch(
121
+ () => props.stream.hasVideoStream,
122
+ async (val) => {
123
+ if (props.stream.userId === basicStore.userId && props.stream.streamType === TUIVideoStreamType.kCameraStream) {
124
+ if (val) {
125
+ await nextTick();
126
+ const userIdEl = document?.getElementById(`${playRegionDomId.value}`) as HTMLDivElement;
127
+ if (userIdEl) {
128
+ logger.debug(`${logPrefix}watch isVideoStreamAvailable:`, props.stream.userId, userIdEl);
129
+ await roomEngine.instance?.setLocalVideoView({
130
+ view: `${playRegionDomId.value}`,
131
+ });
132
+ }
133
+ } else {
134
+ await roomEngine.instance?.setLocalVideoView({
135
+ view: null,
136
+ });
137
+ }
138
+ }
139
+ },
140
+ { immediate: true },
141
+ );
142
+
119
143
  // The stream type to be pulled from the remote user
120
144
  const streamTypeToFetch = computed(() => {
121
145
  const { streamType, userId } = props.stream;
@@ -18,7 +18,7 @@
18
18
  <div v-for="item in applyToAnchorList" :key="item.userId" class="apply-item">
19
19
  <div class="user-info">
20
20
  <Avatar class="avatar-url" :img-src="item.avatarUrl"></Avatar>
21
- <span class="user-name" :title="item.userName || item.userId">{{ item.userName || item.userId }}</span>
21
+ <span class="user-name" :title="roomService.getDisplayName(item)">{{ roomService.getDisplayName(item) }}</span>
22
22
  </div>
23
23
  <div class="control-container">
24
24
  <tui-button size="default" class="agree" @click="handleUserApply(item.userId, true)">
@@ -62,6 +62,7 @@ import Avatar from '../../../common/Avatar.vue';
62
62
  import Dialog from '../../../common/base/Dialog/index.vue';
63
63
  import SvgIcon from '../../../common/base/SvgIcon.vue';
64
64
  import TuiButton from '../../../common/base/Button.vue';
65
+ import { roomService } from '../../../../services';
65
66
 
66
67
  const {
67
68
  t,
@@ -23,7 +23,7 @@
23
23
  v-for="user in remoteUserList"
24
24
  :key="user.userId"
25
25
  :value="user.userId"
26
- :label="user.userName"
26
+ :label="user.nameCard || user.userName"
27
27
  theme="white"
28
28
  />
29
29
  </tui-select>
@@ -8,6 +8,7 @@ import useGetRoomEngine from '../../../hooks/useRoomEngine';
8
8
  import TUIRoomEngine, { TUIRole, TUIRoomEvents } from '@tencentcloud/tuiroom-engine-electron';
9
9
  import logger from '../../../utils/common/logger';
10
10
  import TUIMessage from '../../common/base/Message/index';
11
+ import { roomService } from '../../../services';
11
12
 
12
13
  export default function useEndControl() {
13
14
  const { t } = useI18n();
@@ -35,8 +36,7 @@ export default function useEndControl() {
35
36
  const selectedUser: Ref<string> = ref('');
36
37
  const showTransfer = ref(false);
37
38
  const searchName = ref('');
38
- const filteredList = computed(() => remoteUserList.value.filter(searchUser => (
39
- searchUser.userId.includes(searchName.value)) || (searchUser.userName?.includes(searchName.value))));
39
+ const filteredList = computed(() => remoteUserList.value.filter(searchUser => (searchUser.nameCard?.includes(searchName.value)) || (searchUser.userId.includes(searchName.value)) || (searchUser.userName?.includes(searchName.value))));
40
40
  const hasNoData = computed(() => filteredList.value.length === 0);
41
41
  const isMasterWithOneRemoteUser = computed(() => remoteUserList.value.length === 1);
42
42
  const isMasterWithRemoteUser = computed(() => remoteUserList.value.length > 0);
@@ -169,9 +169,16 @@ export default function useEndControl() {
169
169
  TUIRoomEngine.once('ready', () => {
170
170
  roomEngine.instance?.on(TUIRoomEvents.onUserRoleChanged, onUserRoleChanged);
171
171
  });
172
-
172
+ const handleMount = () => {
173
+ const { userRole } = roomService.roomStore.localUser;
174
+ if (userRole === TUIRole.kRoomOwner || userRole === TUIRole.kAdministrator) {
175
+ handleUpdateSeatApplicationList();
176
+ }
177
+ };
178
+ roomService.lifeCycleManager.on('mount', handleMount);
173
179
  onUnmounted(() => {
174
180
  roomEngine.instance?.off(TUIRoomEvents.onUserRoleChanged, onUserRoleChanged);
181
+ roomService.lifeCycleManager.off('mount', handleMount);
175
182
  });
176
183
  return {
177
184
  t,
@@ -85,7 +85,7 @@ import logger from '../../../utils/common/logger';
85
85
  const { t } = useI18n();
86
86
 
87
87
  const roomStore = useRoomStore();
88
- const { isAudience, hasOtherScreenShare } = storeToRefs(roomStore);
88
+ const { isAudience, hasOtherScreenShare, isGeneralUser, isScreenShareDisableForAllUser } = storeToRefs(roomStore);
89
89
  const roomEngine = useGetRoomEngine();
90
90
 
91
91
  const logPrefix = '[ScreenShareControl]';
@@ -125,6 +125,16 @@ async function toggleScreenShare() {
125
125
  });
126
126
  return;
127
127
  }
128
+
129
+ if (isGeneralUser.value && isScreenShareDisableForAllUser.value) {
130
+ TUIMessage({
131
+ type: 'warning',
132
+ message: t('Failed to initiate screen sharing, currently only host/admin can share screen.'),
133
+ duration: MESSAGE_DURATION.LONG,
134
+ });
135
+ return;
136
+ }
137
+
128
138
  if (!(window as any).isHasScreen && process.platform === 'darwin') {
129
139
  showPermissionVisible.value = true;
130
140
  }
@@ -116,10 +116,6 @@ async function toggleMuteVideo() {
116
116
  });
117
117
  return;
118
118
  }
119
- // There is a list of camera
120
- roomEngine.instance?.setLocalVideoView({
121
- view: `${roomStore.localStream.userId}_${roomStore.localStream.streamType}`,
122
- });
123
119
  if (isMobile) {
124
120
  if (isH5) {
125
121
  const trtcCloud = roomEngine.instance?.getTRTCCloud();
@@ -152,9 +148,6 @@ async function onRequestReceived(eventInfo: { request: TUIRequest }) {
152
148
  // Accept the host invitation and turn on the camera
153
149
  async function handleAccept() {
154
150
  roomStore.setCanControlSelfVideo(true);
155
- roomEngine.instance?.setLocalVideoView({
156
- view: `${roomStore.localStream.userId}_${roomStore.localStream.streamType}`,
157
- });
158
151
  await roomEngine.instance?.responseRemoteRequest({
159
152
  requestId: requestOpenCameraRequestId.value,
160
153
  agree: true,
@@ -9,40 +9,15 @@
9
9
  ></svg-icon>
10
10
  </div>
11
11
  <div v-if="showUserControl" class="user-control-container">
12
- <div v-show="showEditNameContainer">
13
- <div class="user-control-item-head" @click="showEditUserNameDialog">{{ t('Edit profile') }}</div>
14
- </div>
15
12
  <div class="user-control-item-foot" @click="$emit('log-out')">{{ t('Log out') }}</div>
16
13
  </div>
17
- <Dialog
18
- v-model="showUserNameEdit"
19
- :title="t('Edit profile')"
20
- :modal="true"
21
- width="480px"
22
- :close-on-click-modal="true"
23
- :append-to-body="true"
24
- >
25
- <div class="edit-content">
26
- <span>{{ t('User Name') }}</span>
27
- <tui-input v-model="tempUserName" class="edit-name-input" :placeholder="t('Please input user name')" />
28
- </div>
29
- <template #footer>
30
- <tui-button class="button" size="default" @click="closeEditUserNameDialog">{{ t('Cancel') }}</tui-button>
31
- <tui-button class="button" size="default" type="primary" @click="handleSaveUserName(tempUserName)">
32
- {{ t('Save') }}
33
- </tui-button>
34
- </template>
35
- </Dialog>
36
14
  </div>
37
15
  </template>
38
16
  <script setup lang="ts">
39
- import Dialog from '../../common/base/Dialog/index.vue';
40
17
  import SvgIcon from '../../common/base/SvgIcon.vue';
41
18
  import ArrowStrokeSelectDownIcon from '../../common/icons/ArrowStrokeSelectDownIcon.vue';
42
19
  import useUserInfo from './useUserInfoHooks';
43
20
  import Avatar from '../../common/Avatar.vue';
44
- import TuiButton from '../../common/base/Button.vue';
45
- import TuiInput from '../../common/base/Input.vue';
46
21
  import { isInnerScene } from '../../../utils/constants';
47
22
  import { roomService } from '../../../services';
48
23
  import TUIMessage from '../../common/base/Message/index';
@@ -61,11 +36,8 @@ const roomStore = useRoomStore();
61
36
  const {
62
37
  t,
63
38
  showUserControl,
64
- showUserNameEdit,
65
39
  userInfoRef,
66
- tempUserName,
67
40
  handleUserControl,
68
- showEditUserNameDialog,
69
41
  closeEditUserNameDialog,
70
42
  } = useUserInfo();
71
43
 
@@ -73,31 +45,28 @@ const props = withDefaults(defineProps<{
73
45
  userId: string,
74
46
  userName: string,
75
47
  avatarUrl?: string,
76
- isShowEditName?: boolean,
77
48
  }>(), {
78
- isShowEditName: false,
79
49
  });
80
- const showEditNameContainer = isInnerScene && props.isShowEditName;
81
50
 
82
- /**
83
- * Save the new userName
84
- *
85
- **/
86
- async function handleSaveUserName(userName: string) {
87
- if (userName.length === 0) {
88
- TUIMessage({
89
- type: 'warning',
90
- message: t('Username length should be greater than 0'),
91
- duration: MESSAGE_DURATION.NORMAL,
92
- });
93
- return;
94
- }
95
- emits('update-user-name', userName);
96
- basicStore.setUserName(userName);
97
- TUIRoomEngine.setSelfInfo({ userName, avatarUrl: roomStore.localUser.avatarUrl || '' });
98
- roomStore.setLocalUser({ userName });
99
- closeEditUserNameDialog();
100
- }
51
+ // /**
52
+ // * Save the new userName
53
+ // *
54
+ // **/
55
+ // async function handleSaveUserName(userName: string) {
56
+ // if (userName.length === 0) {
57
+ // TUIMessage({
58
+ // type: 'warning',
59
+ // message: t('Username length should be greater than 0'),
60
+ // duration: MESSAGE_DURATION.NORMAL,
61
+ // });
62
+ // return;
63
+ // }
64
+ // emits('update-user-name', userName);
65
+ // basicStore.setUserName(userName);
66
+ // TUIRoomEngine.setSelfInfo({ userName, avatarUrl: roomStore.localUser.avatarUrl || '' });
67
+ // roomStore.setLocalUser({ userName });
68
+ // closeEditUserNameDialog();
69
+ // }
101
70
 
102
71
  </script>
103
72
  <style lang="scss" scoped>