tuikit-atomicx-vue3 3.4.2 → 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 (297) 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 +11 -11
  42. package/dist/components/CoHostPanel/CoHostPanel.js +10 -10
  43. package/dist/components/CoHostPanel/ConfigSettingPanel.js +49 -55
  44. package/dist/components/CoHostPanel/ConnectionPanel.js +132 -123
  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/LiveView/CoreViewDecorate/BattleDecorate.js +58 -58
  61. package/dist/components/LiveView/CoreViewDecorate/BattleUserDecorate.js +6 -6
  62. package/dist/components/LiveView/CoreViewDecorate/CoHostDecorate.js +5 -5
  63. package/dist/components/LiveView/DefaultStreamViewUI.js +44 -41
  64. package/dist/components/LiveView/PlayerControl/AudioControl.js +20 -20
  65. package/dist/components/LiveView/PlayerControl/MultiResolution.js +49 -48
  66. package/dist/components/LiveView/PlayerControl/MultiResolution.vue.d.ts +7 -1
  67. package/dist/components/LiveView/PlayerControl/PlayerControl.js +90 -86
  68. package/dist/components/LiveView/PlayerControl/PlayerControlState.js +127 -131
  69. package/dist/components/LiveView/PlayerControl/utils/domHelpers.d.ts +6 -0
  70. package/dist/components/LiveView/PlayerControl/utils/domHelpers.js +54 -22
  71. package/dist/components/LiveView/i18n/en-US/index.d.ts +2 -2
  72. package/dist/components/LiveView/i18n/en-US/index.js +2 -2
  73. package/dist/components/LiveView/i18n/zh-CN/index.d.ts +2 -2
  74. package/dist/components/LiveView/i18n/zh-CN/index.js +2 -2
  75. package/dist/components/LiveView/index.js +17 -17
  76. package/dist/components/MessageInput/TextEditor/EditorCore.js +2 -2
  77. package/dist/components/MessageList/MessageList.vue.d.ts +2 -2
  78. package/dist/components/MessageList/index.d.ts +18 -18
  79. package/dist/components/MicButton/index.js +11 -11
  80. package/dist/components/StreamMixer/LocalMixer/MixerControl.js +12 -12
  81. package/dist/components/StreamMixer/LocalMixer/index.js +66 -63
  82. package/dist/components/StreamView/Layout/CustomLayout.js +8 -8
  83. package/dist/components/StreamView/Layout/FloatLayout.js +124 -127
  84. package/dist/components/StreamView/Layout/GridLayout.js +5 -5
  85. package/dist/components/StreamView/index.js +25 -33
  86. package/dist/components/StreamView/manager/mediaManager.js +54 -60
  87. package/dist/components/VideoSetting/CameraSelect.js +8 -8
  88. package/dist/components/VideoSetting/VideoMediaControl.js +10 -10
  89. package/dist/components/VideoSetting/VideoPreview.js +9 -9
  90. package/dist/components/VideoSetting/VideoProfile.js +6 -6
  91. package/dist/components/VideoSetting/VideoSettingTab.js +40 -39
  92. package/dist/components/VideoSettingPanel/CameraSelect.js +8 -8
  93. package/dist/components/VideoSettingPanel/VideoPreview.js +1 -1
  94. package/dist/components/VideoSettingPanel/VideoProfile.js +18 -18
  95. package/dist/hooks/useRoomEngine.js +6 -6
  96. package/dist/{index-D2OVtqc8.js → index-BfIEeWMg.js} +191 -181
  97. package/dist/{index-Bm-QfV5o.js → index-DTi1fL-x.js} +460 -457
  98. package/dist/index.js +162 -144
  99. package/dist/report/MetricsKey.d.ts +16 -0
  100. package/dist/report/MetricsKey.js +4 -0
  101. package/dist/report/dataReport.d.ts +12 -0
  102. package/dist/report/dataReport.js +45 -0
  103. package/dist/report/index.d.ts +4 -0
  104. package/dist/report/index.js +6 -0
  105. package/dist/rtc/index.d.ts +5 -43
  106. package/dist/rtc/index.js +48 -48
  107. package/dist/states/BarrageState/BarrageState.d.ts +74 -0
  108. package/dist/states/BarrageState/BarrageState.js +80 -0
  109. package/dist/states/BarrageState/index.d.ts +1 -0
  110. package/dist/states/BarrageState/index.js +5 -0
  111. package/dist/states/{BattleState.d.ts → BattleState/BattleState.d.ts} +10 -11
  112. package/dist/states/BattleState/BattleState.js +203 -0
  113. package/dist/states/BattleState/index.d.ts +1 -0
  114. package/dist/states/BattleState/index.js +4 -0
  115. package/dist/states/CoGuestState.d.ts +24 -94
  116. package/dist/states/CoGuestState.js +297 -189
  117. package/dist/states/CoHostState/CoHostState.d.ts +2 -2
  118. package/dist/states/CoHostState/CoHostState.js +135 -131
  119. package/dist/states/{DeviceState.d.ts → DeviceState/DeviceState.d.ts} +25 -13
  120. package/dist/states/DeviceState/DeviceState.js +314 -0
  121. package/dist/states/DeviceState/index.d.ts +1 -0
  122. package/dist/states/DeviceState/index.js +4 -0
  123. package/dist/states/LiveAudienceState.d.ts +3 -1
  124. package/dist/states/LiveAudienceState.js +106 -63
  125. package/dist/states/{LiveState/index.d.ts → LiveListState/LiveListState.d.ts} +13 -8
  126. package/dist/states/LiveListState/LiveListState.js +285 -0
  127. package/dist/states/LiveListState/index.d.ts +1 -0
  128. package/dist/states/LiveListState/index.js +4 -0
  129. package/dist/states/LiveMonitorState/api/http.js +147 -129
  130. package/dist/states/LiveMonitorState/index.js +67 -62
  131. package/dist/states/LiveSeatState/index.d.ts +46 -11
  132. package/dist/states/LiveSeatState/index.js +34 -15
  133. package/dist/states/LiveSeatState/seatEventManager.d.ts +2 -0
  134. package/dist/states/LiveSeatState/seatEventManager.js +63 -42
  135. package/dist/states/LiveSeatState/seatManager.d.ts +34 -5
  136. package/dist/states/LiveSeatState/seatManager.js +131 -29
  137. package/dist/states/LiveSeatState/store.d.ts +5 -5
  138. package/dist/states/LiveSeatState/store.js +12 -10
  139. package/dist/states/LiveSeatState/usePlayStream/RTCStreamManager.js +1 -1
  140. package/dist/states/LiveSeatState/usePlayStream/RTCStreamPlayer.js +1 -1
  141. package/dist/states/LiveSeatState/usePlayStream/index.js +30 -28
  142. package/dist/states/LoginState.js +39 -34
  143. package/dist/states/SeatStore.js +82 -83
  144. package/dist/states/{VideoMixerState.d.ts → VideoMixerState/VideoMixerState.d.ts} +1 -1
  145. package/dist/states/VideoMixerState/VideoMixerState.js +269 -0
  146. package/dist/states/VideoMixerState/index.d.ts +1 -0
  147. package/dist/states/VideoMixerState/index.js +4 -0
  148. package/dist/styles/index.css +1 -1
  149. package/dist/types/audience.d.ts +21 -0
  150. package/dist/types/audience.js +4 -1
  151. package/dist/types/battle.d.ts +75 -3
  152. package/dist/types/battle.js +5 -1
  153. package/dist/types/coGuest.d.ts +72 -5
  154. package/dist/types/coGuest.js +4 -2
  155. package/dist/types/device.d.ts +38 -17
  156. package/dist/types/device.js +10 -8
  157. package/dist/types/index.d.ts +2 -2
  158. package/dist/types/index.js +96 -80
  159. package/dist/types/live.d.ts +36 -21
  160. package/dist/types/live.js +6 -4
  161. package/dist/types/seat.d.ts +23 -4
  162. package/dist/types/seat.js +7 -1
  163. package/dist/utils/eventCenter.d.ts +88 -0
  164. package/dist/utils/eventCenter.js +161 -0
  165. package/package.json +2 -2
  166. package/src/components/AudioSetting/AudioMediaControl.vue +1 -3
  167. package/src/components/AudioSetting/AudioSettingTab.vue +1 -2
  168. package/src/components/AudioSetting/MicrophoneSelect.vue +1 -2
  169. package/src/components/AudioSetting/SpeakerSelect.vue +1 -2
  170. package/src/components/AudioSettingPanel/i18n/en-US/index.ts +1 -0
  171. package/src/components/AudioSettingPanel/i18n/zh-CN/index.ts +1 -0
  172. package/src/components/AudioSettingPanel/index.vue +4 -2
  173. package/src/components/BarrageInput/BarrageInputH5.vue +1 -1
  174. package/src/components/BarrageInput/EmojiPicker/EmojiPicker.vue +1 -1
  175. package/src/components/BarrageInput/MessageInputState.ts +160 -0
  176. package/src/components/BarrageInput/TextEditor/TextEditor.vue +1 -1
  177. package/src/components/BarrageInput/type.ts +26 -0
  178. package/src/components/BarrageInput/utils.ts +45 -0
  179. package/src/components/BarrageList/BarrageList.vue +61 -117
  180. package/src/components/BarrageList/BarrageListH5.vue +75 -159
  181. package/src/components/BarrageList/BarrageListState.ts +223 -0
  182. package/src/components/BarrageList/Message/MessageLayout/MessageBubble/MessageBubble.vue +8 -55
  183. package/src/components/BarrageList/Message/MessageLayout/MessageLayout.vue +19 -44
  184. package/src/components/BarrageList/Message/TextMessage/TextMessage.vue +69 -96
  185. package/src/components/BarrageList/Message/TextMessage/emoji.ts +132 -0
  186. package/src/components/CameraButton/index.vue +0 -1
  187. package/src/components/CoGuestPanel/CoGuestPanel.vue +16 -91
  188. package/src/components/CoHostPanel/BattlePanel.vue +1 -4
  189. package/src/components/CoHostPanel/ConfigSettingPanel.vue +2 -8
  190. package/src/components/CoHostPanel/ConnectionPanel.vue +37 -33
  191. package/src/components/CoHostPanel/RecommendHostList.vue +12 -13
  192. package/src/components/CoHostPanel/constants.ts +3 -0
  193. package/src/components/CoHostPanel/i18n/en-US/index.ts +1 -0
  194. package/src/components/CoHostPanel/i18n/zh-CN/index.ts +2 -1
  195. package/src/components/LiveAudienceList/LiveAudienceList.vue +4 -5
  196. package/src/components/LiveAudienceList/LiveAudienceListH5.vue +2 -2
  197. package/src/components/LiveAudienceList/UserActionMenu.vue +7 -48
  198. package/src/components/LiveList/LiveList.vue +5 -5
  199. package/src/components/LiveList/LiveListH5.vue +6 -6
  200. package/src/components/LiveScenePanel/index.vue +2 -2
  201. package/src/components/LiveView/CoreViewDecorate/BattleDecorate.vue +10 -15
  202. package/src/components/LiveView/CoreViewDecorate/BattleUserDecorate.vue +2 -2
  203. package/src/components/LiveView/DefaultStreamViewUI.vue +5 -3
  204. package/src/components/LiveView/PlayerControl/AudioControl.vue +1 -1
  205. package/src/components/LiveView/PlayerControl/MultiResolution.vue +9 -3
  206. package/src/components/LiveView/PlayerControl/PlayerControl.vue +10 -2
  207. package/src/components/LiveView/PlayerControl/PlayerControlState.ts +233 -259
  208. package/src/components/LiveView/PlayerControl/utils/domHelpers.ts +64 -0
  209. package/src/components/LiveView/i18n/en-US/index.ts +2 -2
  210. package/src/components/LiveView/i18n/zh-CN/index.ts +2 -2
  211. package/src/components/LiveView/index.vue +2 -2
  212. package/src/components/MicButton/index.vue +3 -3
  213. package/src/components/StreamMixer/LocalMixer/index.vue +6 -8
  214. package/src/components/StreamView/Layout/CustomLayout.vue +2 -2
  215. package/src/components/StreamView/Layout/FloatLayout.vue +88 -83
  216. package/src/components/StreamView/index.vue +28 -14
  217. package/src/components/StreamView/manager/mediaManager.ts +38 -42
  218. package/src/components/VideoSetting/CameraSelect.vue +1 -2
  219. package/src/components/VideoSetting/VideoMediaControl.vue +1 -1
  220. package/src/components/VideoSetting/VideoPreview.vue +1 -2
  221. package/src/components/VideoSetting/VideoProfile.vue +1 -1
  222. package/src/components/VideoSetting/VideoSettingTab.vue +9 -5
  223. package/src/components/VideoSettingPanel/CameraSelect.vue +1 -2
  224. package/src/components/VideoSettingPanel/VideoProfile.vue +7 -7
  225. package/src/hooks/useRoomEngine.ts +1 -1
  226. package/src/report/MetricsKey.ts +16 -0
  227. package/src/report/dataReport.ts +55 -0
  228. package/src/report/index.ts +7 -0
  229. package/src/rtc/index.ts +7 -9
  230. package/src/types/audience.ts +27 -1
  231. package/src/types/battle.ts +87 -4
  232. package/src/types/coGuest.ts +87 -5
  233. package/src/types/device.ts +41 -16
  234. package/src/types/index.ts +2 -2
  235. package/src/types/live.ts +41 -22
  236. package/src/types/seat.ts +28 -4
  237. package/src/utils/eventCenter.ts +249 -0
  238. package/dist/DialogPortal-CvJcEAsn.js +0 -417
  239. package/dist/components/BarrageList/Message/FaceMessage/FaceMessage.js +0 -23
  240. package/dist/components/BarrageList/Message/FaceMessage/FaceMessage.vue.d.ts +0 -30
  241. package/dist/components/BarrageList/Message/FaceMessage/index.d.ts +0 -3
  242. package/dist/components/BarrageList/Message/FaceMessage/index.js +0 -4
  243. package/dist/components/BarrageList/Message/GroupTipMessage/GroupTipMessage.js +0 -4
  244. package/dist/components/BarrageList/Message/GroupTipMessage/GroupTipMessage.vue.d.ts +0 -16
  245. package/dist/components/BarrageList/Message/GroupTipMessage/index.d.ts +0 -3
  246. package/dist/components/BarrageList/Message/GroupTipMessage/index.js +0 -25
  247. package/dist/components/BarrageList/Message/ImageMessage/ImageMessage.js +0 -71
  248. package/dist/components/BarrageList/Message/ImageMessage/ImageMessage.vue.d.ts +0 -34
  249. package/dist/components/BarrageList/Message/ImageMessage/index.d.ts +0 -3
  250. package/dist/components/BarrageList/Message/ImageMessage/index.js +0 -4
  251. package/dist/components/BarrageList/Message/MergerMessage/MergerMessage.js +0 -9
  252. package/dist/components/BarrageList/Message/MergerMessage/MergerMessage.vue.d.ts +0 -2
  253. package/dist/components/BarrageList/Message/MergerMessage/index.d.ts +0 -3
  254. package/dist/components/BarrageList/Message/MergerMessage/index.js +0 -4
  255. package/dist/components/BarrageList/Message/MessageLayout/MessageMeta/MessageMeta.js +0 -40
  256. package/dist/components/BarrageList/Message/MessageLayout/MessageMeta/MessageMeta.vue.d.ts +0 -54
  257. package/dist/components/BarrageList/Message/MessageLayout/MessageMeta/MessageStatusIcon.js +0 -26
  258. package/dist/components/BarrageList/Message/MessageLayout/MessageMeta/MessageStatusIcon.vue.d.ts +0 -15
  259. package/dist/components/BarrageList/Message/MessageLayout/MessageMeta/index.d.ts +0 -3
  260. package/dist/components/BarrageList/Message/MessageLayout/MessageMeta/index.js +0 -4
  261. package/dist/components/BarrageList/Message/RecalledMessage/RecalledMessage.js +0 -41
  262. package/dist/components/BarrageList/Message/RecalledMessage/RecalledMessage.vue.d.ts +0 -35
  263. package/dist/components/BarrageList/Message/RecalledMessage/index.d.ts +0 -3
  264. package/dist/components/BarrageList/Message/RecalledMessage/index.js +0 -4
  265. package/dist/components/BarrageList/MessageForward/ForwardListItem.js +0 -45
  266. package/dist/components/BarrageList/MessageForward/ForwardListItem.vue.d.ts +0 -17
  267. package/dist/components/BarrageList/MessageForward/MessageForward.js +0 -203
  268. package/dist/components/BarrageList/MessageForward/MessageForward.vue.d.ts +0 -2
  269. package/dist/components/BarrageList/MessageForward/index.d.ts +0 -3
  270. package/dist/components/BarrageList/MessageForward/index.js +0 -4
  271. package/dist/components/StreamView/Layout/MixLayout.js +0 -89
  272. package/dist/components/StreamView/Layout/MixLayout.vue.d.ts +0 -31
  273. package/dist/states/BarrageListState/BarrageListState.d.ts +0 -26
  274. package/dist/states/BarrageListState/BarrageListState.js +0 -122
  275. package/dist/states/BarrageListState/index.d.ts +0 -1
  276. package/dist/states/BarrageListState/index.js +0 -4
  277. package/dist/states/BattleState.js +0 -117
  278. package/dist/states/DeviceState.js +0 -296
  279. package/dist/states/LiveState/index.js +0 -254
  280. package/dist/states/VideoMixerState.js +0 -260
  281. package/src/components/BarrageList/Message/FaceMessage/FaceMessage.vue +0 -43
  282. package/src/components/BarrageList/Message/FaceMessage/index.ts +0 -3
  283. package/src/components/BarrageList/Message/GroupTipMessage/GroupTipMessage.vue +0 -55
  284. package/src/components/BarrageList/Message/GroupTipMessage/index.ts +0 -3
  285. package/src/components/BarrageList/Message/ImageMessage/ImageMessage.vue +0 -181
  286. package/src/components/BarrageList/Message/ImageMessage/index.ts +0 -3
  287. package/src/components/BarrageList/Message/MergerMessage/MergerMessage.vue +0 -6
  288. package/src/components/BarrageList/Message/MergerMessage/index.ts +0 -3
  289. package/src/components/BarrageList/Message/MessageLayout/MessageMeta/MessageMeta.vue +0 -70
  290. package/src/components/BarrageList/Message/MessageLayout/MessageMeta/MessageStatusIcon.vue +0 -40
  291. package/src/components/BarrageList/Message/MessageLayout/MessageMeta/index.ts +0 -3
  292. package/src/components/BarrageList/Message/RecalledMessage/RecalledMessage.vue +0 -82
  293. package/src/components/BarrageList/Message/RecalledMessage/index.ts +0 -3
  294. package/src/components/BarrageList/MessageForward/ForwardListItem.vue +0 -67
  295. package/src/components/BarrageList/MessageForward/MessageForward.vue +0 -388
  296. package/src/components/BarrageList/MessageForward/index.ts +0 -3
  297. package/src/components/StreamView/Layout/MixLayout.vue +0 -144
