tuikit-atomicx-vue3 3.4.1 → 4.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (342) hide show
  1. package/.eslintrc.cjs +1 -0
  2. package/dist/baseComp/Modal/Modal.js +431 -23
  3. package/dist/chat/index.d.ts +18 -18
  4. package/dist/components/AudioSetting/AudioMediaControl.js +39 -41
  5. package/dist/components/AudioSetting/AudioSettingTab.js +10 -10
  6. package/dist/components/AudioSetting/MicrophoneSelect.js +8 -8
  7. package/dist/components/AudioSetting/SpeakerSelect.js +9 -9
  8. package/dist/components/AudioSettingPanel/i18n/en-US/index.d.ts +1 -0
  9. package/dist/components/AudioSettingPanel/i18n/en-US/index.js +2 -1
  10. package/dist/components/AudioSettingPanel/i18n/zh-CN/index.d.ts +1 -0
  11. package/dist/components/AudioSettingPanel/i18n/zh-CN/index.js +2 -1
  12. package/dist/components/AudioSettingPanel/index.js +81 -73
  13. package/dist/components/BarrageInput/BarrageInputH5.js +9 -9
  14. package/dist/components/BarrageInput/EmojiPicker/EmojiPicker.js +3 -3
  15. package/dist/components/BarrageInput/MessageInputState.d.ts +28 -0
  16. package/dist/components/BarrageInput/MessageInputState.js +82 -0
  17. package/dist/components/BarrageInput/TextEditor/CharacterCountExtension.js +1 -1
  18. package/dist/components/BarrageInput/TextEditor/EditorCore.js +2 -2
  19. package/dist/components/BarrageInput/TextEditor/index.js +7 -7
  20. package/dist/components/BarrageInput/type.d.ts +17 -0
  21. package/dist/components/BarrageInput/type.js +4 -0
  22. package/dist/components/BarrageInput/utils.d.ts +30 -0
  23. package/dist/components/BarrageInput/utils.js +41 -0
  24. package/dist/components/BarrageList/BarrageList.js +80 -110
  25. package/dist/components/BarrageList/BarrageList.vue.d.ts +0 -29
  26. package/dist/components/BarrageList/BarrageListH5.js +95 -122
  27. package/dist/components/BarrageList/BarrageListH5.vue.d.ts +0 -29
  28. package/dist/components/BarrageList/BarrageListState.d.ts +58 -0
  29. package/dist/components/BarrageList/BarrageListState.js +106 -0
  30. package/dist/components/BarrageList/Message/MessageLayout/MessageBubble/MessageBubble.js +16 -24
  31. package/dist/components/BarrageList/Message/MessageLayout/MessageBubble/MessageBubble.vue.d.ts +5 -5
  32. package/dist/components/BarrageList/Message/MessageLayout/MessageLayout.js +48 -73
  33. package/dist/components/BarrageList/Message/MessageLayout/MessageLayout.vue.d.ts +5 -7
  34. package/dist/components/BarrageList/Message/TextMessage/TextMessage.js +70 -76
  35. package/dist/components/BarrageList/Message/TextMessage/TextMessage.vue.d.ts +6 -6
  36. package/dist/components/BarrageList/Message/TextMessage/emoji.d.ts +5 -0
  37. package/dist/components/BarrageList/Message/TextMessage/emoji.js +134 -0
  38. package/dist/components/BarrageList/index.d.ts +0 -36
  39. package/dist/components/CameraButton/index.js +18 -19
  40. package/dist/components/CoGuestPanel/CoGuestPanel.js +60 -60
  41. package/dist/components/CoHostPanel/BattlePanel.js +25 -25
  42. package/dist/components/CoHostPanel/CoHostPanel.js +60 -55
  43. package/dist/components/CoHostPanel/ConfigSettingPanel.js +49 -55
  44. package/dist/components/CoHostPanel/ConnectionPanel.js +129 -120
  45. package/dist/components/CoHostPanel/RecommendHostList.js +39 -36
  46. package/dist/components/CoHostPanel/constants.d.ts +3 -0
  47. package/dist/components/CoHostPanel/constants.js +6 -0
  48. package/dist/components/CoHostPanel/i18n/en-US/index.d.ts +1 -0
  49. package/dist/components/CoHostPanel/i18n/en-US/index.js +2 -1
  50. package/dist/components/CoHostPanel/i18n/zh-CN/index.d.ts +1 -0
  51. package/dist/components/CoHostPanel/i18n/zh-CN/index.js +3 -2
  52. package/dist/components/LiveAudienceList/LiveAudienceList.js +44 -45
  53. package/dist/components/LiveAudienceList/LiveAudienceListH5.js +7 -7
  54. package/dist/components/LiveAudienceList/UserActionMenu.js +57 -64
  55. package/dist/components/LiveList/LiveList.js +23 -23
  56. package/dist/components/LiveList/LiveListH5.js +38 -38
  57. package/dist/components/LiveScenePanel/CameraSettingDialog.js +10 -10
  58. package/dist/components/LiveScenePanel/MaterialItem.js +15 -15
  59. package/dist/components/LiveScenePanel/index.js +4 -4
  60. package/dist/components/{LiveCoreView → LiveView}/CoreViewDecorate/BattleDecorate.js +58 -58
  61. package/dist/components/{LiveCoreView → LiveView}/CoreViewDecorate/BattleUserDecorate.js +56 -49
  62. package/dist/components/{LiveCoreView → LiveView}/CoreViewDecorate/CoHostDecorate.js +6 -6
  63. package/dist/components/{LiveCoreView → LiveView}/CoreViewDecorate/LiveCoreDecorate.js +1 -1
  64. package/dist/components/{LiveCoreView → LiveView}/DefaultStreamViewUI.js +46 -43
  65. package/dist/components/{LiveCoreView → LiveView}/PlayerControl/AudioControl.js +23 -23
  66. package/dist/components/LiveView/PlayerControl/MultiResolution.js +79 -0
  67. package/dist/components/LiveView/PlayerControl/MultiResolution.vue.d.ts +8 -0
  68. package/dist/components/LiveView/PlayerControl/PlayerControl.js +172 -0
  69. package/dist/components/LiveView/PlayerControl/PlayerControlState.js +263 -0
  70. package/dist/components/{LiveCoreView → LiveView}/PlayerControl/utils/domHelpers.d.ts +6 -0
  71. package/dist/components/LiveView/PlayerControl/utils/domHelpers.js +131 -0
  72. package/dist/components/{LiveCoreView/i18n/zh-CN → LiveView/i18n/en-US}/index.d.ts +3 -2
  73. package/dist/components/{LiveCoreView → LiveView}/i18n/en-US/index.js +4 -3
  74. package/dist/components/{LiveCoreView/i18n/en-US → LiveView/i18n/zh-CN}/index.d.ts +3 -2
  75. package/dist/components/{LiveCoreView → LiveView}/i18n/zh-CN/index.js +4 -3
  76. package/dist/components/LiveView/index.d.ts +79 -0
  77. package/dist/components/{LiveCoreView → LiveView}/index.js +44 -42
  78. package/dist/components/MessageInput/TextEditor/EditorCore.js +2 -2
  79. package/dist/components/MessageList/MessageList.vue.d.ts +2 -2
  80. package/dist/components/MessageList/index.d.ts +18 -18
  81. package/dist/components/MicButton/index.js +11 -11
  82. package/dist/components/StreamMixer/LocalMixer/MixerControl.js +12 -12
  83. package/dist/components/StreamMixer/LocalMixer/index.js +66 -63
  84. package/dist/components/StreamMixer/index.js +6 -6
  85. package/dist/components/StreamView/Layout/CustomLayout.js +8 -8
  86. package/dist/components/StreamView/Layout/FloatLayout.js +124 -127
  87. package/dist/components/StreamView/Layout/GridLayout.js +5 -5
  88. package/dist/components/StreamView/index.js +25 -33
  89. package/dist/components/StreamView/manager/mediaManager.js +54 -60
  90. package/dist/components/VideoSetting/CameraSelect.js +8 -8
  91. package/dist/components/VideoSetting/VideoMediaControl.js +10 -10
  92. package/dist/components/VideoSetting/VideoPreview.js +9 -9
  93. package/dist/components/VideoSetting/VideoProfile.js +6 -6
  94. package/dist/components/VideoSetting/VideoSettingTab.js +40 -39
  95. package/dist/components/VideoSettingPanel/CameraSelect.js +8 -8
  96. package/dist/components/VideoSettingPanel/VideoPreview.js +1 -1
  97. package/dist/components/VideoSettingPanel/VideoProfile.js +18 -18
  98. package/dist/hooks/useRoomEngine.js +6 -6
  99. package/dist/{index-D88ja_7_.js → index-BfIEeWMg.js} +1767 -1757
  100. package/dist/{index-D-KJvDvy.js → index-DTi1fL-x.js} +460 -457
  101. package/dist/index.js +177 -157
  102. package/dist/report/MetricsKey.d.ts +16 -0
  103. package/dist/report/MetricsKey.js +4 -0
  104. package/dist/report/dataReport.d.ts +12 -0
  105. package/dist/report/dataReport.js +45 -0
  106. package/dist/report/index.d.ts +4 -0
  107. package/dist/report/index.js +6 -0
  108. package/dist/rtc/index.d.ts +6 -81
  109. package/dist/rtc/index.js +53 -52
  110. package/dist/states/BarrageState/BarrageState.d.ts +74 -0
  111. package/dist/states/BarrageState/BarrageState.js +80 -0
  112. package/dist/states/BarrageState/index.d.ts +1 -0
  113. package/dist/states/BarrageState/index.js +5 -0
  114. package/dist/states/{BattleState.d.ts → BattleState/BattleState.d.ts} +10 -11
  115. package/dist/states/BattleState/BattleState.js +203 -0
  116. package/dist/states/BattleState/index.d.ts +1 -0
  117. package/dist/states/BattleState/index.js +4 -0
  118. package/dist/states/CoGuestState.d.ts +24 -94
  119. package/dist/states/CoGuestState.js +297 -189
  120. package/dist/states/CoHostState/CoHostState.d.ts +2 -2
  121. package/dist/states/CoHostState/CoHostState.js +135 -131
  122. package/dist/states/{DeviceState.d.ts → DeviceState/DeviceState.d.ts} +25 -13
  123. package/dist/states/DeviceState/DeviceState.js +314 -0
  124. package/dist/states/DeviceState/index.d.ts +1 -0
  125. package/dist/states/DeviceState/index.js +4 -0
  126. package/dist/states/LiveAudienceState.d.ts +3 -1
  127. package/dist/states/LiveAudienceState.js +106 -63
  128. package/dist/states/{LiveState/index.d.ts → LiveListState/LiveListState.d.ts} +13 -8
  129. package/dist/states/LiveListState/LiveListState.js +285 -0
  130. package/dist/states/LiveListState/index.d.ts +1 -0
  131. package/dist/states/LiveListState/index.js +4 -0
  132. package/dist/states/LiveMonitorState/api/http.js +147 -129
  133. package/dist/states/LiveMonitorState/index.js +67 -62
  134. package/dist/states/LiveSeatState/index.d.ts +46 -11
  135. package/dist/states/LiveSeatState/index.js +34 -15
  136. package/dist/states/LiveSeatState/seatEventManager.d.ts +2 -0
  137. package/dist/states/LiveSeatState/seatEventManager.js +63 -42
  138. package/dist/states/LiveSeatState/seatManager.d.ts +34 -5
  139. package/dist/states/LiveSeatState/seatManager.js +131 -29
  140. package/dist/states/LiveSeatState/store.d.ts +5 -5
  141. package/dist/states/LiveSeatState/store.js +12 -10
  142. package/dist/states/LiveSeatState/usePlayStream/RTCStreamManager.js +1 -1
  143. package/dist/states/LiveSeatState/usePlayStream/RTCStreamPlayer.js +1 -1
  144. package/dist/states/LiveSeatState/usePlayStream/index.js +30 -28
  145. package/dist/states/LoginState.js +39 -34
  146. package/dist/states/SeatStore.js +82 -83
  147. package/dist/states/{VideoMixerState.d.ts → VideoMixerState/VideoMixerState.d.ts} +1 -1
  148. package/dist/states/VideoMixerState/VideoMixerState.js +269 -0
  149. package/dist/states/VideoMixerState/index.d.ts +1 -0
  150. package/dist/states/VideoMixerState/index.js +4 -0
  151. package/dist/styles/index.css +1 -1
  152. package/dist/types/audience.d.ts +21 -0
  153. package/dist/types/audience.js +4 -1
  154. package/dist/types/battle.d.ts +75 -3
  155. package/dist/types/battle.js +5 -1
  156. package/dist/types/coGuest.d.ts +72 -5
  157. package/dist/types/coGuest.js +4 -2
  158. package/dist/types/device.d.ts +38 -17
  159. package/dist/types/device.js +10 -8
  160. package/dist/types/index.d.ts +2 -2
  161. package/dist/types/index.js +96 -80
  162. package/dist/types/live.d.ts +36 -21
  163. package/dist/types/live.js +6 -4
  164. package/dist/types/seat.d.ts +23 -4
  165. package/dist/types/seat.js +7 -1
  166. package/dist/utils/eventCenter.d.ts +88 -0
  167. package/dist/utils/eventCenter.js +161 -0
  168. package/package.json +2 -2
  169. package/src/components/AudioSetting/AudioMediaControl.vue +1 -3
  170. package/src/components/AudioSetting/AudioSettingTab.vue +1 -2
  171. package/src/components/AudioSetting/MicrophoneSelect.vue +1 -2
  172. package/src/components/AudioSetting/SpeakerSelect.vue +1 -2
  173. package/src/components/AudioSettingPanel/i18n/en-US/index.ts +1 -0
  174. package/src/components/AudioSettingPanel/i18n/zh-CN/index.ts +1 -0
  175. package/src/components/AudioSettingPanel/index.vue +4 -2
  176. package/src/components/BarrageInput/BarrageInputH5.vue +1 -1
  177. package/src/components/BarrageInput/EmojiPicker/EmojiPicker.vue +1 -1
  178. package/src/components/BarrageInput/MessageInputState.ts +160 -0
  179. package/src/components/BarrageInput/TextEditor/TextEditor.vue +1 -1
  180. package/src/components/BarrageInput/type.ts +26 -0
  181. package/src/components/BarrageInput/utils.ts +45 -0
  182. package/src/components/BarrageList/BarrageList.vue +61 -117
  183. package/src/components/BarrageList/BarrageListH5.vue +75 -159
  184. package/src/components/BarrageList/BarrageListState.ts +223 -0
  185. package/src/components/BarrageList/Message/MessageLayout/MessageBubble/MessageBubble.vue +8 -55
  186. package/src/components/BarrageList/Message/MessageLayout/MessageLayout.vue +19 -44
  187. package/src/components/BarrageList/Message/TextMessage/TextMessage.vue +69 -96
  188. package/src/components/BarrageList/Message/TextMessage/emoji.ts +132 -0
  189. package/src/components/CameraButton/index.vue +0 -1
  190. package/src/components/CoGuestPanel/CoGuestPanel.vue +16 -91
  191. package/src/components/CoHostPanel/BattlePanel.vue +4 -7
  192. package/src/components/CoHostPanel/CoHostPanel.vue +11 -3
  193. package/src/components/CoHostPanel/ConfigSettingPanel.vue +2 -8
  194. package/src/components/CoHostPanel/ConnectionPanel.vue +41 -37
  195. package/src/components/CoHostPanel/RecommendHostList.vue +12 -13
  196. package/src/components/CoHostPanel/constants.ts +3 -0
  197. package/src/components/CoHostPanel/i18n/en-US/index.ts +1 -0
  198. package/src/components/CoHostPanel/i18n/zh-CN/index.ts +2 -1
  199. package/src/components/LiveAudienceList/LiveAudienceList.vue +4 -5
  200. package/src/components/LiveAudienceList/LiveAudienceListH5.vue +2 -2
  201. package/src/components/LiveAudienceList/UserActionMenu.vue +7 -48
  202. package/src/components/LiveList/LiveList.vue +5 -5
  203. package/src/components/LiveList/LiveListH5.vue +6 -6
  204. package/src/components/LiveScenePanel/index.vue +2 -2
  205. package/src/components/{LiveCoreView → LiveView}/CoreViewDecorate/BattleDecorate.vue +10 -15
  206. package/src/components/{LiveCoreView → LiveView}/CoreViewDecorate/BattleUserDecorate.vue +30 -31
  207. package/src/components/{LiveCoreView → LiveView}/DefaultStreamViewUI.vue +5 -3
  208. package/src/components/{LiveCoreView → LiveView}/PlayerControl/AudioControl.vue +1 -1
  209. package/src/components/{LiveCoreView → LiveView}/PlayerControl/MultiResolution.vue +9 -3
  210. package/src/components/{LiveCoreView → LiveView}/PlayerControl/PlayerControl.vue +10 -2
  211. package/src/components/{LiveCoreView → LiveView}/PlayerControl/PlayerControlState.ts +233 -259
  212. package/src/components/{LiveCoreView → LiveView}/PlayerControl/utils/domHelpers.ts +64 -0
  213. package/src/components/{LiveCoreView → LiveView}/i18n/en-US/index.ts +3 -2
  214. package/src/components/{LiveCoreView → LiveView}/i18n/zh-CN/index.ts +3 -2
  215. package/src/components/{LiveCoreView → LiveView}/index.ts +5 -2
  216. package/src/components/{LiveCoreView → LiveView}/index.vue +3 -3
  217. package/src/components/MicButton/index.vue +3 -3
  218. package/src/components/StreamMixer/LocalMixer/index.vue +6 -8
  219. package/src/components/StreamMixer/index.vue +1 -1
  220. package/src/components/StreamView/Layout/CustomLayout.vue +2 -2
  221. package/src/components/StreamView/Layout/FloatLayout.vue +88 -83
  222. package/src/components/StreamView/index.vue +28 -14
  223. package/src/components/StreamView/manager/mediaManager.ts +38 -42
  224. package/src/components/VideoSetting/CameraSelect.vue +1 -2
  225. package/src/components/VideoSetting/VideoMediaControl.vue +1 -1
  226. package/src/components/VideoSetting/VideoPreview.vue +1 -2
  227. package/src/components/VideoSetting/VideoProfile.vue +1 -1
  228. package/src/components/VideoSetting/VideoSettingTab.vue +9 -5
  229. package/src/components/VideoSettingPanel/CameraSelect.vue +1 -2
  230. package/src/components/VideoSettingPanel/VideoProfile.vue +7 -7
  231. package/src/hooks/useRoomEngine.ts +1 -1
  232. package/src/report/MetricsKey.ts +16 -0
  233. package/src/report/dataReport.ts +55 -0
  234. package/src/report/index.ts +7 -0
  235. package/src/rtc/index.ts +8 -10
  236. package/src/types/audience.ts +27 -1
  237. package/src/types/battle.ts +87 -4
  238. package/src/types/coGuest.ts +87 -5
  239. package/src/types/device.ts +41 -16
  240. package/src/types/index.ts +2 -2
  241. package/src/types/live.ts +41 -22
  242. package/src/types/seat.ts +28 -4
  243. package/src/utils/eventCenter.ts +249 -0
  244. package/dist/DialogPortal-CvJcEAsn.js +0 -417
  245. package/dist/components/BarrageList/Message/FaceMessage/FaceMessage.js +0 -23
  246. package/dist/components/BarrageList/Message/FaceMessage/FaceMessage.vue.d.ts +0 -30
  247. package/dist/components/BarrageList/Message/FaceMessage/index.d.ts +0 -3
  248. package/dist/components/BarrageList/Message/FaceMessage/index.js +0 -4
  249. package/dist/components/BarrageList/Message/GroupTipMessage/GroupTipMessage.js +0 -4
  250. package/dist/components/BarrageList/Message/GroupTipMessage/GroupTipMessage.vue.d.ts +0 -16
  251. package/dist/components/BarrageList/Message/GroupTipMessage/index.d.ts +0 -3
  252. package/dist/components/BarrageList/Message/GroupTipMessage/index.js +0 -25
  253. package/dist/components/BarrageList/Message/ImageMessage/ImageMessage.js +0 -71
  254. package/dist/components/BarrageList/Message/ImageMessage/ImageMessage.vue.d.ts +0 -34
  255. package/dist/components/BarrageList/Message/ImageMessage/index.d.ts +0 -3
  256. package/dist/components/BarrageList/Message/ImageMessage/index.js +0 -4
  257. package/dist/components/BarrageList/Message/MergerMessage/MergerMessage.js +0 -9
  258. package/dist/components/BarrageList/Message/MergerMessage/MergerMessage.vue.d.ts +0 -2
  259. package/dist/components/BarrageList/Message/MergerMessage/index.d.ts +0 -3
  260. package/dist/components/BarrageList/Message/MergerMessage/index.js +0 -4
  261. package/dist/components/BarrageList/Message/MessageLayout/MessageMeta/MessageMeta.js +0 -40
  262. package/dist/components/BarrageList/Message/MessageLayout/MessageMeta/MessageMeta.vue.d.ts +0 -54
  263. package/dist/components/BarrageList/Message/MessageLayout/MessageMeta/MessageStatusIcon.js +0 -26
  264. package/dist/components/BarrageList/Message/MessageLayout/MessageMeta/MessageStatusIcon.vue.d.ts +0 -15
  265. package/dist/components/BarrageList/Message/MessageLayout/MessageMeta/index.d.ts +0 -3
  266. package/dist/components/BarrageList/Message/MessageLayout/MessageMeta/index.js +0 -4
  267. package/dist/components/BarrageList/Message/RecalledMessage/RecalledMessage.js +0 -41
  268. package/dist/components/BarrageList/Message/RecalledMessage/RecalledMessage.vue.d.ts +0 -35
  269. package/dist/components/BarrageList/Message/RecalledMessage/index.d.ts +0 -3
  270. package/dist/components/BarrageList/Message/RecalledMessage/index.js +0 -4
  271. package/dist/components/BarrageList/MessageForward/ForwardListItem.js +0 -45
  272. package/dist/components/BarrageList/MessageForward/ForwardListItem.vue.d.ts +0 -17
  273. package/dist/components/BarrageList/MessageForward/MessageForward.js +0 -203
  274. package/dist/components/BarrageList/MessageForward/MessageForward.vue.d.ts +0 -2
  275. package/dist/components/BarrageList/MessageForward/index.d.ts +0 -3
  276. package/dist/components/BarrageList/MessageForward/index.js +0 -4
  277. package/dist/components/LiveCoreView/PlayerControl/MultiResolution.js +0 -78
  278. package/dist/components/LiveCoreView/PlayerControl/MultiResolution.vue.d.ts +0 -2
  279. package/dist/components/LiveCoreView/PlayerControl/PlayerControl.js +0 -168
  280. package/dist/components/LiveCoreView/PlayerControl/PlayerControlState.js +0 -267
  281. package/dist/components/LiveCoreView/PlayerControl/utils/domHelpers.js +0 -99
  282. package/dist/components/LiveCoreView/index.d.ts +0 -4
  283. package/dist/components/StreamView/Layout/MixLayout.js +0 -89
  284. package/dist/components/StreamView/Layout/MixLayout.vue.d.ts +0 -31
  285. package/dist/states/BarrageListState/BarrageListState.d.ts +0 -26
  286. package/dist/states/BarrageListState/BarrageListState.js +0 -122
  287. package/dist/states/BarrageListState/index.d.ts +0 -1
  288. package/dist/states/BarrageListState/index.js +0 -4
  289. package/dist/states/BattleState.js +0 -117
  290. package/dist/states/DeviceState.js +0 -296
  291. package/dist/states/LiveState/index.js +0 -254
  292. package/dist/states/VideoMixerState.js +0 -260
  293. package/src/components/BarrageList/Message/FaceMessage/FaceMessage.vue +0 -43
  294. package/src/components/BarrageList/Message/FaceMessage/index.ts +0 -3
  295. package/src/components/BarrageList/Message/GroupTipMessage/GroupTipMessage.vue +0 -55
  296. package/src/components/BarrageList/Message/GroupTipMessage/index.ts +0 -3
  297. package/src/components/BarrageList/Message/ImageMessage/ImageMessage.vue +0 -181
  298. package/src/components/BarrageList/Message/ImageMessage/index.ts +0 -3
  299. package/src/components/BarrageList/Message/MergerMessage/MergerMessage.vue +0 -6
  300. package/src/components/BarrageList/Message/MergerMessage/index.ts +0 -3
  301. package/src/components/BarrageList/Message/MessageLayout/MessageMeta/MessageMeta.vue +0 -70
  302. package/src/components/BarrageList/Message/MessageLayout/MessageMeta/MessageStatusIcon.vue +0 -40
  303. package/src/components/BarrageList/Message/MessageLayout/MessageMeta/index.ts +0 -3
  304. package/src/components/BarrageList/Message/RecalledMessage/RecalledMessage.vue +0 -82
  305. package/src/components/BarrageList/Message/RecalledMessage/index.ts +0 -3
  306. package/src/components/BarrageList/MessageForward/ForwardListItem.vue +0 -67
  307. package/src/components/BarrageList/MessageForward/MessageForward.vue +0 -388
  308. package/src/components/BarrageList/MessageForward/index.ts +0 -3
  309. package/src/components/StreamView/Layout/MixLayout.vue +0 -144
  310. /package/dist/components/{LiveCoreView → LiveView}/CoreViewDecorate/BattleDecorate.vue.d.ts +0 -0
  311. /package/dist/components/{LiveCoreView → LiveView}/CoreViewDecorate/BattleUserDecorate.vue.d.ts +0 -0
  312. /package/dist/components/{LiveCoreView → LiveView}/CoreViewDecorate/CoHostDecorate.vue.d.ts +0 -0
  313. /package/dist/components/{LiveCoreView → LiveView}/CoreViewDecorate/LiveCoreDecorate.vue.d.ts +0 -0
  314. /package/dist/components/{LiveCoreView → LiveView}/DefaultStreamViewUI.vue.d.ts +0 -0
  315. /package/dist/components/{LiveCoreView → LiveView}/PlayerControl/AudioControl.vue.d.ts +0 -0
  316. /package/dist/components/{LiveCoreView → LiveView}/PlayerControl/PlayerControl.vue.d.ts +0 -0
  317. /package/dist/components/{LiveCoreView → LiveView}/PlayerControl/PlayerControlState.d.ts +0 -0
  318. /package/dist/components/{LiveCoreView → LiveView}/PlayerControl/index.d.ts +0 -0
  319. /package/dist/components/{LiveCoreView → LiveView}/PlayerControl/index.js +0 -0
  320. /package/dist/components/{LiveCoreView → LiveView}/PlayerControl/utils/deviceDetection.d.ts +0 -0
  321. /package/dist/components/{LiveCoreView → LiveView}/PlayerControl/utils/deviceDetection.js +0 -0
  322. /package/dist/components/{LiveCoreView → LiveView}/PlayerControl/utils/fullscreenManager.d.ts +0 -0
  323. /package/dist/components/{LiveCoreView → LiveView}/PlayerControl/utils/fullscreenManager.js +0 -0
  324. /package/dist/components/{LiveCoreView → LiveView}/i18n/index.d.ts +0 -0
  325. /package/dist/components/{LiveCoreView → LiveView}/i18n/index.js +0 -0
  326. /package/dist/components/{LiveCoreView → LiveView}/index.vue.d.ts +0 -0
  327. /package/src/components/{LiveCoreView → LiveView}/CoreViewDecorate/CoHostDecorate.vue +0 -0
  328. /package/src/components/{LiveCoreView → LiveView}/CoreViewDecorate/LiveCoreDecorate.vue +0 -0
  329. /package/src/components/{LiveCoreView → LiveView}/PlayerControl/PlayerControl.module.scss +0 -0
  330. /package/src/components/{LiveCoreView → LiveView}/PlayerControl/index.ts +0 -0
  331. /package/src/components/{LiveCoreView → LiveView}/PlayerControl/utils/deviceDetection.ts +0 -0
  332. /package/src/components/{LiveCoreView → LiveView}/PlayerControl/utils/fullscreenManager.ts +0 -0
  333. /package/src/components/{LiveCoreView → LiveView}/assets/img/defeat.png +0 -0
  334. /package/src/components/{LiveCoreView → LiveView}/assets/img/draw.png +0 -0
  335. /package/src/components/{LiveCoreView → LiveView}/assets/img/victory.png +0 -0
  336. /package/src/components/{LiveCoreView → LiveView}/assets/svg/BattleOrdinaryBadge.svg +0 -0
  337. /package/src/components/{LiveCoreView → LiveView}/assets/svg/BattleTopBadge.svg +0 -0
  338. /package/src/components/{LiveCoreView → LiveView}/assets/svg/blueBkg.svg +0 -0
  339. /package/src/components/{LiveCoreView → LiveView}/assets/svg/redBkg.svg +0 -0
  340. /package/src/components/{LiveCoreView → LiveView}/assets/svg/s.svg +0 -0
  341. /package/src/components/{LiveCoreView → LiveView}/assets/svg/v.svg +0 -0
  342. /package/src/components/{LiveCoreView → LiveView}/i18n/index.ts +0 -0
