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.
- package/.eslintrc.cjs +1 -0
- package/dist/baseComp/Modal/Modal.js +431 -23
- package/dist/chat/index.d.ts +18 -18
- package/dist/components/AudioSetting/AudioMediaControl.js +39 -41
- package/dist/components/AudioSetting/AudioSettingTab.js +10 -10
- package/dist/components/AudioSetting/MicrophoneSelect.js +8 -8
- package/dist/components/AudioSetting/SpeakerSelect.js +9 -9
- package/dist/components/AudioSettingPanel/i18n/en-US/index.d.ts +1 -0
- package/dist/components/AudioSettingPanel/i18n/en-US/index.js +2 -1
- package/dist/components/AudioSettingPanel/i18n/zh-CN/index.d.ts +1 -0
- package/dist/components/AudioSettingPanel/i18n/zh-CN/index.js +2 -1
- package/dist/components/AudioSettingPanel/index.js +81 -73
- package/dist/components/BarrageInput/BarrageInputH5.js +9 -9
- package/dist/components/BarrageInput/EmojiPicker/EmojiPicker.js +3 -3
- package/dist/components/BarrageInput/MessageInputState.d.ts +28 -0
- package/dist/components/BarrageInput/MessageInputState.js +82 -0
- package/dist/components/BarrageInput/TextEditor/CharacterCountExtension.js +1 -1
- package/dist/components/BarrageInput/TextEditor/EditorCore.js +2 -2
- package/dist/components/BarrageInput/TextEditor/index.js +7 -7
- package/dist/components/BarrageInput/type.d.ts +17 -0
- package/dist/components/BarrageInput/type.js +4 -0
- package/dist/components/BarrageInput/utils.d.ts +30 -0
- package/dist/components/BarrageInput/utils.js +41 -0
- package/dist/components/BarrageList/BarrageList.js +80 -110
- package/dist/components/BarrageList/BarrageList.vue.d.ts +0 -29
- package/dist/components/BarrageList/BarrageListH5.js +95 -122
- package/dist/components/BarrageList/BarrageListH5.vue.d.ts +0 -29
- package/dist/components/BarrageList/BarrageListState.d.ts +58 -0
- package/dist/components/BarrageList/BarrageListState.js +106 -0
- package/dist/components/BarrageList/Message/MessageLayout/MessageBubble/MessageBubble.js +16 -24
- package/dist/components/BarrageList/Message/MessageLayout/MessageBubble/MessageBubble.vue.d.ts +5 -5
- package/dist/components/BarrageList/Message/MessageLayout/MessageLayout.js +48 -73
- package/dist/components/BarrageList/Message/MessageLayout/MessageLayout.vue.d.ts +5 -7
- package/dist/components/BarrageList/Message/TextMessage/TextMessage.js +70 -76
- package/dist/components/BarrageList/Message/TextMessage/TextMessage.vue.d.ts +6 -6
- package/dist/components/BarrageList/Message/TextMessage/emoji.d.ts +5 -0
- package/dist/components/BarrageList/Message/TextMessage/emoji.js +134 -0
- package/dist/components/BarrageList/index.d.ts +0 -36
- package/dist/components/CameraButton/index.js +18 -19
- package/dist/components/CoGuestPanel/CoGuestPanel.js +60 -60
- package/dist/components/CoHostPanel/BattlePanel.js +25 -25
- package/dist/components/CoHostPanel/CoHostPanel.js +60 -55
- package/dist/components/CoHostPanel/ConfigSettingPanel.js +49 -55
- package/dist/components/CoHostPanel/ConnectionPanel.js +129 -120
- package/dist/components/CoHostPanel/RecommendHostList.js +39 -36
- package/dist/components/CoHostPanel/constants.d.ts +3 -0
- package/dist/components/CoHostPanel/constants.js +6 -0
- package/dist/components/CoHostPanel/i18n/en-US/index.d.ts +1 -0
- package/dist/components/CoHostPanel/i18n/en-US/index.js +2 -1
- package/dist/components/CoHostPanel/i18n/zh-CN/index.d.ts +1 -0
- package/dist/components/CoHostPanel/i18n/zh-CN/index.js +3 -2
- package/dist/components/LiveAudienceList/LiveAudienceList.js +44 -45
- package/dist/components/LiveAudienceList/LiveAudienceListH5.js +7 -7
- package/dist/components/LiveAudienceList/UserActionMenu.js +57 -64
- package/dist/components/LiveList/LiveList.js +23 -23
- package/dist/components/LiveList/LiveListH5.js +38 -38
- package/dist/components/LiveScenePanel/CameraSettingDialog.js +10 -10
- package/dist/components/LiveScenePanel/MaterialItem.js +15 -15
- package/dist/components/LiveScenePanel/index.js +4 -4
- package/dist/components/{LiveCoreView → LiveView}/CoreViewDecorate/BattleDecorate.js +58 -58
- package/dist/components/{LiveCoreView → LiveView}/CoreViewDecorate/BattleUserDecorate.js +56 -49
- package/dist/components/{LiveCoreView → LiveView}/CoreViewDecorate/CoHostDecorate.js +6 -6
- package/dist/components/{LiveCoreView → LiveView}/CoreViewDecorate/LiveCoreDecorate.js +1 -1
- package/dist/components/{LiveCoreView → LiveView}/DefaultStreamViewUI.js +46 -43
- package/dist/components/{LiveCoreView → LiveView}/PlayerControl/AudioControl.js +23 -23
- package/dist/components/LiveView/PlayerControl/MultiResolution.js +79 -0
- package/dist/components/LiveView/PlayerControl/MultiResolution.vue.d.ts +8 -0
- package/dist/components/LiveView/PlayerControl/PlayerControl.js +172 -0
- package/dist/components/LiveView/PlayerControl/PlayerControlState.js +263 -0
- package/dist/components/{LiveCoreView → LiveView}/PlayerControl/utils/domHelpers.d.ts +6 -0
- package/dist/components/LiveView/PlayerControl/utils/domHelpers.js +131 -0
- package/dist/components/{LiveCoreView/i18n/zh-CN → LiveView/i18n/en-US}/index.d.ts +3 -2
- package/dist/components/{LiveCoreView → LiveView}/i18n/en-US/index.js +4 -3
- package/dist/components/{LiveCoreView/i18n/en-US → LiveView/i18n/zh-CN}/index.d.ts +3 -2
- package/dist/components/{LiveCoreView → LiveView}/i18n/zh-CN/index.js +4 -3
- package/dist/components/LiveView/index.d.ts +79 -0
- package/dist/components/{LiveCoreView → LiveView}/index.js +44 -42
- package/dist/components/MessageInput/TextEditor/EditorCore.js +2 -2
- package/dist/components/MessageList/MessageList.vue.d.ts +2 -2
- package/dist/components/MessageList/index.d.ts +18 -18
- package/dist/components/MicButton/index.js +11 -11
- package/dist/components/StreamMixer/LocalMixer/MixerControl.js +12 -12
- package/dist/components/StreamMixer/LocalMixer/index.js +66 -63
- package/dist/components/StreamMixer/index.js +6 -6
- package/dist/components/StreamView/Layout/CustomLayout.js +8 -8
- package/dist/components/StreamView/Layout/FloatLayout.js +124 -127
- package/dist/components/StreamView/Layout/GridLayout.js +5 -5
- package/dist/components/StreamView/index.js +25 -33
- package/dist/components/StreamView/manager/mediaManager.js +54 -60
- package/dist/components/VideoSetting/CameraSelect.js +8 -8
- package/dist/components/VideoSetting/VideoMediaControl.js +10 -10
- package/dist/components/VideoSetting/VideoPreview.js +9 -9
- package/dist/components/VideoSetting/VideoProfile.js +6 -6
- package/dist/components/VideoSetting/VideoSettingTab.js +40 -39
- package/dist/components/VideoSettingPanel/CameraSelect.js +8 -8
- package/dist/components/VideoSettingPanel/VideoPreview.js +1 -1
- package/dist/components/VideoSettingPanel/VideoProfile.js +18 -18
- package/dist/hooks/useRoomEngine.js +6 -6
- package/dist/{index-D88ja_7_.js → index-BfIEeWMg.js} +1767 -1757
- package/dist/{index-D-KJvDvy.js → index-DTi1fL-x.js} +460 -457
- package/dist/index.js +177 -157
- package/dist/report/MetricsKey.d.ts +16 -0
- package/dist/report/MetricsKey.js +4 -0
- package/dist/report/dataReport.d.ts +12 -0
- package/dist/report/dataReport.js +45 -0
- package/dist/report/index.d.ts +4 -0
- package/dist/report/index.js +6 -0
- package/dist/rtc/index.d.ts +6 -81
- package/dist/rtc/index.js +53 -52
- package/dist/states/BarrageState/BarrageState.d.ts +74 -0
- package/dist/states/BarrageState/BarrageState.js +80 -0
- package/dist/states/BarrageState/index.d.ts +1 -0
- package/dist/states/BarrageState/index.js +5 -0
- package/dist/states/{BattleState.d.ts → BattleState/BattleState.d.ts} +10 -11
- package/dist/states/BattleState/BattleState.js +203 -0
- package/dist/states/BattleState/index.d.ts +1 -0
- package/dist/states/BattleState/index.js +4 -0
- package/dist/states/CoGuestState.d.ts +24 -94
- package/dist/states/CoGuestState.js +297 -189
- package/dist/states/CoHostState/CoHostState.d.ts +2 -2
- package/dist/states/CoHostState/CoHostState.js +135 -131
- package/dist/states/{DeviceState.d.ts → DeviceState/DeviceState.d.ts} +25 -13
- package/dist/states/DeviceState/DeviceState.js +314 -0
- package/dist/states/DeviceState/index.d.ts +1 -0
- package/dist/states/DeviceState/index.js +4 -0
- package/dist/states/LiveAudienceState.d.ts +3 -1
- package/dist/states/LiveAudienceState.js +106 -63
- package/dist/states/{LiveState/index.d.ts → LiveListState/LiveListState.d.ts} +13 -8
- package/dist/states/LiveListState/LiveListState.js +285 -0
- package/dist/states/LiveListState/index.d.ts +1 -0
- package/dist/states/LiveListState/index.js +4 -0
- package/dist/states/LiveMonitorState/api/http.js +147 -129
- package/dist/states/LiveMonitorState/index.js +67 -62
- package/dist/states/LiveSeatState/index.d.ts +46 -11
- package/dist/states/LiveSeatState/index.js +34 -15
- package/dist/states/LiveSeatState/seatEventManager.d.ts +2 -0
- package/dist/states/LiveSeatState/seatEventManager.js +63 -42
- package/dist/states/LiveSeatState/seatManager.d.ts +34 -5
- package/dist/states/LiveSeatState/seatManager.js +131 -29
- package/dist/states/LiveSeatState/store.d.ts +5 -5
- package/dist/states/LiveSeatState/store.js +12 -10
- package/dist/states/LiveSeatState/usePlayStream/RTCStreamManager.js +1 -1
- package/dist/states/LiveSeatState/usePlayStream/RTCStreamPlayer.js +1 -1
- package/dist/states/LiveSeatState/usePlayStream/index.js +30 -28
- package/dist/states/LoginState.js +39 -34
- package/dist/states/SeatStore.js +82 -83
- package/dist/states/{VideoMixerState.d.ts → VideoMixerState/VideoMixerState.d.ts} +1 -1
- package/dist/states/VideoMixerState/VideoMixerState.js +269 -0
- package/dist/states/VideoMixerState/index.d.ts +1 -0
- package/dist/states/VideoMixerState/index.js +4 -0
- package/dist/styles/index.css +1 -1
- package/dist/types/audience.d.ts +21 -0
- package/dist/types/audience.js +4 -1
- package/dist/types/battle.d.ts +75 -3
- package/dist/types/battle.js +5 -1
- package/dist/types/coGuest.d.ts +72 -5
- package/dist/types/coGuest.js +4 -2
- package/dist/types/device.d.ts +38 -17
- package/dist/types/device.js +10 -8
- package/dist/types/index.d.ts +2 -2
- package/dist/types/index.js +96 -80
- package/dist/types/live.d.ts +36 -21
- package/dist/types/live.js +6 -4
- package/dist/types/seat.d.ts +23 -4
- package/dist/types/seat.js +7 -1
- package/dist/utils/eventCenter.d.ts +88 -0
- package/dist/utils/eventCenter.js +161 -0
- package/package.json +2 -2
- package/src/components/AudioSetting/AudioMediaControl.vue +1 -3
- package/src/components/AudioSetting/AudioSettingTab.vue +1 -2
- package/src/components/AudioSetting/MicrophoneSelect.vue +1 -2
- package/src/components/AudioSetting/SpeakerSelect.vue +1 -2
- package/src/components/AudioSettingPanel/i18n/en-US/index.ts +1 -0
- package/src/components/AudioSettingPanel/i18n/zh-CN/index.ts +1 -0
- package/src/components/AudioSettingPanel/index.vue +4 -2
- package/src/components/BarrageInput/BarrageInputH5.vue +1 -1
- package/src/components/BarrageInput/EmojiPicker/EmojiPicker.vue +1 -1
- package/src/components/BarrageInput/MessageInputState.ts +160 -0
- package/src/components/BarrageInput/TextEditor/TextEditor.vue +1 -1
- package/src/components/BarrageInput/type.ts +26 -0
- package/src/components/BarrageInput/utils.ts +45 -0
- package/src/components/BarrageList/BarrageList.vue +61 -117
- package/src/components/BarrageList/BarrageListH5.vue +75 -159
- package/src/components/BarrageList/BarrageListState.ts +223 -0
- package/src/components/BarrageList/Message/MessageLayout/MessageBubble/MessageBubble.vue +8 -55
- package/src/components/BarrageList/Message/MessageLayout/MessageLayout.vue +19 -44
- package/src/components/BarrageList/Message/TextMessage/TextMessage.vue +69 -96
- package/src/components/BarrageList/Message/TextMessage/emoji.ts +132 -0
- package/src/components/CameraButton/index.vue +0 -1
- package/src/components/CoGuestPanel/CoGuestPanel.vue +16 -91
- package/src/components/CoHostPanel/BattlePanel.vue +4 -7
- package/src/components/CoHostPanel/CoHostPanel.vue +11 -3
- package/src/components/CoHostPanel/ConfigSettingPanel.vue +2 -8
- package/src/components/CoHostPanel/ConnectionPanel.vue +41 -37
- package/src/components/CoHostPanel/RecommendHostList.vue +12 -13
- package/src/components/CoHostPanel/constants.ts +3 -0
- package/src/components/CoHostPanel/i18n/en-US/index.ts +1 -0
- package/src/components/CoHostPanel/i18n/zh-CN/index.ts +2 -1
- package/src/components/LiveAudienceList/LiveAudienceList.vue +4 -5
- package/src/components/LiveAudienceList/LiveAudienceListH5.vue +2 -2
- package/src/components/LiveAudienceList/UserActionMenu.vue +7 -48
- package/src/components/LiveList/LiveList.vue +5 -5
- package/src/components/LiveList/LiveListH5.vue +6 -6
- package/src/components/LiveScenePanel/index.vue +2 -2
- package/src/components/{LiveCoreView → LiveView}/CoreViewDecorate/BattleDecorate.vue +10 -15
- package/src/components/{LiveCoreView → LiveView}/CoreViewDecorate/BattleUserDecorate.vue +30 -31
- package/src/components/{LiveCoreView → LiveView}/DefaultStreamViewUI.vue +5 -3
- package/src/components/{LiveCoreView → LiveView}/PlayerControl/AudioControl.vue +1 -1
- package/src/components/{LiveCoreView → LiveView}/PlayerControl/MultiResolution.vue +9 -3
- package/src/components/{LiveCoreView → LiveView}/PlayerControl/PlayerControl.vue +10 -2
- package/src/components/{LiveCoreView → LiveView}/PlayerControl/PlayerControlState.ts +233 -259
- package/src/components/{LiveCoreView → LiveView}/PlayerControl/utils/domHelpers.ts +64 -0
- package/src/components/{LiveCoreView → LiveView}/i18n/en-US/index.ts +3 -2
- package/src/components/{LiveCoreView → LiveView}/i18n/zh-CN/index.ts +3 -2
- package/src/components/{LiveCoreView → LiveView}/index.ts +5 -2
- package/src/components/{LiveCoreView → LiveView}/index.vue +3 -3
- package/src/components/MicButton/index.vue +3 -3
- package/src/components/StreamMixer/LocalMixer/index.vue +6 -8
- package/src/components/StreamMixer/index.vue +1 -1
- package/src/components/StreamView/Layout/CustomLayout.vue +2 -2
- package/src/components/StreamView/Layout/FloatLayout.vue +88 -83
- package/src/components/StreamView/index.vue +28 -14
- package/src/components/StreamView/manager/mediaManager.ts +38 -42
- package/src/components/VideoSetting/CameraSelect.vue +1 -2
- package/src/components/VideoSetting/VideoMediaControl.vue +1 -1
- package/src/components/VideoSetting/VideoPreview.vue +1 -2
- package/src/components/VideoSetting/VideoProfile.vue +1 -1
- package/src/components/VideoSetting/VideoSettingTab.vue +9 -5
- package/src/components/VideoSettingPanel/CameraSelect.vue +1 -2
- package/src/components/VideoSettingPanel/VideoProfile.vue +7 -7
- package/src/hooks/useRoomEngine.ts +1 -1
- package/src/report/MetricsKey.ts +16 -0
- package/src/report/dataReport.ts +55 -0
- package/src/report/index.ts +7 -0
- package/src/rtc/index.ts +8 -10
- package/src/types/audience.ts +27 -1
- package/src/types/battle.ts +87 -4
- package/src/types/coGuest.ts +87 -5
- package/src/types/device.ts +41 -16
- package/src/types/index.ts +2 -2
- package/src/types/live.ts +41 -22
- package/src/types/seat.ts +28 -4
- package/src/utils/eventCenter.ts +249 -0
- package/dist/DialogPortal-CvJcEAsn.js +0 -417
- package/dist/components/BarrageList/Message/FaceMessage/FaceMessage.js +0 -23
- package/dist/components/BarrageList/Message/FaceMessage/FaceMessage.vue.d.ts +0 -30
- package/dist/components/BarrageList/Message/FaceMessage/index.d.ts +0 -3
- package/dist/components/BarrageList/Message/FaceMessage/index.js +0 -4
- package/dist/components/BarrageList/Message/GroupTipMessage/GroupTipMessage.js +0 -4
- package/dist/components/BarrageList/Message/GroupTipMessage/GroupTipMessage.vue.d.ts +0 -16
- package/dist/components/BarrageList/Message/GroupTipMessage/index.d.ts +0 -3
- package/dist/components/BarrageList/Message/GroupTipMessage/index.js +0 -25
- package/dist/components/BarrageList/Message/ImageMessage/ImageMessage.js +0 -71
- package/dist/components/BarrageList/Message/ImageMessage/ImageMessage.vue.d.ts +0 -34
- package/dist/components/BarrageList/Message/ImageMessage/index.d.ts +0 -3
- package/dist/components/BarrageList/Message/ImageMessage/index.js +0 -4
- package/dist/components/BarrageList/Message/MergerMessage/MergerMessage.js +0 -9
- package/dist/components/BarrageList/Message/MergerMessage/MergerMessage.vue.d.ts +0 -2
- package/dist/components/BarrageList/Message/MergerMessage/index.d.ts +0 -3
- package/dist/components/BarrageList/Message/MergerMessage/index.js +0 -4
- package/dist/components/BarrageList/Message/MessageLayout/MessageMeta/MessageMeta.js +0 -40
- package/dist/components/BarrageList/Message/MessageLayout/MessageMeta/MessageMeta.vue.d.ts +0 -54
- package/dist/components/BarrageList/Message/MessageLayout/MessageMeta/MessageStatusIcon.js +0 -26
- package/dist/components/BarrageList/Message/MessageLayout/MessageMeta/MessageStatusIcon.vue.d.ts +0 -15
- package/dist/components/BarrageList/Message/MessageLayout/MessageMeta/index.d.ts +0 -3
- package/dist/components/BarrageList/Message/MessageLayout/MessageMeta/index.js +0 -4
- package/dist/components/BarrageList/Message/RecalledMessage/RecalledMessage.js +0 -41
- package/dist/components/BarrageList/Message/RecalledMessage/RecalledMessage.vue.d.ts +0 -35
- package/dist/components/BarrageList/Message/RecalledMessage/index.d.ts +0 -3
- package/dist/components/BarrageList/Message/RecalledMessage/index.js +0 -4
- package/dist/components/BarrageList/MessageForward/ForwardListItem.js +0 -45
- package/dist/components/BarrageList/MessageForward/ForwardListItem.vue.d.ts +0 -17
- package/dist/components/BarrageList/MessageForward/MessageForward.js +0 -203
- package/dist/components/BarrageList/MessageForward/MessageForward.vue.d.ts +0 -2
- package/dist/components/BarrageList/MessageForward/index.d.ts +0 -3
- package/dist/components/BarrageList/MessageForward/index.js +0 -4
- package/dist/components/LiveCoreView/PlayerControl/MultiResolution.js +0 -78
- package/dist/components/LiveCoreView/PlayerControl/MultiResolution.vue.d.ts +0 -2
- package/dist/components/LiveCoreView/PlayerControl/PlayerControl.js +0 -168
- package/dist/components/LiveCoreView/PlayerControl/PlayerControlState.js +0 -267
- package/dist/components/LiveCoreView/PlayerControl/utils/domHelpers.js +0 -99
- package/dist/components/LiveCoreView/index.d.ts +0 -4
- package/dist/components/StreamView/Layout/MixLayout.js +0 -89
- package/dist/components/StreamView/Layout/MixLayout.vue.d.ts +0 -31
- package/dist/states/BarrageListState/BarrageListState.d.ts +0 -26
- package/dist/states/BarrageListState/BarrageListState.js +0 -122
- package/dist/states/BarrageListState/index.d.ts +0 -1
- package/dist/states/BarrageListState/index.js +0 -4
- package/dist/states/BattleState.js +0 -117
- package/dist/states/DeviceState.js +0 -296
- package/dist/states/LiveState/index.js +0 -254
- package/dist/states/VideoMixerState.js +0 -260
- package/src/components/BarrageList/Message/FaceMessage/FaceMessage.vue +0 -43
- package/src/components/BarrageList/Message/FaceMessage/index.ts +0 -3
- package/src/components/BarrageList/Message/GroupTipMessage/GroupTipMessage.vue +0 -55
- package/src/components/BarrageList/Message/GroupTipMessage/index.ts +0 -3
- package/src/components/BarrageList/Message/ImageMessage/ImageMessage.vue +0 -181
- package/src/components/BarrageList/Message/ImageMessage/index.ts +0 -3
- package/src/components/BarrageList/Message/MergerMessage/MergerMessage.vue +0 -6
- package/src/components/BarrageList/Message/MergerMessage/index.ts +0 -3
- package/src/components/BarrageList/Message/MessageLayout/MessageMeta/MessageMeta.vue +0 -70
- package/src/components/BarrageList/Message/MessageLayout/MessageMeta/MessageStatusIcon.vue +0 -40
- package/src/components/BarrageList/Message/MessageLayout/MessageMeta/index.ts +0 -3
- package/src/components/BarrageList/Message/RecalledMessage/RecalledMessage.vue +0 -82
- package/src/components/BarrageList/Message/RecalledMessage/index.ts +0 -3
- package/src/components/BarrageList/MessageForward/ForwardListItem.vue +0 -67
- package/src/components/BarrageList/MessageForward/MessageForward.vue +0 -388
- package/src/components/BarrageList/MessageForward/index.ts +0 -3
- package/src/components/StreamView/Layout/MixLayout.vue +0 -144
- /package/dist/components/{LiveCoreView → LiveView}/CoreViewDecorate/BattleDecorate.vue.d.ts +0 -0
- /package/dist/components/{LiveCoreView → LiveView}/CoreViewDecorate/BattleUserDecorate.vue.d.ts +0 -0
- /package/dist/components/{LiveCoreView → LiveView}/CoreViewDecorate/CoHostDecorate.vue.d.ts +0 -0
- /package/dist/components/{LiveCoreView → LiveView}/CoreViewDecorate/LiveCoreDecorate.vue.d.ts +0 -0
- /package/dist/components/{LiveCoreView → LiveView}/DefaultStreamViewUI.vue.d.ts +0 -0
- /package/dist/components/{LiveCoreView → LiveView}/PlayerControl/AudioControl.vue.d.ts +0 -0
- /package/dist/components/{LiveCoreView → LiveView}/PlayerControl/PlayerControl.vue.d.ts +0 -0
- /package/dist/components/{LiveCoreView → LiveView}/PlayerControl/PlayerControlState.d.ts +0 -0
- /package/dist/components/{LiveCoreView → LiveView}/PlayerControl/index.d.ts +0 -0
- /package/dist/components/{LiveCoreView → LiveView}/PlayerControl/index.js +0 -0
- /package/dist/components/{LiveCoreView → LiveView}/PlayerControl/utils/deviceDetection.d.ts +0 -0
- /package/dist/components/{LiveCoreView → LiveView}/PlayerControl/utils/deviceDetection.js +0 -0
- /package/dist/components/{LiveCoreView → LiveView}/PlayerControl/utils/fullscreenManager.d.ts +0 -0
- /package/dist/components/{LiveCoreView → LiveView}/PlayerControl/utils/fullscreenManager.js +0 -0
- /package/dist/components/{LiveCoreView → LiveView}/i18n/index.d.ts +0 -0
- /package/dist/components/{LiveCoreView → LiveView}/i18n/index.js +0 -0
- /package/dist/components/{LiveCoreView → LiveView}/index.vue.d.ts +0 -0
- /package/src/components/{LiveCoreView → LiveView}/CoreViewDecorate/CoHostDecorate.vue +0 -0
- /package/src/components/{LiveCoreView → LiveView}/CoreViewDecorate/LiveCoreDecorate.vue +0 -0
- /package/src/components/{LiveCoreView → LiveView}/PlayerControl/PlayerControl.module.scss +0 -0
- /package/src/components/{LiveCoreView → LiveView}/PlayerControl/index.ts +0 -0
- /package/src/components/{LiveCoreView → LiveView}/PlayerControl/utils/deviceDetection.ts +0 -0
- /package/src/components/{LiveCoreView → LiveView}/PlayerControl/utils/fullscreenManager.ts +0 -0
- /package/src/components/{LiveCoreView → LiveView}/assets/img/defeat.png +0 -0
- /package/src/components/{LiveCoreView → LiveView}/assets/img/draw.png +0 -0
- /package/src/components/{LiveCoreView → LiveView}/assets/img/victory.png +0 -0
- /package/src/components/{LiveCoreView → LiveView}/assets/svg/BattleOrdinaryBadge.svg +0 -0
- /package/src/components/{LiveCoreView → LiveView}/assets/svg/BattleTopBadge.svg +0 -0
- /package/src/components/{LiveCoreView → LiveView}/assets/svg/blueBkg.svg +0 -0
- /package/src/components/{LiveCoreView → LiveView}/assets/svg/redBkg.svg +0 -0
- /package/src/components/{LiveCoreView → LiveView}/assets/svg/s.svg +0 -0
- /package/src/components/{LiveCoreView → LiveView}/assets/svg/v.svg +0 -0
- /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
|
|
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 {
|
|
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(() =>
|
|
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,
|
|
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
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
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: {
|
|
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: {
|
|
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: {
|
|
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 = (
|
|
287
|
+
const onBattleStarted = () => {
|
|
283
288
|
requestBattleId.value = '';
|
|
284
289
|
battleRequestList.value.clear();
|
|
285
290
|
}
|
|
286
291
|
|
|
287
|
-
const onBattleEnded = (
|
|
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(
|
|
298
|
-
subscribeBattleEvent(
|
|
299
|
-
subscribeBattleEvent(
|
|
300
|
-
subscribeBattleEvent(
|
|
301
|
-
subscribeBattleEvent(
|
|
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(
|
|
310
|
-
unsubscribeBattleEvent(
|
|
311
|
-
unsubscribeBattleEvent(
|
|
312
|
-
unsubscribeBattleEvent(
|
|
313
|
-
unsubscribeBattleEvent(
|
|
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="!
|
|
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 {
|
|
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 {
|
|
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
|
|
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 &&
|
|
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:
|
|
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 {
|
|
@@ -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 &&
|
|
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 {
|
|
78
|
+
import { useLiveListState } from '../../states/LiveListState';
|
|
79
79
|
import { useLoginState } from '../../states/LoginState';
|
|
80
|
-
import {
|
|
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 {
|
|
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 {
|
|
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 } =
|
|
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 {
|
|
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 } =
|
|
61
|
-
const {
|
|
62
|
-
|
|
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 =
|
|
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: () =>
|
|
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 {
|
|
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,
|
|
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(() =>
|
|
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
|
-
|
|
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:
|
|
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 {
|
|
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,
|
|
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(() =>
|
|
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
|
-
|
|
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
|
-
|
|
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:
|
|
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 {
|
|
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 } =
|
|
53
|
+
const { currentLive } = useLiveListState();
|
|
54
54
|
const { mediaSourceList, publishVideoQuality, addMediaSource, updateMediaSource, clearMediaSource } = useVideoMixerState();
|
|
55
55
|
const { getCameraList } = useDeviceState();
|
|
56
56
|
|