@@ -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,
@@ -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 = '';
@@ -260,31 +265,31 @@ const handleCoHostRequestTimeout = ({ inviter, invitee }: { inviter: SeatUserInf
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
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
 
@@ -11,7 +11,7 @@
11
11
  <div :class="['battle-time-container', { 'more-top': showPkBar }]">
12
12
  <div class="battle-time-background"></div>
13
13
  <div class="battle-time-content">
14
- <span class="battle-status">{{ t('In battle') }}</span>
14
+ <IconTime size="16" />
15
15
  <span class="battle-time">{{ time }}</span>
16
16
  </div>
17
17
  </div>
@@ -28,13 +28,12 @@
28
28
  </template>
29
29
 
30
30
  <script setup lang="ts">
31
- import { IconPK, useUIKit } from '@tencentcloud/uikit-base-component-vue3';
32
- import { TUILiveBattleManagerEvents, TUIBattleStoppedReason } from '@tencentcloud/tuiroom-engine-js';
33
- import { ref, computed, watch, Ref, onMounted, onUnmounted, nextTick } from 'vue';
34
- import { CoHostLayoutTemplate } from '../../../types';
31
+ import { IconPK, IconTime, useUIKit } from '@tencentcloud/uikit-base-component-vue3';
32
+ import { ref, computed, watch, Ref, onMounted, onUnmounted } from 'vue';
33
+ import { BattleEndedReason, BattleEvent, BattleInfo, CoHostLayoutTemplate } from '../../../types';
35
34
  import { useBattleState } from '../../../states/BattleState';
36
35
  import { useLiveSeatState } from '../../../states/LiveSeatState';
37
- import { useLiveState } from '../../../states/LiveState';
36
+ import { useLiveListState } from '../../../states/LiveListState';
38
37
  import { convertSecondsToHMS } from '../../../utils/utils';
39
38
  import defeatResult from '../assets/img/defeat.png';
40
39
  import victoryResult from '../assets/img/victory.png';
@@ -44,7 +43,7 @@ import blueBkgSvg from '../assets/svg/blueBkg.svg';
44
43
  import vSvg from '../assets/svg/v.svg';
45
44
  import sSvg from '../assets/svg/s.svg';
46
45
 
47
- const { currentLive } = useLiveState();
46
+ const { currentLive } = useLiveListState();
48
47
  const { currentBattleInfo, battleUsers, battleScore, subscribeEvent, unsubscribeEvent} = useBattleState();
49
48
  const { seatList } = useLiveSeatState();
50
49
  const { t } = useUIKit();
@@ -133,7 +132,7 @@ function convertToTwoDigits(value: number) {
133
132
  const time = computed(() => {
134
133
  const { minutes, seconds } = convertSecondsToHMS(leftBattleTime.value);
135
134
  if (minutes <= 0 && seconds <= 0) {
136
- return '00:00';
135
+ return t('Battle ended');
137
136
  }
138
137
  return `${convertToTwoDigits(minutes)}:${convertToTwoDigits(seconds)}`;
139
138
  });
@@ -141,7 +140,7 @@ const time = computed(() => {
141
140
  const showBattleResult = ref(false);
142
141
  const battleResultImg = ref(drawResult);
143
142
 
144
- function handleBattleEnded(eventInfo: { battleId: string; reason: TUIBattleStoppedReason }) {
143
+ function handleBattleEnded(eventInfo: { battleInfo: BattleInfo; reason: BattleEndedReason }) {
145
144
  stopTimer();
146
145
  showBattleResult.value = true;
147
146
  const maxScore = Math.max(...[...battleScore.value.values()]);
@@ -163,11 +162,11 @@ function handleBattleEnded(eventInfo: { battleId: string; reason: TUIBattleStopp
163
162
  }
164
163
 
165
164
  onMounted(() => {
166
- subscribeEvent(TUILiveBattleManagerEvents.onBattleEnded, handleBattleEnded);
165
+ subscribeEvent(BattleEvent.onBattleEnded, handleBattleEnded);
167
166
  });
168
167
 
169
168
  onUnmounted(() => {
170
- unsubscribeEvent(TUILiveBattleManagerEvents.onBattleEnded, handleBattleEnded);
169
+ unsubscribeEvent(BattleEvent.onBattleEnded, handleBattleEnded);
171
170
  });
172
171
  </script>
173
172
 
@@ -252,10 +251,6 @@ onUnmounted(() => {
252
251
  line-height: 20px;
253
252
  gap: 4px;
254
253
  transform: translateY(-2px);
255
-
256
- .battle-time {
257
- width: 30px;
258
- }
259
254
  }
260
255
  }
261
256
 
@@ -25,7 +25,7 @@
25
25
  <script setup lang="ts">
26
26
  import { SeatUserInfo, CoHostLayoutTemplate } from '../../../types';
27
27
  import { useBattleState } from '../../../states/BattleState';
28
- import { useLiveState } from '../../../states/LiveState';
28
+ import { useLiveListState } from '../../../states/LiveListState';
29
29
  import { useCoHostState } from '../../../states/CoHostState';
30
30
  import { ref, computed, watch } from 'vue';
31
31
  import BattleTopBadge from '../assets/svg/BattleTopBadge.svg';
@@ -44,7 +44,7 @@ const props = defineProps<{
44
44
  }}>;
45
45
  }>();
46
46
 
47
- const { currentLive } = useLiveState();
47
+ const { currentLive } = useLiveListState();
48
48
  const { connected } = useCoHostState();
49
49
  const { currentBattleInfo, battleScore } = useBattleState();
50
50