@@ -69,7 +69,7 @@
69
69
 
70
70
  <script setup lang="ts">
71
71
  import { ref, onMounted, onUnmounted } from 'vue';
72
- import { TUIConnectionCode, TUILiveBattleManagerEvents } from '@tencentcloud/tuiroom-engine-js';
72
+ import { TUIConnectionCode } from '@tencentcloud/tuiroom-engine-js';
73
73
  import { TUIButton, TUIToast, useUIKit, TOAST_TYPE, TUIDialog } from '@tencentcloud/uikit-base-component-vue3';
74
74
  import { useBattleState } from '../../states/BattleState';
75
75
  import { useCoHostState } from '../../states/CoHostState';
@@ -78,7 +78,6 @@ import { CoHostLayoutTemplate, CoHostEvent } from '../../types';
78
78
  import UserList from './UserList.vue';
79
79
  import RecommendHostList from './RecommendHostList.vue';
80
80
  import type { SeatUserInfo } from '../../types';
81
- import type { TUIBattleUser } from '@tencentcloud/tuiroom-engine-js';
82
81
 
83
82
  const { t } = useUIKit();
84
83
  const props = defineProps<{
@@ -98,8 +97,6 @@ const {
98
97
  battleUsers,
99
98
  requestBattle,
100
99
  exitBattle,
101
- subscribeEvent: subscribeBattleEvent,
102
- unsubscribeEvent: unsubscribeBattleEvent,
103
100
  } = useBattleState();
104
101
 
105
102
  const showExitCoHostDialog = ref(false);
@@ -120,7 +117,7 @@ const handleSendBattleRequest = async (user: SeatUserInfo) => {
120
117
  switch (result.get(user.liveId)) {
121
118
  case TUIConnectionCode.TUIConnectionCodeSuccess:
122
119
  pkUserIds.add(user.userId);
123
- TUIToast({ type: TOAST_TYPE.SUCCESS, message: t('Battle invitation sent to user', { userName: user.userName }) });
120
+ TUIToast({ type: TOAST_TYPE.SUCCESS, message: t('Battle invitation sent to user', { userName: user.userName || user.userId }) });
124
121
  break;
125
122
  case TUIConnectionCode.TUIConnectionCodeRoomNotExist:
126
123
  TUIToast({ type: TOAST_TYPE.ERROR, message: t('Send battle request failed, Room not exist') });
@@ -191,13 +188,13 @@ const handleCoHostRequestRejected = ({ invitee }: { invitee: SeatUserInfo }) =>
191
188
  return;
192
189
  }
193
190
  pkUserIds.delete(invitee.userId);
194
- TUIToast({ type: TOAST_TYPE.INFO, message: t('Battle request rejected by user', { userName: invitee.userName }) });
191
+ TUIToast({ type: TOAST_TYPE.INFO, message: t('Battle request rejected by user', { userName: invitee.userName || invitee.userId }) });
195
192
  };
196
193
 
197
194
  const handleCoHostRequestTimeout = ({ inviter, invitee }: { inviter: SeatUserInfo; invitee: SeatUserInfo }) => {
198
195
  if (inviter.userId === loginUserInfo.value?.userId && pkUserIds.has(invitee.userId)) {
199
196
  pkUserIds.delete(invitee.userId);
200
- TUIToast({ type: TOAST_TYPE.INFO, message: t('Battle request timeout for user', { userName: invitee.userName }) });
197
+ TUIToast({ type: TOAST_TYPE.INFO, message: t('Battle request timeout for user', { userName: invitee.userName || invitee.userId}) });
201
198
  }
202
199
  };
203
200
 
@@ -57,6 +57,7 @@ import { computed, ref, watch } from 'vue';
57
57
  import { useUIKit, TUIDialog, IconClose, IconLiveSetting } from '@tencentcloud/uikit-base-component-vue3';
58
58
  import { useBattleState } from '../../states/BattleState';
59
59
  import { useCoHostState } from '../../states/CoHostState';
60
+ import { useLoginState } from '../../states/LoginState';
60
61
  import { CoHostStatus, CoHostLayoutTemplate } from '../../types';
61
62
  import BattlePanel from './BattlePanel.vue';
62
63
  import ConfigSettingPanel from './ConfigSettingPanel.vue';
@@ -66,8 +67,9 @@ const { t } = useUIKit();
66
67
  const props = defineProps<{
67
68
  visible: boolean;
68
69
  }>();
70
+ const { loginUserInfo } = useLoginState();
69
71
  const { coHostStatus } = useCoHostState();
70
- const { currentBattleInfo } = useBattleState();
72
+ const { battleUsers } = useBattleState();
71
73
  const emit = defineEmits(['update:visible']);
72
74
  const close = () => {
73
75
  emit('update:visible', false);
@@ -75,7 +77,7 @@ const close = () => {
75
77
  const activeTab = ref('battleTab');
76
78
  const settingVisible = ref(false);
77
79
  const inConnection = computed(() => coHostStatus.value === CoHostStatus.Connected);
78
- const inPk = computed(() => currentBattleInfo.value?.battleId !== undefined);
80
+ const inPk = computed(() => battleUsers.value.some(user => user.userId === loginUserInfo.value?.userId));
79
81
 
80
82
  const title = computed(() => {
81
83
  if (inPk.value) {
@@ -99,7 +101,13 @@ const handleSettingConfirm = (form: {
99
101
  }) => {
100
102
  configForm.value = form;
101
103
  };
102
-
104
+ watch(inConnection, (newVal) => {
105
+ if (newVal && !inPk.value) {
106
+ activeTab.value = 'coHostTab';
107
+ }
108
+ }, {
109
+ immediate: true,
110
+ });
103
111
  watch(inPk, (newVal, oldVal) => {
104
112
  if (newVal) {
105
113
  emit('update:visible', false);
@@ -107,7 +107,8 @@ const confirm = () => {
107
107
 
108
108
  const handleDurationChange = (event: any) => {
109
109
  templateForm.value.battleDuration = Number(event.target.value);
110
- }
110
+ };
111
+
111
112
  watch(() => props.visible, (newVal) => {
112
113
  dialogVisible.value = newVal;
113
114
  });
@@ -122,12 +123,6 @@ const layoutOptions = computed(() => [
122
123
  templateId: CoHostLayoutTemplate.HostDynamicGrid,
123
124
  label: t('Dynamic Grid9 Layout'),
124
125
  },
125
- {
126
- id: 'PortraitFixed_1v6',
127
- icon: IconDynamic1v6Layout,
128
- templateId: CoHostLayoutTemplate.HostDynamic1v6,
129
- label: t('Dynamic 1v6 Layout'),
130
- },
131
126
  ]);
132
127
  </script>
133
128
 
@@ -211,7 +206,6 @@ const layoutOptions = computed(() => [
211
206
  }
212
207
  }
213
208
 
214
-
215
209
  .layout-template-options {
216
210
  display: flex;
217
211
  flex-direction: row;
@@ -1,6 +1,5 @@
1
1
  <template>
2
2
  <div id="AtomicxCoHostPanel" class="connection-panel">
3
- <!-- 当前麦位 -->
4
3
  <div
5
4
  v-if="coHostStatus === CoHostStatus.Connected"
6
5
  id="userListContainer"
@@ -42,7 +41,6 @@
42
41
  </div>
43
42
  </div>
44
43
 
45
- <!-- 推荐主播 -->
46
44
  <RecommendHostList class="recommend-host-list">
47
45
  <template #host-item-actions="{ user }">
48
46
  <TUIButton
@@ -107,15 +105,16 @@
107
105
 
108
106
  <script setup lang="ts">
109
107
  import { ref, onMounted, onUnmounted, computed } from 'vue';
110
- import { TUIBattleInfo, TUIBattleStoppedReason, TUIBattleUser, TUIConnectionCode, TUILiveBattleManagerEvents } from '@tencentcloud/tuiroom-engine-js';
108
+ import { TUIBattleInfo, TUIConnectionCode } from '@tencentcloud/tuiroom-engine-js';
111
109
  import { TUIButton, TUIToast, useUIKit, TOAST_TYPE, TUIDialog } from '@tencentcloud/uikit-base-component-vue3';
112
110
  import { useBattleState } from '../../states/BattleState';
113
111
  import { useCoHostState } from '../../states/CoHostState';
114
112
  import { useLoginState } from '../../states/LoginState';
115
- import { CoHostLayoutTemplate, CoHostStatus, CoHostEvent } from '../../types';
113
+ import { CoHostLayoutTemplate, CoHostStatus, CoHostEvent, BattleEvent } from '../../types';
116
114
  import { Avatar } from '../Avatar';
117
115
  import RecommendHostList from './RecommendHostList.vue';
118
116
  import type { SeatUserInfo } from '../../types';
117
+ import { ERROR_MESSAGE } from './constants';
119
118
 
120
119
  const props = defineProps<{
121
120
  battleDuration: number;
@@ -136,7 +135,7 @@ const {
136
135
  } = useCoHostState();
137
136
  const {
138
137
  currentBattleInfo,
139
- battleUsers,
138
+ battleUsers,
140
139
  requestBattle,
141
140
  cancelBattleRequest,
142
141
  subscribeEvent: subscribeBattleEvent,
@@ -173,7 +172,7 @@ const handleSendCoHostRequest = async (user: SeatUserInfo) => {
173
172
  });
174
173
  if (result.get(user.liveId) === TUIConnectionCode.TUIConnectionCodeSuccess) {
175
174
  sentCoHostRequestUserList.value.add(user.userId);
176
- TUIToast({ type: TOAST_TYPE.SUCCESS, message: t('Co-host invitation sent to user', { userName: user.userName }) });
175
+ TUIToast({ type: TOAST_TYPE.SUCCESS, message: t('Co-host invitation sent to user', { userName: user.userName || user.userId }) });
177
176
  } else {
178
177
  switch (result.get(user.liveId)) {
179
178
  case TUIConnectionCode.TUIConnectionCodeRoomNotExist:
@@ -219,21 +218,27 @@ const handleExitCoHost = () => {
219
218
 
220
219
  const handleBattleRequest = async () => {
221
220
  const userIdList = connected.value.filter(item => item.userId !== loginUserInfo.value?.userId).map(item => item.userId);
222
- const battleRes = await requestBattle({
223
- config: {
224
- duration: props.battleDuration,
225
- needResponse: true,
226
- },
227
- userIdList,
228
- timeout: 10,
229
- });
230
- requestBattleId.value = battleRes.battleId;
231
- userIdList.forEach(userId => battleRequestList.value.add(userId))
221
+ try {
222
+ const battleRes = await requestBattle({
223
+ config: {
224
+ duration: props.battleDuration,
225
+ needResponse: true,
226
+ extensionInfo: '',
227
+ },
228
+ userIdList,
229
+ timeout: 10,
230
+ });
231
+ requestBattleId.value = battleRes.battleId;
232
+ userIdList.forEach(userId => battleRequestList.value.add(userId))
233
+ } catch (error: any) {
234
+ const message = t(ERROR_MESSAGE[error.code as keyof typeof ERROR_MESSAGE] || 'Request battle failed');
235
+ TUIToast.error({ message });
236
+ }
232
237
  };
233
238
 
234
239
  const handleCancelBattleRequest = async () => {
235
- await cancelBattleRequest({
236
- battleId: requestBattleId.value,
240
+ await cancelBattleRequest({
241
+ battleId: requestBattleId.value,
237
242
  userIdList: Array.from(battleRequestList.value)
238
243
  });
239
244
  requestBattleId.value = '';
@@ -248,43 +253,43 @@ const handleCoHostRequestAccepted = ({ invitee }: { invitee: SeatUserInfo }) =>
248
253
 
249
254
  const handleCoHostRequestRejected = ({ invitee }: { invitee: SeatUserInfo }) => {
250
255
  if (sentCoHostRequestUserList.value.has(invitee.userId)) {
251
- TUIToast({ type: TOAST_TYPE.INFO, message: t('Co-host request rejected by user', { userName: invitee.userName }) });
256
+ TUIToast({ type: TOAST_TYPE.INFO, message: t('Co-host request rejected by user', { userName: invitee.userName || invitee.userId }) });
252
257
  sentCoHostRequestUserList.value.delete(invitee.userId);
253
258
  }
254
259
  };
255
260
 
256
261
  const handleCoHostRequestTimeout = ({ inviter, invitee }: { inviter: SeatUserInfo; invitee: SeatUserInfo }) => {
257
262
  if (inviter.userId === loginUserInfo.value?.userId && sentCoHostRequestUserList.value.has(invitee.userId)) {
258
- TUIToast({ type: TOAST_TYPE.INFO, message: t('Co-host request timeout for user', { userName: invitee.userName }) });
263
+ TUIToast({ type: TOAST_TYPE.INFO, message: t('Co-host request timeout for user', { userName: invitee.userName || invitee.userId }) });
259
264
  sentCoHostRequestUserList.value.delete(invitee.userId);
260
265
  }
261
266
  };
262
267
 
263
- const onBattleRequestAccept = (eventInfo: { battleInfo: TUIBattleInfo, inviter: TUIBattleUser, invitee: TUIBattleUser }) => {
268
+ const onBattleRequestAccept = (eventInfo: { battleId: string, inviter: SeatUserInfo, invitee: SeatUserInfo }) => {
264
269
  if (eventInfo.inviter.userId === loginUserInfo.value?.userId) {
265
270
  battleRequestList.value.delete(eventInfo.invitee.userId);
266
271
  }
267
272
  };
268
273
 
269
- const onBattleRequestRejected = (eventInfo: { battleInfo: TUIBattleInfo, inviter: TUIBattleUser, invitee: TUIBattleUser }) => {
274
+ const onBattleRequestRejected = (eventInfo: { battleId: string, inviter: SeatUserInfo, invitee: SeatUserInfo }) => {
270
275
  if (eventInfo.inviter.userId === loginUserInfo.value?.userId) {
271
- TUIToast({ type: TOAST_TYPE.INFO, message: t('Battle request rejected by user', { userName: eventInfo.invitee.userName }) });
276
+ TUIToast({ type: TOAST_TYPE.INFO, message: t('Battle request rejected by user', { userName: eventInfo.invitee.userName || eventInfo.invitee.userId }) });
272
277
  battleRequestList.value.delete(eventInfo.invitee.userId);
273
278
  }
274
279
  };
275
280
 
276
- const onBattleRequestTimeout = (eventInfo: { battleInfo: TUIBattleInfo, inviter: TUIBattleUser, invitee: TUIBattleUser }) => {
281
+ const onBattleRequestTimeout = (eventInfo: { battleId: string, inviter: SeatUserInfo, invitee: SeatUserInfo }) => {
277
282
  if (eventInfo.inviter.userId === loginUserInfo.value?.userId) {
278
283
  battleRequestList.value.delete(eventInfo.invitee.userId);
279
284
  }
280
285
  };
281
286
 
282
- const onBattleStarted = (eventInfo: { battleInfo: TUIBattleInfo, }) => {
287
+ const onBattleStarted = () => {
283
288
  requestBattleId.value = '';
284
289
  battleRequestList.value.clear();
285
290
  }
286
291
 
287
- const onBattleEnded = (eventInfo: { battleInfo: TUIBattleInfo, reason: TUIBattleStoppedReason }) => {
292
+ const onBattleEnded = () => {
288
293
  requestBattleId.value = '';
289
294
  battleRequestList.value.clear();
290
295
  }
@@ -294,11 +299,11 @@ onMounted(() => {
294
299
  subscribeEvent(CoHostEvent.onCoHostRequestRejected, handleCoHostRequestRejected);
295
300
  subscribeEvent(CoHostEvent.onCoHostRequestTimeout, handleCoHostRequestTimeout);
296
301
 
297
- subscribeBattleEvent(TUILiveBattleManagerEvents.onBattleRequestAccept, onBattleRequestAccept);
298
- subscribeBattleEvent(TUILiveBattleManagerEvents.onBattleRequestReject, onBattleRequestRejected);
299
- subscribeBattleEvent(TUILiveBattleManagerEvents.onBattleRequestTimeout, onBattleRequestTimeout);
300
- subscribeBattleEvent(TUILiveBattleManagerEvents.onBattleStarted, onBattleStarted);
301
- subscribeBattleEvent(TUILiveBattleManagerEvents.onBattleEnded, onBattleEnded);
302
+ subscribeBattleEvent(BattleEvent.onBattleRequestAccept, onBattleRequestAccept);
303
+ subscribeBattleEvent(BattleEvent.onBattleRequestReject, onBattleRequestRejected);
304
+ subscribeBattleEvent(BattleEvent.onBattleRequestTimeout, onBattleRequestTimeout);
305
+ subscribeBattleEvent(BattleEvent.onBattleStarted, onBattleStarted);
306
+ subscribeBattleEvent(BattleEvent.onBattleEnded, onBattleEnded);
302
307
  });
303
308
 
304
309
  onUnmounted(() => {
@@ -306,11 +311,11 @@ onUnmounted(() => {
306
311
  unsubscribeEvent(CoHostEvent.onCoHostRequestRejected, handleCoHostRequestRejected);
307
312
  unsubscribeEvent(CoHostEvent.onCoHostRequestTimeout, handleCoHostRequestTimeout);
308
313
 
309
- unsubscribeBattleEvent(TUILiveBattleManagerEvents.onBattleRequestAccept, onBattleRequestAccept);
310
- unsubscribeBattleEvent(TUILiveBattleManagerEvents.onBattleRequestReject, onBattleRequestRejected);
311
- unsubscribeBattleEvent(TUILiveBattleManagerEvents.onBattleRequestTimeout, onBattleRequestTimeout);
312
- unsubscribeBattleEvent(TUILiveBattleManagerEvents.onBattleStarted, onBattleStarted);
313
- unsubscribeBattleEvent(TUILiveBattleManagerEvents.onBattleEnded, onBattleEnded);
314
+ unsubscribeBattleEvent(BattleEvent.onBattleRequestAccept, onBattleRequestAccept);
315
+ unsubscribeBattleEvent(BattleEvent.onBattleRequestReject, onBattleRequestRejected);
316
+ unsubscribeBattleEvent(BattleEvent.onBattleRequestTimeout, onBattleRequestTimeout);
317
+ unsubscribeBattleEvent(BattleEvent.onBattleStarted, onBattleStarted);
318
+ unsubscribeBattleEvent(BattleEvent.onBattleEnded, onBattleEnded);
314
319
  });
315
320
  </script>
316
321
 
@@ -466,7 +471,6 @@ onUnmounted(() => {
466
471
  padding: 20px 0 0 0;
467
472
  }
468
473
 
469
- // 布局模板选择样式
470
474
  .layout-template-container {
471
475
  padding: 16px;
472
476
  margin-bottom: 16px;
@@ -4,7 +4,7 @@
4
4
  <span class="recommend-host-list-title-text">{{ coHostStatus === CoHostStatus.Connected ? t('Invite more') : t('Recommend hosts') }}</span>
5
5
  <IconRefresh :class="['refresh-icon', refreshInviteesLoading ? 'loading' : '']" @click="handleRefreshInvitees"></IconRefresh>
6
6
  </div>
7
- <div class="recommend-host-list-content">
7
+ <div class="recommend-host-list-content" ref="recommendHostListContentRef">
8
8
  <div class="recommend-host-list">
9
9
  <div
10
10
  v-for="user in [...invitees, ...candidates]"
@@ -33,7 +33,7 @@
33
33
  <div class="loading-spinner"></div>
34
34
  <span>{{ t('Loading more users...') }}</span>
35
35
  </div>
36
- <div v-else-if="!hasMoreUsers && candidates.length > 0" class="no-more-content">
36
+ <div v-else-if="!hasMoreLive && candidates.length > 0" class="no-more-content">
37
37
  <span>{{ t('No more users') }}</span>
38
38
  </div>
39
39
  <div v-else class="load-more-trigger-content">
@@ -53,24 +53,28 @@
53
53
  <script setup lang="ts">
54
54
  import { IconRefresh, useUIKit, TUIToast, TOAST_TYPE } from '@tencentcloud/uikit-base-component-vue3';
55
55
  import { TUIErrorCode } from '@tencentcloud/tuiroom-engine-js';
56
- import { ref, onMounted, onUnmounted } from 'vue';
56
+ import { ref, onMounted, onUnmounted, computed } from 'vue';
57
57
  import { useCoHostState } from '../../states/CoHostState';
58
- import { useLiveState } from '../../states/LiveState';
58
+ import { useLiveListState } from '../../states/LiveListState';
59
59
  import { Avatar } from '../Avatar';
60
60
  import { CoHostStatus } from '../../types';
61
61
 
62
62
  const { t } = useUIKit();
63
- const { currentCursor, liveList, fetchLiveList } = useLiveState();
63
+ const { liveListCursor, fetchLiveList } = useLiveListState();
64
64
  const { coHostStatus, invitees, candidates } = useCoHostState();
65
65
 
66
+ const recommendHostListContentRef = ref<HTMLElement | null>(null);
66
67
  const loadMoreRef = ref<HTMLElement | null>(null);
67
68
  let intersectionObserver: IntersectionObserver | null = null;
68
69
 
69
70
  const refreshInviteesLoading = ref(false);
70
71
  const loadMoreLoading = ref(false);
71
- const hasMoreUsers = ref(true);
72
+ const hasMoreLive = computed(() => liveListCursor.value !== '');
72
73
  async function handleRefreshInvitees() {
73
74
  refreshInviteesLoading.value = true;
75
+ if (recommendHostListContentRef.value) {
76
+ recommendHostListContentRef.value.scrollTop = 0;
77
+ }
74
78
  Promise.all([
75
79
  new Promise((resolve) => setTimeout(resolve, 500)),
76
80
  fetchLiveList({
@@ -94,18 +98,13 @@ onMounted(() => {
94
98
  if (loadMoreRef.value) {
95
99
  intersectionObserver = new IntersectionObserver(async (changes) => {
96
100
  let item = changes[0];
97
- if (item.isIntersecting && !loadMoreLoading.value && hasMoreUsers.value) {
101
+ if (item.isIntersecting && !loadMoreLoading.value && hasMoreLive.value) {
98
102
  loadMoreLoading.value = true;
99
103
  try {
100
- const previousLength = liveList.value.length;
101
104
  await fetchLiveList({
102
- cursor: currentCursor.value === '' ? liveList.value.length + '' : currentCursor.value,
105
+ cursor: liveListCursor.value,
103
106
  count: 20,
104
107
  });
105
- const newLength = liveList.value.length;
106
- if (newLength - previousLength < 20) {
107
- hasMoreUsers.value = false;
108
- }
109
108
  } catch (error) {
110
109
  console.error('Load more users failed:', error);
111
110
  } finally {
@@ -0,0 +1,3 @@
1
+ export const ERROR_MESSAGE = {
2
+ 100412: 'there is no one valid room for battle',
3
+ };
@@ -75,4 +75,5 @@ export const resource = {
75
75
  'Battle duration': 'Battle duration',
76
76
  'Number minutes': '{{number}} minutes',
77
77
  'Connection Layout': 'Connection Layout',
78
+ 'there is no one valid room for battle': 'There is no one valid room for battle',
78
79
  };
@@ -54,7 +54,7 @@ export const resource = {
54
54
  'Refresh error, please try again later': '刷新失败,请稍后再试',
55
55
  'Are you sure you want to exit the battle': '确定要退出 PK 吗?',
56
56
  'Request battle failed': '发起 PK 失败',
57
- 'Battle ended': 'PK 已结束',
57
+ 'Battle ended': 'PK 结束',
58
58
  'Battle started': 'PK 已开始',
59
59
  'User joined battle': '用户{{userName}}已加入 PK',
60
60
  'User exited battle': '用户{{userName}}已退出 PK',
@@ -76,4 +76,5 @@ export const resource = {
76
76
  'Battle duration': '发起 PK 时长',
77
77
  'Number minutes': '{{number}} 分钟',
78
78
  'Connection Layout': '连线布局',
79
+ 'there is no one valid room for battle': '发起的 PK 中无有效的房间',
79
80
  };
@@ -49,7 +49,7 @@
49
49
  </div>
50
50
  </div>
51
51
  <div
52
- v-if="loginUserInfo && localLiveStatus === LiveStatus.Live && !isOwner"
52
+ v-if="loginUserInfo && currentLive?.liveId && !isOwner"
53
53
  class="viewer-item current-user-item"
54
54
  >
55
55
  <span class="rank">-</span>
@@ -75,12 +75,11 @@ import type { CSSProperties } from 'vue';
75
75
  import { computed, defineProps, ref, onMounted, onUnmounted } from 'vue';
76
76
  import { useUIKit } from '@tencentcloud/uikit-base-component-vue3';
77
77
  import { useLiveAudienceState } from '../../states/LiveAudienceState';
78
- import { useLiveState } from '../../states/LiveState';
78
+ import { useLiveListState } from '../../states/LiveListState';
79
79
  import { useLoginState } from '../../states/LoginState';
80
- import { LiveStatus } from '../../types';
80
+ import { Avatar } from '../Avatar';
81
81
  import UserActionMenu from './UserActionMenu.vue';
82
82
  import type { AudienceInfo } from '../../types';
83
- import { Avatar } from '../Avatar';
84
83
 
85
84
  const { t } = useUIKit();
86
85
  const currentViewerTarget = ref<HTMLElement | null>(null);
@@ -92,7 +91,7 @@ const props = defineProps<{
92
91
  }>();
93
92
  const { loginUserInfo } = useLoginState();
94
93
  const { audienceList, audienceCount, fetchAudienceList } = useLiveAudienceState();
95
- const { localLiveStatus, currentLive } = useLiveState();
94
+ const { currentLive } = useLiveListState();
96
95
 
97
96
  const getRankClass = (rank: number) => {
98
97
  switch (rank) {
@@ -25,7 +25,7 @@
25
25
  <script setup lang="ts">
26
26
  import { CSSProperties, computed, defineProps, ref } from 'vue';
27
27
  import { useLoginState } from '../../states/LoginState';
28
- import { useLiveState } from '../../states/LiveState';
28
+ import { useLiveListState } from '../../states/LiveListState';
29
29
  import { useLiveAudienceState } from '../../states/LiveAudienceState';
30
30
  import { type AudienceInfo } from '../../types';
31
31
  import { useUIKit } from '@tencentcloud/uikit-base-component-vue3';
@@ -38,7 +38,7 @@ const props = defineProps<{
38
38
  }>();
39
39
  const { loginUserInfo } = useLoginState();
40
40
  const { audienceList, audienceCount } = useLiveAudienceState();
41
- const { currentLive } = useLiveState();
41
+ const { currentLive } = useLiveListState();
42
42
 
43
43
  const showActionMenu = ref(false);
44
44
  const selectedViewer = ref<AudienceInfo | null>(null);
@@ -37,8 +37,9 @@ import { computed, defineProps, defineEmits, ref, onMounted, onUnmounted } from
37
37
  import { useUIKit, TUIToast } from '@tencentcloud/uikit-base-component-vue3';
38
38
  import { useCoGuestState } from '../../states/CoGuestState';
39
39
  import { useLiveAudienceState } from '../../states/LiveAudienceState';
40
- import { useLiveState } from '../../states/LiveState';
40
+ import { useLiveListState } from '../../states/LiveListState';
41
41
  import { useLoginState } from '../../states/LoginState';
42
+ import { useLiveSeatState } from '../../states/LiveSeatState';
42
43
  import { Avatar } from '../Avatar';
43
44
 
44
45
  const { t } = useUIKit();
@@ -57,18 +58,9 @@ interface Emits {
57
58
 
58
59
  const emit = defineEmits<Emits>();
59
60
  const props = defineProps<Props>();
60
- const { currentLive } = useLiveState();
61
- const {
62
- userListInCoGuest,
63
- receivedCoGuestUserList,
64
- sentCoGuestUserList,
65
- availableCoGuestUserList,
66
- sendCoGuestRequest,
67
- cancelCoGuestRequest,
68
- acceptCoGuestRequest,
69
- rejectCoGuestRequest,
70
- disconnect,
71
- } = useCoGuestState();
61
+ const { currentLive } = useLiveListState();
62
+ const { connected } = useCoGuestState();
63
+ const { kickUserOutOfSeat } = useLiveSeatState();
72
64
  const { disableSendMessage, audienceList, kickUserOutOfRoom } = useLiveAudienceState();
73
65
  const { loginUserInfo } = useLoginState();
74
66
  const currentUserInfo = computed(() => audienceList.value.find(user => user.userId === props.userId));
@@ -78,10 +70,7 @@ const actions = computed(() => {
78
70
  if (!isOwner.value) {
79
71
  return [];
80
72
  }
81
- const isInCoGuest = userListInCoGuest.value.some(user => user.userId === props.userId);
82
- const isSentCoGuest = sentCoGuestUserList.value.some(user => user.userId === props.userId);
83
- const isAvailableCoGuest = availableCoGuestUserList.value.some(user => user.userId === props.userId);
84
- const isReceivedCoGuest = receivedCoGuestUserList.value.some(user => user.userId === props.userId);
73
+ const isInCoGuest = connected.value.some(user => user.userId === props.userId);
85
74
  const isDisableSendMessage = currentUserInfo.value?.isMessageDisabled;
86
75
  if (!isDisableSendMessage) {
87
76
  tempActions.push({
@@ -98,38 +87,8 @@ const actions = computed(() => {
98
87
  });
99
88
  }
100
89
  if (isInCoGuest) {
101
- tempActions.push({ label: t('Kick out'), action: 'disconnect', actionFn: () => disconnect(props.userId) });
90
+ tempActions.push({ label: t('Kick out'), action: 'disconnect', actionFn: () => kickUserOutOfSeat({ userId: props.userId }) });
102
91
  }
103
- // if (isAvailableCoGuest) {
104
- // tempActions.push({
105
- // label: t('Invite to seat'),
106
- // action: 'takeSeat',
107
- // actionFn: () =>
108
- // sendCoGuestRequest({
109
- // userId: props.userId,
110
- // seatIndex: -1,
111
- // }),
112
- // });
113
- // }
114
- // if (isSentCoGuest) {
115
- // tempActions.push({
116
- // label: t('Cancel invitation'),
117
- // action: 'cancelCoGuestRequest',
118
- // actionFn: () => cancelCoGuestRequest({ userId: props.userId }),
119
- // });
120
- // }
121
- // if (isReceivedCoGuest) {
122
- // tempActions.push({
123
- // label: t('Accept invitation'),
124
- // action: 'acceptCoGuestRequest',
125
- // actionFn: () => acceptCoGuestRequest({ userId: props.userId }),
126
- // });
127
- // tempActions.push({
128
- // label: t('Reject invitation'),
129
- // action: 'rejectCoGuestRequest',
130
- // actionFn: () => rejectCoGuestRequest({ userId: props.userId }),
131
- // });
132
- // }
133
92
  tempActions.push({
134
93
  label: t('Kick out of room'),
135
94
  action: 'kickUserOutOfRoom',
@@ -39,11 +39,11 @@
39
39
  <script lang="ts" setup>
40
40
  import { ref, computed, defineEmits, watch } from 'vue';
41
41
  import { useUIKit, IconLiveCoverHeader, IconNoLiveRoom } from '@tencentcloud/uikit-base-component-vue3';
42
- import { useLiveState } from '../../states/LiveState';
42
+ import { useLiveListState } from '../../states/LiveListState';
43
43
  import { useLoginState } from '../../states/LoginState';
44
44
  import { Avatar } from '../Avatar';
45
45
  import type { LiveInfo } from '../../types';
46
- const { liveList, currentCursor, fetchLiveList } = useLiveState();
46
+ const { liveList, liveListCursor, fetchLiveList } = useLiveListState();
47
47
  const { loginUserInfo } = useLoginState();
48
48
  const { t } = useUIKit();
49
49
  const props = defineProps({
@@ -57,7 +57,7 @@ const scrollContainerRef = ref<HTMLElement | null>(null);
57
57
  const liveListItemsRef = ref<HTMLElement | null>(null);
58
58
 
59
59
  const isLoadingMore = ref(false);
60
- const hasMoreLive = computed(() => currentCursor.value !== '');
60
+ const hasMoreLive = computed(() => liveListCursor.value !== '');
61
61
 
62
62
  const liveItemWidth = ref('356px');
63
63
  const liveItemHeight = ref('270px');
@@ -71,7 +71,7 @@ watch(
71
71
  async (user) => {
72
72
  if (user && user.userId) {
73
73
  isLoadingMore.value = true;
74
- currentCursor.value = '';
74
+ liveListCursor.value = '';
75
75
  liveList.value.length = 0;
76
76
  await fetchLiveList({});
77
77
  isLoadingMore.value = false;
@@ -128,7 +128,7 @@ async function fetchMoreLives() {
128
128
  }
129
129
  try {
130
130
  isLoadingMore.value = true;
131
- await fetchLiveList({ cursor: currentCursor.value });
131
+ await fetchLiveList({ cursor: liveListCursor.value });
132
132
  } finally {
133
133
  isLoadingMore.value = false;
134
134
  }
@@ -55,13 +55,13 @@
55
55
  <script lang="ts" setup>
56
56
  import { ref, watch, computed, defineEmits, onMounted, onUnmounted } from 'vue';
57
57
  import { useUIKit, IconLiveCoverHeader, IconNoLiveRoom } from '@tencentcloud/uikit-base-component-vue3';
58
- import { useLiveState } from '../../states/LiveState';
58
+ import { useLiveListState } from '../../states/LiveListState';
59
59
  import { useLoginState } from '../../states/LoginState';
60
60
  import { Avatar } from '../Avatar';
61
61
  import type { LiveInfo } from '../../types';
62
62
  import PullToRefresh from './pullToRefresh.vue';
63
63
 
64
- const { liveList, currentCursor, fetchLiveList } = useLiveState();
64
+ const { liveList, liveListCursor, fetchLiveList } = useLiveListState();
65
65
  const { loginUserInfo } = useLoginState();
66
66
  const { t } = useUIKit();
67
67
  const showLiveList = ref<LiveInfo[]>([]);
@@ -70,7 +70,7 @@ const DEFAULT_COVER = 'https://liteav-test-1252463788.cos.ap-guangzhou.myqcloud.
70
70
  const scrollContainerRef = ref<HTMLElement | null>(null);
71
71
 
72
72
  const isLoadingMore = ref(false);
73
- const hasMoreLive = computed(() => currentCursor.value !== '');
73
+ const hasMoreLive = computed(() => liveListCursor.value !== '');
74
74
 
75
75
  const liveItemWidth = ref('168px');
76
76
  const liveItemHeight = ref('262px');
@@ -84,7 +84,7 @@ watch(
84
84
  async user => {
85
85
  if (user && user.userId) {
86
86
  isLoadingMore.value = true;
87
- currentCursor.value = '';
87
+ liveListCursor.value = '';
88
88
  liveList.value.length = 0;
89
89
  await fetchLiveList({});
90
90
  showLiveList.value = liveList.value.slice();
@@ -109,7 +109,7 @@ watch(scrollContainerRef, () => {
109
109
  async function handleRefresh(completeRefresh: (success?: boolean) => void) {
110
110
  try {
111
111
  isLoadingMore.value = true;
112
- currentCursor.value = '';
112
+ liveListCursor.value = '';
113
113
  liveList.value.length = 0;
114
114
  await fetchLiveList({});
115
115
  showLiveList.value = liveList.value.slice();
@@ -131,7 +131,7 @@ async function fetchMoreLives() {
131
131
  }
132
132
  try {
133
133
  isLoadingMore.value = true;
134
- await fetchLiveList({ cursor: currentCursor.value });
134
+ await fetchLiveList({ cursor: liveListCursor.value });
135
135
  showLiveList.value = liveList.value.slice();
136
136
  } finally {
137
137
  isLoadingMore.value = false;
@@ -45,12 +45,12 @@ import MaterialRenameDialog from './MaterialRenameDialog.vue';
45
45
  import MaterialItem from './MaterialItem.vue';
46
46
  import { useVideoMixerState } from '../../states/VideoMixerState';
47
47
  import { useDeviceState } from '../../states/DeviceState';
48
- import { useLiveState } from '../../states/LiveState';
48
+ import { useLiveListState } from '../../states/LiveListState';
49
49
  import { getNanoId } from '../../utils/utils';
50
50
  import { LiveOrientation, MediaSource } from '../../types';
51
51
  const { t } = useUIKit();
52
52
 
53
- const { currentLive } = useLiveState();
53
+ const { currentLive } = useLiveListState();
54
54
  const { mediaSourceList, publishVideoQuality, addMediaSource, updateMediaSource, clearMediaSource } = useVideoMixerState();
55
55
  const { getCameraList } = useDeviceState();
56
56