@tencentcloud/roomkit-electron-vue3 2.4.1 → 2.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/components/Chat/ChatEditor/useChatEditor.mjs +1 -1
- package/es/components/Chat/MessageList/index.vue.mjs +1 -1
- package/es/components/Chat/MessageList/index.vue2.mjs +5 -1
- package/es/components/Chat/MessageList/useMessageListHook.mjs +4 -3
- package/es/components/ManageMember/MemberControl/index.vue.mjs +1 -1
- package/es/components/ManageMember/MemberControl/index.vue2.mjs +36 -19
- package/es/components/ManageMember/MemberControl/useMemberControlHooks.d.ts +6 -1
- package/es/components/ManageMember/MemberControl/useMemberControlHooks.mjs +113 -17
- package/es/components/ManageMember/MemberItem/useMemberItemHooks.d.ts +1 -0
- package/es/components/ManageMember/MemberItem/useMemberItemHooks.mjs +8 -6
- package/es/components/ManageMember/MemberItemCommon/MemberInfo.vue.mjs +1 -1
- package/es/components/ManageMember/MemberItemCommon/MemberInfo.vue2.mjs +7 -3
- package/es/components/ManageMember/index.vue.mjs +1 -1
- package/es/components/ManageMember/index.vue2.mjs +58 -7
- package/es/components/ManageMember/useIndexHooks.mjs +63 -14
- package/es/components/RoomContent/StreamContainer/index.vue.mjs +1 -1
- package/es/components/RoomContent/StreamContainer/index.vue2.mjs +10 -9
- package/es/components/RoomContent/StreamContainer/useStreamContainerHooks.d.ts +8 -0
- package/es/components/RoomContent/StreamContainer/useStreamContainerHooks.mjs +73 -29
- package/es/components/RoomContent/StreamRegion/index.vue.d.ts +5 -1
- package/es/components/RoomContent/StreamRegion/index.vue.mjs +1 -1
- package/es/components/RoomContent/StreamRegion/index.vue2.mjs +29 -5
- package/es/components/RoomFooter/ApplyControl/MasterApplyControl/index.vue.mjs +1 -1
- package/es/components/RoomFooter/ApplyControl/MasterApplyControl/index.vue2.mjs +10 -4
- package/es/components/RoomFooter/ApplyControl/MemberApplyControl.vue2.mjs +2 -2
- package/es/components/RoomFooter/AudioControl.vue2.mjs +2 -2
- package/es/components/RoomFooter/EndControl/index.vue.mjs +1 -1
- package/es/components/RoomFooter/EndControl/index.vue2.mjs +1 -1
- package/es/components/RoomFooter/EndControl/useEndControlHooks.mjs +16 -4
- package/es/components/RoomFooter/ScreenShareControl/Index.vue.mjs +1 -1
- package/es/components/RoomFooter/ScreenShareControl/Index.vue2.mjs +11 -3
- package/es/components/RoomFooter/VideoControl.vue.mjs +1 -1
- package/es/components/RoomFooter/VideoControl.vue2.mjs +8 -14
- package/es/components/RoomHeader/RoomInfo/index.vue2.mjs +2 -2
- package/es/components/RoomHeader/UserInfo/index.vue.d.ts +3 -11
- package/es/components/RoomHeader/UserInfo/index.vue.mjs +1 -1
- package/es/components/RoomHeader/UserInfo/index.vue2.mjs +9 -92
- package/es/components/RoomHeader/UserInfo/useUserInfoHooks.d.ts +2 -8
- package/es/components/RoomHeader/UserInfo/useUserInfoHooks.mjs +1 -18
- package/es/components/RoomHeader/index/NetworkInfo.vue2.mjs +2 -2
- package/es/components/RoomHome/RoomControl/index.vue.d.ts +10 -0
- package/es/components/RoomHome/RoomControl/index.vue.mjs +1 -1
- package/es/components/RoomHome/RoomControl/index.vue2.mjs +153 -120
- package/es/components/RoomInvite/index.vue2.mjs +2 -2
- package/es/components/RoomMore/index.vue2.mjs +2 -2
- package/es/components/RoomSidebar/useSideBarHooks.mjs +3 -2
- package/es/components/ScheduleConference/Contacts.vue.d.ts +22 -0
- package/es/components/ScheduleConference/Contacts.vue.mjs +7 -0
- package/es/components/ScheduleConference/Contacts.vue2.mjs +212 -0
- package/es/components/ScheduleConference/DurationTimePicker.vue.d.ts +18 -0
- package/es/components/ScheduleConference/DurationTimePicker.vue.mjs +67 -0
- package/es/components/ScheduleConference/DurationTimePicker.vue2.mjs +4 -0
- package/es/components/ScheduleConference/ScheduleConferencePanel.vue.d.ts +22 -0
- package/es/components/ScheduleConference/ScheduleConferencePanel.vue.mjs +7 -0
- package/es/components/ScheduleConference/ScheduleConferencePanel.vue2.mjs +613 -0
- package/es/components/ScheduleConference/ScheduleConferencePanel.vue3.mjs +1 -0
- package/es/components/ScheduleConference/ScheduleRoomControl.vue.d.ts +29 -0
- package/es/components/ScheduleConference/ScheduleRoomControl.vue.mjs +7 -0
- package/es/components/ScheduleConference/ScheduleRoomControl.vue2.mjs +464 -0
- package/es/components/ScheduleConference/ScheduleRoomControl.vue3.mjs +1 -0
- package/es/components/{common/base/Input.vue.d.ts → ScheduleConference/ScheduleRoomList.vue.d.ts} +11 -22
- package/es/components/ScheduleConference/ScheduleRoomList.vue.mjs +7 -0
- package/es/components/ScheduleConference/ScheduleRoomList.vue2.mjs +219 -0
- package/es/components/ScheduleConference/ScheduleRoomList.vue3.mjs +1 -0
- package/es/components/ScheduleConference/ShareLink.vue.d.ts +24 -0
- package/es/components/ScheduleConference/ShareLink.vue.mjs +7 -0
- package/es/components/ScheduleConference/ShareLink.vue2.mjs +113 -0
- package/es/components/ScheduleConference/ShareLink.vue3.mjs +1 -0
- package/es/components/ScheduleConference/TimezonePicker.vue.d.ts +18 -0
- package/es/components/ScheduleConference/TimezonePicker.vue.mjs +84 -0
- package/es/components/ScheduleConference/TimezonePicker.vue2.mjs +4 -0
- package/es/components/common/Avatar.vue.mjs +2 -2
- package/es/components/common/DeviceSelect.vue.mjs +1 -1
- package/es/components/common/DeviceSelect.vue2.mjs +58 -19
- package/es/components/common/Logo.vue.mjs +1 -1
- package/es/components/common/Logo.vue2.mjs +3 -3
- package/es/components/common/VideoProfile.vue2.mjs +2 -2
- package/es/components/common/base/Badge.vue.d.ts +1 -1
- package/es/components/common/base/Button.vue.d.ts +2 -2
- package/es/components/common/base/Checkbox.vue.d.ts +4 -2
- package/es/components/common/base/Checkbox.vue.mjs +2 -2
- package/es/components/common/base/Checkbox.vue2.mjs +12 -5
- package/es/components/common/base/Datepicker/Datepicker.vue.d.ts +18 -0
- package/es/components/common/base/Datepicker/Datepicker.vue.mjs +7 -0
- package/es/components/common/base/Datepicker/Datepicker.vue2.mjs +167 -0
- package/es/components/common/base/Datepicker/Datepicker.vue3.mjs +1 -0
- package/es/components/common/base/Datepicker/Timepicker.vue.d.ts +18 -0
- package/es/components/common/base/Datepicker/Timepicker.vue.mjs +66 -0
- package/es/components/common/base/Datepicker/Timepicker.vue2.mjs +4 -0
- package/es/components/common/base/Dialog/index.vue.d.ts +8 -4
- package/es/components/common/base/Dialog/index.vue.mjs +1 -1
- package/es/components/common/base/Dialog/index.vue2.mjs +17 -9
- package/es/components/common/base/Drawer.vue.d.ts +1 -1
- package/es/components/common/base/IconButton.vue.d.ts +2 -2
- package/es/components/common/base/Input/index.vue.d.ts +77 -0
- package/es/components/common/base/Input/index.vue.mjs +7 -0
- package/es/components/common/base/Input/index.vue2.mjs +140 -0
- package/es/components/common/base/Input/index.vue3.mjs +1 -0
- package/es/components/common/base/Message/Instance.mjs +1 -1
- package/es/components/common/base/Message/Message.vue.d.ts +4 -4
- package/es/components/common/base/MessageBox/index.d.ts +3 -2
- package/es/components/common/base/MessageBox/index.mjs +2 -1
- package/es/components/common/base/MessageBox/index.vue.d.ts +6 -1
- package/es/components/common/base/MessageBox/index.vue.mjs +1 -1
- package/es/components/common/base/MessageBox/index.vue2.mjs +60 -10
- package/es/components/common/base/Notification/index.vue.d.ts +2 -2
- package/es/components/common/base/Option.vue.d.ts +11 -1
- package/es/components/common/base/Option.vue.mjs +1 -1
- package/es/components/common/base/Option.vue2.mjs +16 -6
- package/es/components/common/base/Select.vue.d.ts +5 -1
- package/es/components/common/base/Select.vue.mjs +1 -1
- package/es/components/common/base/Select.vue2.mjs +12 -11
- package/es/components/common/base/index.d.ts +1 -1
- package/es/components/common/icons/AllMembersShareScreenIcon.vue.d.ts +2 -0
- package/es/components/common/icons/AllMembersShareScreenIcon.vue.mjs +22 -0
- package/es/components/common/icons/CalendarIcon.vue.d.ts +2 -0
- package/es/components/common/icons/CalendarIcon.vue.mjs +24 -0
- package/es/components/common/icons/CopyIcon.vue.mjs +2 -2
- package/es/components/common/icons/EditNameCardIcon.vue.d.ts +2 -0
- package/es/components/common/icons/EditNameCardIcon.vue.mjs +21 -0
- package/es/components/common/icons/EllipsisIcon.vue.d.ts +2 -0
- package/es/components/common/icons/EllipsisIcon.vue.mjs +34 -0
- package/es/components/common/icons/HostShareScreenIcon.vue.d.ts +2 -0
- package/es/components/common/icons/HostShareScreenIcon.vue.mjs +22 -0
- package/es/components/common/icons/LinkIcon.vue.d.ts +2 -0
- package/es/components/common/icons/LinkIcon.vue.mjs +36 -0
- package/es/components/common/icons/LoadingScheduleIcon.vue.d.ts +2 -0
- package/es/components/common/icons/LoadingScheduleIcon.vue.mjs +24 -0
- package/es/components/common/icons/ScheduleAttendees.vue.d.ts +6 -0
- package/es/components/common/icons/ScheduleAttendees.vue.mjs +25 -0
- package/es/components/common/icons/ScheduleAttendees.vue2.mjs +4 -0
- package/es/components/common/icons/ScheduleRoomIcon.vue.d.ts +2 -0
- package/es/components/common/icons/ScheduleRoomIcon.vue.mjs +24 -0
- package/es/components/common/icons/SuccessIcon.vue.d.ts +2 -0
- package/es/components/common/icons/SuccessIcon.vue.mjs +32 -0
- package/es/components/common/icons/WarningIcon.vue.d.ts +2 -0
- package/es/components/common/icons/WarningIcon.vue.mjs +29 -0
- package/es/conference.d.ts +2 -0
- package/es/conference.mjs +3 -0
- package/es/conference.vue.mjs +1 -1
- package/es/conference.vue2.mjs +9 -4
- package/es/directives/vDblTouch.d.ts +10 -0
- package/es/directives/vTap.d.ts +1 -0
- package/es/directives/vTap.mjs +30 -3
- package/es/extension/chatExtension.mjs +3 -3
- package/es/hooks/useDeviceManager.mjs +3 -3
- package/es/hooks/useMasterApplyControl.mjs +5 -5
- package/es/hooks/useRoomEngine.mjs +4 -4
- package/es/index.d.ts +1 -0
- package/es/index.mjs +2581 -1743
- package/es/locales/en-US.d.ts +75 -0
- package/es/locales/en-US.mjs +78 -1
- package/es/locales/zh-CN.d.ts +79 -0
- package/es/locales/zh-CN.mjs +83 -2
- package/es/preConference.vue.d.ts +10 -0
- package/es/preConference.vue.mjs +1 -1
- package/es/preConference.vue2.mjs +89 -13
- package/es/services/function/errorHandler.d.ts +10 -0
- package/es/services/function/errorHandler.mjs +158 -0
- package/es/services/function/virtualBackground.mjs +4 -3
- package/es/services/index.d.ts +1 -0
- package/es/services/manager/roomActionManager.d.ts +1 -0
- package/es/services/manager/roomActionManager.mjs +10 -18
- package/es/services/manager/scheduleConferenceManager.d.ts +113 -0
- package/es/services/manager/scheduleConferenceManager.mjs +141 -0
- package/es/services/manager/userManager.d.ts +2 -0
- package/es/services/manager/userManager.mjs +7 -3
- package/es/services/roomService.d.ts +8 -0
- package/es/services/roomService.mjs +42 -16
- package/es/services/types.d.ts +8 -0
- package/es/services/types.mjs +2 -0
- package/es/stores/basic.mjs +9 -3
- package/es/stores/room.d.ts +2 -0
- package/es/stores/room.mjs +55 -24
- package/es/utils/adapter.mjs +39 -3
- package/es/utils/utils.d.ts +3 -0
- package/es/utils/utils.mjs +64 -0
- package/lib/components/Chat/ChatEditor/useChatEditor.js +1 -1
- package/lib/components/Chat/MessageList/index.vue.js +1 -1
- package/lib/components/Chat/MessageList/index.vue2.js +5 -1
- package/lib/components/Chat/MessageList/useMessageListHook.js +2 -1
- package/lib/components/ManageMember/MemberControl/index.vue.js +1 -1
- package/lib/components/ManageMember/MemberControl/index.vue2.js +35 -18
- package/lib/components/ManageMember/MemberControl/useMemberControlHooks.d.ts +6 -1
- package/lib/components/ManageMember/MemberControl/useMemberControlHooks.js +113 -17
- package/lib/components/ManageMember/MemberItem/useMemberItemHooks.d.ts +1 -0
- package/lib/components/ManageMember/MemberItem/useMemberItemHooks.js +8 -6
- package/lib/components/ManageMember/MemberItemCommon/MemberInfo.vue.js +1 -1
- package/lib/components/ManageMember/MemberItemCommon/MemberInfo.vue2.js +5 -1
- package/lib/components/ManageMember/index.vue.js +1 -1
- package/lib/components/ManageMember/index.vue2.js +57 -6
- package/lib/components/ManageMember/useIndexHooks.js +63 -14
- package/lib/components/RoomContent/StreamContainer/index.vue.js +1 -1
- package/lib/components/RoomContent/StreamContainer/index.vue2.js +10 -9
- package/lib/components/RoomContent/StreamContainer/useStreamContainerHooks.d.ts +8 -0
- package/lib/components/RoomContent/StreamContainer/useStreamContainerHooks.js +72 -28
- package/lib/components/RoomContent/StreamRegion/index.vue.d.ts +5 -1
- package/lib/components/RoomContent/StreamRegion/index.vue.js +1 -1
- package/lib/components/RoomContent/StreamRegion/index.vue2.js +27 -3
- package/lib/components/RoomFooter/ApplyControl/MasterApplyControl/index.vue.js +1 -1
- package/lib/components/RoomFooter/ApplyControl/MasterApplyControl/index.vue2.js +8 -2
- package/lib/components/RoomFooter/EndControl/index.vue.js +1 -1
- package/lib/components/RoomFooter/EndControl/index.vue2.js +1 -1
- package/lib/components/RoomFooter/EndControl/useEndControlHooks.js +14 -2
- package/lib/components/RoomFooter/ScreenShareControl/Index.vue.js +1 -1
- package/lib/components/RoomFooter/ScreenShareControl/Index.vue2.js +9 -1
- package/lib/components/RoomFooter/VideoControl.vue.js +1 -1
- package/lib/components/RoomFooter/VideoControl.vue2.js +6 -12
- package/lib/components/RoomHeader/UserInfo/index.vue.d.ts +3 -11
- package/lib/components/RoomHeader/UserInfo/index.vue.js +1 -1
- package/lib/components/RoomHeader/UserInfo/index.vue2.js +6 -89
- package/lib/components/RoomHeader/UserInfo/useUserInfoHooks.d.ts +2 -8
- package/lib/components/RoomHeader/UserInfo/useUserInfoHooks.js +1 -18
- package/lib/components/RoomHome/RoomControl/index.vue.d.ts +10 -0
- package/lib/components/RoomHome/RoomControl/index.vue.js +1 -1
- package/lib/components/RoomHome/RoomControl/index.vue2.js +150 -117
- package/lib/components/RoomSidebar/useSideBarHooks.js +3 -2
- package/lib/components/ScheduleConference/Contacts.vue.d.ts +22 -0
- package/lib/components/ScheduleConference/Contacts.vue.js +7 -0
- package/lib/components/ScheduleConference/Contacts.vue2.js +212 -0
- package/lib/components/ScheduleConference/DurationTimePicker.vue.d.ts +18 -0
- package/lib/components/ScheduleConference/DurationTimePicker.vue.js +67 -0
- package/lib/components/ScheduleConference/DurationTimePicker.vue2.js +4 -0
- package/lib/components/ScheduleConference/ScheduleConferencePanel.vue.d.ts +22 -0
- package/lib/components/ScheduleConference/ScheduleConferencePanel.vue.js +7 -0
- package/lib/components/ScheduleConference/ScheduleConferencePanel.vue2.js +613 -0
- package/lib/components/ScheduleConference/ScheduleConferencePanel.vue3.js +1 -0
- package/lib/components/ScheduleConference/ScheduleRoomControl.vue.d.ts +29 -0
- package/lib/components/ScheduleConference/ScheduleRoomControl.vue.js +7 -0
- package/lib/components/ScheduleConference/ScheduleRoomControl.vue2.js +464 -0
- package/lib/components/ScheduleConference/ScheduleRoomControl.vue3.js +1 -0
- package/lib/components/{common/base/Input.vue.d.ts → ScheduleConference/ScheduleRoomList.vue.d.ts} +11 -22
- package/lib/components/ScheduleConference/ScheduleRoomList.vue.js +7 -0
- package/lib/components/ScheduleConference/ScheduleRoomList.vue2.js +219 -0
- package/lib/components/ScheduleConference/ScheduleRoomList.vue3.js +1 -0
- package/lib/components/ScheduleConference/ShareLink.vue.d.ts +24 -0
- package/lib/components/ScheduleConference/ShareLink.vue.js +7 -0
- package/lib/components/ScheduleConference/ShareLink.vue2.js +113 -0
- package/lib/components/ScheduleConference/ShareLink.vue3.js +1 -0
- package/lib/components/ScheduleConference/TimezonePicker.vue.d.ts +18 -0
- package/lib/components/ScheduleConference/TimezonePicker.vue.js +84 -0
- package/lib/components/ScheduleConference/TimezonePicker.vue2.js +4 -0
- package/lib/components/common/Avatar.vue.js +2 -2
- package/lib/components/common/DeviceSelect.vue.js +1 -1
- package/lib/components/common/DeviceSelect.vue2.js +57 -18
- package/lib/components/common/Logo.vue.js +1 -1
- package/lib/components/common/Logo.vue2.js +2 -2
- package/lib/components/common/base/Badge.vue.d.ts +1 -1
- package/lib/components/common/base/Button.vue.d.ts +2 -2
- package/lib/components/common/base/Checkbox.vue.d.ts +4 -2
- package/lib/components/common/base/Checkbox.vue.js +2 -2
- package/lib/components/common/base/Checkbox.vue2.js +11 -4
- package/lib/components/common/base/Datepicker/Datepicker.vue.d.ts +18 -0
- package/lib/components/common/base/Datepicker/Datepicker.vue.js +7 -0
- package/lib/components/common/base/Datepicker/Datepicker.vue2.js +167 -0
- package/lib/components/common/base/Datepicker/Datepicker.vue3.js +1 -0
- package/lib/components/common/base/Datepicker/Timepicker.vue.d.ts +18 -0
- package/lib/components/common/base/Datepicker/Timepicker.vue.js +66 -0
- package/lib/components/common/base/Datepicker/Timepicker.vue2.js +4 -0
- package/lib/components/common/base/Dialog/index.vue.d.ts +8 -4
- package/lib/components/common/base/Dialog/index.vue.js +1 -1
- package/lib/components/common/base/Dialog/index.vue2.js +16 -8
- package/lib/components/common/base/Drawer.vue.d.ts +1 -1
- package/lib/components/common/base/IconButton.vue.d.ts +2 -2
- package/lib/components/common/base/Input/index.vue.d.ts +77 -0
- package/lib/components/common/base/Input/index.vue.js +7 -0
- package/lib/components/common/base/Input/index.vue2.js +140 -0
- package/lib/components/common/base/Input/index.vue3.js +1 -0
- package/lib/components/common/base/Message/Instance.js +1 -1
- package/lib/components/common/base/Message/Message.vue.d.ts +4 -4
- package/lib/components/common/base/MessageBox/index.d.ts +3 -2
- package/lib/components/common/base/MessageBox/index.js +2 -1
- package/lib/components/common/base/MessageBox/index.vue.d.ts +6 -1
- package/lib/components/common/base/MessageBox/index.vue.js +1 -1
- package/lib/components/common/base/MessageBox/index.vue2.js +59 -9
- package/lib/components/common/base/Notification/index.vue.d.ts +2 -2
- package/lib/components/common/base/Option.vue.d.ts +11 -1
- package/lib/components/common/base/Option.vue.js +1 -1
- package/lib/components/common/base/Option.vue2.js +15 -5
- package/lib/components/common/base/Select.vue.d.ts +5 -1
- package/lib/components/common/base/Select.vue.js +1 -1
- package/lib/components/common/base/Select.vue2.js +11 -10
- package/lib/components/common/base/index.d.ts +1 -1
- package/lib/components/common/icons/AllMembersShareScreenIcon.vue.d.ts +2 -0
- package/lib/components/common/icons/AllMembersShareScreenIcon.vue.js +22 -0
- package/lib/components/common/icons/CalendarIcon.vue.d.ts +2 -0
- package/lib/components/common/icons/CalendarIcon.vue.js +24 -0
- package/lib/components/common/icons/CopyIcon.vue.js +2 -2
- package/lib/components/common/icons/EditNameCardIcon.vue.d.ts +2 -0
- package/lib/components/common/icons/EditNameCardIcon.vue.js +21 -0
- package/lib/components/common/icons/EllipsisIcon.vue.d.ts +2 -0
- package/lib/components/common/icons/EllipsisIcon.vue.js +34 -0
- package/lib/components/common/icons/HostShareScreenIcon.vue.d.ts +2 -0
- package/lib/components/common/icons/HostShareScreenIcon.vue.js +22 -0
- package/lib/components/common/icons/LinkIcon.vue.d.ts +2 -0
- package/lib/components/common/icons/LinkIcon.vue.js +36 -0
- package/lib/components/common/icons/LoadingScheduleIcon.vue.d.ts +2 -0
- package/lib/components/common/icons/LoadingScheduleIcon.vue.js +24 -0
- package/lib/components/common/icons/ScheduleAttendees.vue.d.ts +6 -0
- package/lib/components/common/icons/ScheduleAttendees.vue.js +25 -0
- package/lib/components/common/icons/ScheduleAttendees.vue2.js +4 -0
- package/lib/components/common/icons/ScheduleRoomIcon.vue.d.ts +2 -0
- package/lib/components/common/icons/ScheduleRoomIcon.vue.js +24 -0
- package/lib/components/common/icons/SuccessIcon.vue.d.ts +2 -0
- package/lib/components/common/icons/SuccessIcon.vue.js +32 -0
- package/lib/components/common/icons/WarningIcon.vue.d.ts +2 -0
- package/lib/components/common/icons/WarningIcon.vue.js +29 -0
- package/lib/conference.d.ts +2 -0
- package/lib/conference.js +3 -0
- package/lib/conference.vue.js +1 -1
- package/lib/conference.vue2.js +9 -4
- package/lib/directives/vDblTouch.d.ts +10 -0
- package/lib/directives/vTap.d.ts +1 -0
- package/lib/directives/vTap.js +30 -3
- package/lib/extension/chatExtension.js +1 -1
- package/lib/hooks/useMasterApplyControl.js +3 -3
- package/lib/index.d.ts +1 -0
- package/lib/index.js +2588 -1744
- package/lib/locales/en-US.d.ts +75 -0
- package/lib/locales/en-US.js +78 -1
- package/lib/locales/zh-CN.d.ts +79 -0
- package/lib/locales/zh-CN.js +83 -2
- package/lib/preConference.vue.d.ts +10 -0
- package/lib/preConference.vue.js +1 -1
- package/lib/preConference.vue2.js +88 -12
- package/lib/services/function/errorHandler.d.ts +10 -0
- package/lib/services/function/errorHandler.js +158 -0
- package/lib/services/function/virtualBackground.js +3 -2
- package/lib/services/index.d.ts +1 -0
- package/lib/services/manager/roomActionManager.d.ts +1 -0
- package/lib/services/manager/roomActionManager.js +10 -18
- package/lib/services/manager/scheduleConferenceManager.d.ts +113 -0
- package/lib/services/manager/scheduleConferenceManager.js +147 -0
- package/lib/services/manager/userManager.d.ts +2 -0
- package/lib/services/manager/userManager.js +4 -0
- package/lib/services/roomService.d.ts +8 -0
- package/lib/services/roomService.js +38 -12
- package/lib/services/types.d.ts +8 -0
- package/lib/services/types.js +2 -0
- package/lib/stores/basic.js +8 -2
- package/lib/stores/room.d.ts +2 -0
- package/lib/stores/room.js +55 -24
- package/lib/utils/adapter.js +39 -3
- package/lib/utils/utils.d.ts +3 -0
- package/lib/utils/utils.js +64 -0
- package/package.json +2 -2
- package/src/TUIRoom/assets/style/black-theme.scss +3 -1
- package/src/TUIRoom/assets/style/white-theme.scss +3 -1
- package/src/TUIRoom/components/Chat/ChatEditor/useChatEditor.ts +1 -1
- package/src/TUIRoom/components/Chat/MessageList/index.vue +5 -1
- package/src/TUIRoom/components/Chat/MessageList/useMessageListHook.ts +2 -1
- package/src/TUIRoom/components/ManageMember/MemberControl/index.vue +23 -7
- package/src/TUIRoom/components/ManageMember/MemberControl/useMemberControlHooks.ts +110 -14
- package/src/TUIRoom/components/ManageMember/MemberItem/useMemberItemHooks.ts +9 -4
- package/src/TUIRoom/components/ManageMember/MemberItemCommon/MemberInfo.vue +2 -1
- package/src/TUIRoom/components/ManageMember/index.vue +85 -5
- package/src/TUIRoom/components/ManageMember/useIndexHooks.ts +58 -9
- package/src/TUIRoom/components/RoomContent/StreamContainer/index.vue +7 -6
- package/src/TUIRoom/components/RoomContent/StreamContainer/useStreamContainerHooks.ts +90 -26
- package/src/TUIRoom/components/RoomContent/StreamRegion/index.vue +27 -3
- package/src/TUIRoom/components/RoomFooter/ApplyControl/MasterApplyControl/index.vue +2 -1
- package/src/TUIRoom/components/RoomFooter/EndControl/index.vue +1 -1
- package/src/TUIRoom/components/RoomFooter/EndControl/useEndControlHooks.ts +10 -3
- package/src/TUIRoom/components/RoomFooter/ScreenShareControl/Index.vue +11 -1
- package/src/TUIRoom/components/RoomFooter/VideoControl.vue +0 -7
- package/src/TUIRoom/components/RoomHeader/UserInfo/index.vue +19 -50
- package/src/TUIRoom/components/RoomHeader/UserInfo/useUserInfoHooks.ts +1 -28
- package/src/TUIRoom/components/RoomHome/RoomControl/index.vue +91 -73
- package/src/TUIRoom/components/RoomSidebar/useSideBarHooks.ts +3 -2
- package/src/TUIRoom/components/ScheduleConference/Contacts.vue +265 -0
- package/src/TUIRoom/components/ScheduleConference/DurationTimePicker.vue +54 -0
- package/src/TUIRoom/components/ScheduleConference/ScheduleConferencePanel.vue +731 -0
- package/src/TUIRoom/components/ScheduleConference/ScheduleRoomControl.vue +577 -0
- package/src/TUIRoom/components/ScheduleConference/ScheduleRoomList.vue +295 -0
- package/src/TUIRoom/components/ScheduleConference/ShareLink.vue +122 -0
- package/src/TUIRoom/components/ScheduleConference/TimezonePicker.vue +70 -0
- package/src/TUIRoom/components/common/DeviceSelect.vue +62 -20
- package/src/TUIRoom/components/common/Logo.vue +3 -3
- package/src/TUIRoom/components/common/base/Checkbox.vue +19 -11
- package/src/TUIRoom/components/common/base/Datepicker/Datepicker.vue +252 -0
- package/src/TUIRoom/components/common/base/Datepicker/Timepicker.vue +54 -0
- package/src/TUIRoom/components/common/base/Dialog/index.vue +17 -7
- package/src/TUIRoom/components/common/base/Input/index.vue +187 -0
- package/src/TUIRoom/components/common/base/Message/Instance.ts +2 -1
- package/src/TUIRoom/components/common/base/MessageBox/index.ts +4 -2
- package/src/TUIRoom/components/common/base/MessageBox/index.vue +57 -26
- package/src/TUIRoom/components/common/base/Option.vue +14 -4
- package/src/TUIRoom/components/common/base/Select.vue +18 -13
- package/src/TUIRoom/components/common/base/index.ts +1 -1
- package/src/TUIRoom/components/common/icons/AllMembersShareScreenIcon.vue +15 -0
- package/src/TUIRoom/components/common/icons/ArrowStrokeRightIcon.vue +8 -0
- package/src/TUIRoom/components/common/icons/CalendarIcon.vue +6 -0
- package/src/TUIRoom/components/common/icons/EditNameCardIcon.vue +13 -0
- package/src/TUIRoom/components/common/icons/EllipsisIcon.vue +8 -0
- package/src/TUIRoom/components/common/icons/HostShareScreenIcon.vue +13 -0
- package/src/TUIRoom/components/common/icons/LinkIcon.vue +10 -0
- package/src/TUIRoom/components/common/icons/LoadingScheduleIcon.vue +6 -0
- package/src/TUIRoom/components/common/icons/ScheduleAttendees.vue +13 -0
- package/src/TUIRoom/components/common/icons/ScheduleRoomIcon.vue +6 -0
- package/src/TUIRoom/components/common/icons/SuccessIcon.vue +8 -0
- package/src/TUIRoom/components/common/icons/WarningIcon.vue +13 -0
- package/src/TUIRoom/conference.ts +6 -0
- package/src/TUIRoom/conference.vue +16 -5
- package/src/TUIRoom/directives/vDblTouch.ts +41 -0
- package/src/TUIRoom/directives/vTap.ts +32 -3
- package/src/TUIRoom/extension/chatExtension.ts +1 -1
- package/src/TUIRoom/hooks/useMasterApplyControl.ts +2 -2
- package/src/TUIRoom/index.ts +1 -0
- package/src/TUIRoom/locales/en-US.ts +77 -0
- package/src/TUIRoom/locales/zh-CN.ts +82 -1
- package/src/TUIRoom/preConference.vue +97 -2
- package/src/TUIRoom/services/function/errorHandler.ts +169 -0
- package/src/TUIRoom/services/function/virtualBackground.ts +3 -3
- package/src/TUIRoom/services/index.ts +1 -0
- package/src/TUIRoom/services/manager/roomActionManager.ts +10 -18
- package/src/TUIRoom/services/manager/scheduleConferenceManager.ts +263 -0
- package/src/TUIRoom/services/manager/userManager.ts +6 -0
- package/src/TUIRoom/services/roomService.ts +41 -13
- package/src/TUIRoom/services/types.ts +8 -1
- package/src/TUIRoom/stores/basic.ts +9 -2
- package/src/TUIRoom/stores/room.ts +60 -19
- package/src/TUIRoom/utils/adapter.ts +44 -4
- package/src/TUIRoom/utils/utils.ts +42 -0
- package/es/components/common/base/Input.vue.mjs +0 -7
- package/es/components/common/base/Input.vue2.mjs +0 -34
- package/lib/components/common/base/Input.vue.js +0 -7
- package/lib/components/common/base/Input.vue2.js +0 -34
- package/src/TUIRoom/components/common/base/Input.vue +0 -61
- /package/es/components/{common/base/Input.vue3.mjs → ScheduleConference/Contacts.vue3.mjs} +0 -0
- /package/lib/components/{common/base/Input.vue3.js → ScheduleConference/Contacts.vue3.js} +0 -0
|
@@ -8,6 +8,8 @@ import { TUIMediaDevice } from '@tencentcloud/tuiroom-engine-electron';
|
|
|
8
8
|
import TUIMessage from '../common/base/Message/index';
|
|
9
9
|
import { MESSAGE_DURATION } from '../../constants/message';
|
|
10
10
|
import { isMobile } from '../../utils/environment';
|
|
11
|
+
import AllMembersShareScreenIcon from '../common/icons/AllMembersShareScreenIcon.vue';
|
|
12
|
+
import HostShareScreenIcon from '../common/icons/HostShareScreenIcon.vue';
|
|
11
13
|
|
|
12
14
|
export default function useIndex() {
|
|
13
15
|
const roomEngine = useGetRoomEngine();
|
|
@@ -21,11 +23,19 @@ export default function useIndex() {
|
|
|
21
23
|
anchorUserList,
|
|
22
24
|
applyToAnchorList,
|
|
23
25
|
isOnStateTabActive,
|
|
26
|
+
generalUserScreenStreamList,
|
|
24
27
|
} = storeToRefs(roomStore);
|
|
25
28
|
|
|
29
|
+
enum ManageControlType {
|
|
30
|
+
AUDIO = 'audio',
|
|
31
|
+
VIDEO = 'video',
|
|
32
|
+
SCREEN = 'screen',
|
|
33
|
+
}
|
|
34
|
+
|
|
26
35
|
const audienceUserList = computed(() => userList.value.filter(user => !anchorUserList.value.includes(user)));
|
|
27
36
|
|
|
28
37
|
const searchText = ref('');
|
|
38
|
+
const showMoreControl = ref(false);
|
|
29
39
|
|
|
30
40
|
function handleToggleStaged() {
|
|
31
41
|
isOnStateTabActive.value = !isOnStateTabActive.value;
|
|
@@ -42,7 +52,7 @@ export default function useIndex() {
|
|
|
42
52
|
if (!searchText.value) {
|
|
43
53
|
return list;
|
|
44
54
|
}
|
|
45
|
-
return list.filter((item: UserInfo) => item.userName?.includes(searchText.value) || item.userId.includes(searchText.value));
|
|
55
|
+
return list.filter((item: UserInfo) => item.nameCard?.includes(searchText.value) || item.userName?.includes(searchText.value) || item.userId.includes(searchText.value));
|
|
46
56
|
});
|
|
47
57
|
const alreadyStaged = computed(() => `${t('Already on stage')} (${(anchorUserList.value.length)})`);
|
|
48
58
|
const notStaged = computed(() => `${t('Not on stage')} (${(audienceUserList.value.length)})`);
|
|
@@ -54,24 +64,30 @@ export default function useIndex() {
|
|
|
54
64
|
const audioManageInfo = computed(() => (roomStore.isMicrophoneDisableForAllUser ? t('Lift all mute') : t('All mute')));
|
|
55
65
|
const videoManageInfo = computed(() => (roomStore.isCameraDisableForAllUser ? t('Lift stop all video') : t('All stop video')));
|
|
56
66
|
|
|
67
|
+
const moreControlList = computed(() => ([
|
|
68
|
+
{
|
|
69
|
+
title: roomStore.isScreenShareDisableForAllUser ? t('All members can share screen') : t('Screen sharing for host/admin only'),
|
|
70
|
+
icon: roomStore.isScreenShareDisableForAllUser ? AllMembersShareScreenIcon : HostShareScreenIcon,
|
|
71
|
+
func: toggleManageAllMember,
|
|
72
|
+
type: ManageControlType.SCREEN,
|
|
73
|
+
},
|
|
74
|
+
]));
|
|
75
|
+
|
|
57
76
|
const showManageAllUserDialog: Ref<boolean> = ref(false);
|
|
58
77
|
const dialogContent: Ref<string> = ref('');
|
|
59
78
|
const dialogTitle: Ref<string> = ref('');
|
|
60
79
|
const dialogActionInfo: Ref<string> = ref('');
|
|
61
80
|
let stateForAllAudio: boolean = false;
|
|
62
81
|
let stateForAllVideo: boolean = false;
|
|
82
|
+
let stateForScreenShare: boolean = false;
|
|
63
83
|
|
|
64
|
-
enum ManageControlType {
|
|
65
|
-
AUDIO = 'audio',
|
|
66
|
-
VIDEO = 'video',
|
|
67
|
-
}
|
|
68
84
|
const currentControlType: Ref<ManageControlType> = ref(ManageControlType.AUDIO);
|
|
69
85
|
|
|
70
86
|
async function toggleManageAllMember(type: ManageControlType) {
|
|
71
|
-
showManageAllUserDialog.value = true;
|
|
72
87
|
currentControlType.value = type;
|
|
73
88
|
switch (type) {
|
|
74
89
|
case ManageControlType.AUDIO:
|
|
90
|
+
showManageAllUserDialog.value = true;
|
|
75
91
|
dialogTitle.value = roomStore.isMicrophoneDisableForAllUser
|
|
76
92
|
? t('Enable all audios') : t('All current and new members will be muted');
|
|
77
93
|
dialogContent.value = roomStore.isMicrophoneDisableForAllUser
|
|
@@ -83,6 +99,7 @@ export default function useIndex() {
|
|
|
83
99
|
dialogActionInfo.value = audioManageInfo.value;
|
|
84
100
|
break;
|
|
85
101
|
case ManageControlType.VIDEO:
|
|
102
|
+
showManageAllUserDialog.value = true;
|
|
86
103
|
dialogTitle.value = roomStore.isCameraDisableForAllUser
|
|
87
104
|
? t('Enable all videos') : t('All and new members will be banned from the camera');
|
|
88
105
|
dialogContent.value = roomStore.isCameraDisableForAllUser
|
|
@@ -93,6 +110,16 @@ export default function useIndex() {
|
|
|
93
110
|
await nextTick();
|
|
94
111
|
dialogActionInfo.value = videoManageInfo.value;
|
|
95
112
|
break;
|
|
113
|
+
case ManageControlType.SCREEN:
|
|
114
|
+
stateForScreenShare = !roomStore.isScreenShareDisableForAllUser;
|
|
115
|
+
if (generalUserScreenStreamList.value.length === 0) {
|
|
116
|
+
toggleAllScreenShare();
|
|
117
|
+
break;
|
|
118
|
+
}
|
|
119
|
+
showManageAllUserDialog.value = true;
|
|
120
|
+
dialogTitle.value = t('Is it turned on that only the host/admin can share the screen?');
|
|
121
|
+
dialogContent.value = t("Other member is sharing the screen is now, the member's sharing will be terminated after you turning on");
|
|
122
|
+
break;
|
|
96
123
|
default:
|
|
97
124
|
break;
|
|
98
125
|
}
|
|
@@ -106,11 +133,26 @@ export default function useIndex() {
|
|
|
106
133
|
case ManageControlType.VIDEO:
|
|
107
134
|
toggleAllVideo();
|
|
108
135
|
break;
|
|
136
|
+
case ManageControlType.SCREEN:
|
|
137
|
+
await roomEngine.instance?.closeRemoteDeviceByAdmin({
|
|
138
|
+
userId: generalUserScreenStreamList.value[0].userId,
|
|
139
|
+
device: TUIMediaDevice.kScreen,
|
|
140
|
+
});
|
|
141
|
+
toggleAllScreenShare();
|
|
142
|
+
break;
|
|
109
143
|
default:
|
|
110
144
|
break;
|
|
111
145
|
}
|
|
112
146
|
showManageAllUserDialog.value = false;
|
|
113
147
|
}
|
|
148
|
+
async function toggleAllScreenShare() {
|
|
149
|
+
await roomEngine.instance?.disableDeviceForAllUserByAdmin({
|
|
150
|
+
isDisable: stateForScreenShare,
|
|
151
|
+
device: TUIMediaDevice.kScreen,
|
|
152
|
+
});
|
|
153
|
+
roomStore.setDisableScreenShareForAllUserByAdmin(stateForScreenShare);
|
|
154
|
+
showMoreControl.value = false;
|
|
155
|
+
}
|
|
114
156
|
function showApplyUserList() {
|
|
115
157
|
if (isMobile) {
|
|
116
158
|
basicStore.setSidebarOpenStatus(true);
|
|
@@ -134,7 +176,7 @@ export default function useIndex() {
|
|
|
134
176
|
isDisable: stateForAllAudio,
|
|
135
177
|
device: TUIMediaDevice.kMicrophone,
|
|
136
178
|
});
|
|
137
|
-
roomStore.
|
|
179
|
+
roomStore.setDisableMicrophoneForAllUserByAdmin(stateForAllAudio);
|
|
138
180
|
}
|
|
139
181
|
|
|
140
182
|
async function toggleAllVideo() {
|
|
@@ -151,18 +193,22 @@ export default function useIndex() {
|
|
|
151
193
|
isDisable: stateForAllVideo,
|
|
152
194
|
device: TUIMediaDevice.kCamera,
|
|
153
195
|
});
|
|
154
|
-
roomStore.
|
|
196
|
+
roomStore.setDisableCameraForAllUserByAdmin(stateForAllVideo);
|
|
155
197
|
}
|
|
156
198
|
|
|
157
199
|
const applyToAnchorUserContent = computed(() => {
|
|
158
200
|
const lastIndex = applyToAnchorList.value.length - 1;
|
|
159
|
-
const userName = applyToAnchorList.value[lastIndex]?.userName || applyToAnchorList.value[lastIndex]?.userId;
|
|
201
|
+
const userName = applyToAnchorList.value[lastIndex]?.nameCard || applyToAnchorList.value[lastIndex]?.userName || applyToAnchorList.value[lastIndex]?.userId;
|
|
160
202
|
if (applyToAnchorList.value.length === 1) {
|
|
161
203
|
return `${userName} ${t('Applying for the stage')}`;
|
|
162
204
|
}
|
|
163
205
|
return `${userName} ${t('and so on number people applying to stage', { number: applyToAnchorList.value.length })}`;
|
|
164
206
|
});
|
|
165
207
|
|
|
208
|
+
function toggleClickMoreBtn() {
|
|
209
|
+
showMoreControl.value = !showMoreControl.value;
|
|
210
|
+
}
|
|
211
|
+
|
|
166
212
|
return {
|
|
167
213
|
showApplyUserList,
|
|
168
214
|
searchText,
|
|
@@ -183,5 +229,8 @@ export default function useIndex() {
|
|
|
183
229
|
isOnStateTabActive,
|
|
184
230
|
handleToggleStaged,
|
|
185
231
|
applyToAnchorUserContent,
|
|
232
|
+
toggleClickMoreBtn,
|
|
233
|
+
showMoreControl,
|
|
234
|
+
moreControlList,
|
|
186
235
|
};
|
|
187
236
|
}
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
:enlarge-dom-id="enlargeDomId"
|
|
25
25
|
class="single-stream"
|
|
26
26
|
:style="streamStyle"
|
|
27
|
-
@
|
|
27
|
+
@room-dblclick="handleEnlargeStreamRegion(stream)"
|
|
28
28
|
></stream-region>
|
|
29
29
|
</div>
|
|
30
30
|
</div>
|
|
@@ -65,6 +65,7 @@ import { useBasicStore } from '../../../stores/basic';
|
|
|
65
65
|
import { LAYOUT } from '../../../constants/render';
|
|
66
66
|
import StreamRegion from '../StreamRegion/index.vue';
|
|
67
67
|
import TUIMessage from '../../common/base/Message/index';
|
|
68
|
+
import TUIMessageBox from '../../common/base/MessageBox/index';
|
|
68
69
|
import { MESSAGE_DURATION } from '../../../constants/message';
|
|
69
70
|
import { debounce } from '../../../utils/utils';
|
|
70
71
|
import logger from '../../../utils/common/logger';
|
|
@@ -510,10 +511,10 @@ const onUserVideoStateChanged = (eventInfo: {
|
|
|
510
511
|
}
|
|
511
512
|
// Host turns off screen sharing
|
|
512
513
|
if (streamType === TUIVideoStreamType.kScreenStream) {
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
message: t('
|
|
516
|
-
|
|
514
|
+
TUIMessageBox({
|
|
515
|
+
title: t('Your screen sharing has been stopped'),
|
|
516
|
+
message: t('Your screen sharing has been stopped, Now only the host/admin can share the screen'),
|
|
517
|
+
confirmButtonText: t('I got it'),
|
|
517
518
|
});
|
|
518
519
|
}
|
|
519
520
|
}
|
|
@@ -577,10 +578,10 @@ const handleLargeStreamLeave = () => {
|
|
|
577
578
|
|
|
578
579
|
// Handle lazy loading of videos in sidebar & top bar
|
|
579
580
|
const handleStreamContainerScroll = async () => {
|
|
580
|
-
const childDom = streamListRef.value.children[0];
|
|
581
581
|
// Add nextTick to handle the problem of new users triggering scroll in top bar mode,
|
|
582
582
|
// but the obtained streamListRef.value.offsetWidth has not been updated yet.
|
|
583
583
|
await nextTick();
|
|
584
|
+
const childDom = streamListRef.value.children[0];
|
|
584
585
|
|
|
585
586
|
// From which number
|
|
586
587
|
let index = 0;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { watch } from 'vue';
|
|
1
|
+
import { watch, ref } from 'vue';
|
|
2
|
+
import type { Ref } from 'vue';
|
|
2
3
|
import useGetRoomEngine from '../../../hooks/useRoomEngine';
|
|
3
|
-
import { useRoomStore } from '../../../stores/room';
|
|
4
|
-
import { TUIChangeReason, TUIMediaDeviceType,
|
|
4
|
+
import { useRoomStore, StreamInfo } from '../../../stores/room';
|
|
5
|
+
import { TUIChangeReason, TUIMediaDeviceType, TUIUserInfo, TRTCVolumeInfo } from '@tencentcloud/tuiroom-engine-electron';
|
|
5
6
|
import TUIMessage from '../../common/base/Message/index';
|
|
6
7
|
import { useI18n } from '../../../locales';
|
|
7
8
|
import { useBasicStore } from '../../../stores/basic';
|
|
@@ -11,6 +12,8 @@ import { isMobile, isWeChat } from '../../../utils/environment';
|
|
|
11
12
|
import logger from '../../../utils/common/logger';
|
|
12
13
|
import { SMALL_VIDEO_ENC_PARAM } from '../../../constants/room';
|
|
13
14
|
import useDeviceManager from '../../../hooks/useDeviceManager';
|
|
15
|
+
import { throttle } from '../../../utils/utils';
|
|
16
|
+
import { LAYOUT } from '../../../constants/render';
|
|
14
17
|
|
|
15
18
|
const logPrefix = '[StreamContainer]';
|
|
16
19
|
|
|
@@ -19,9 +22,14 @@ export default function useStreamContainer() {
|
|
|
19
22
|
const roomEngine = useGetRoomEngine();
|
|
20
23
|
const basicStore = useBasicStore();
|
|
21
24
|
const roomStore = useRoomStore();
|
|
25
|
+
const { layout } = storeToRefs(basicStore);
|
|
26
|
+
const { localStream } = storeToRefs(roomStore);
|
|
22
27
|
const { t } = useI18n();
|
|
23
28
|
const { deviceManager } = useDeviceManager();
|
|
24
29
|
|
|
30
|
+
const currentRemoteSpeakerUserId: Ref<string> = ref('');
|
|
31
|
+
const currentSpeakerUserId: Ref<string> = ref('');
|
|
32
|
+
|
|
25
33
|
const onRemoteUserEnterRoom = (eventInfo: { userInfo: TUIUserInfo }) => {
|
|
26
34
|
roomStore.addRemoteUser(eventInfo.userInfo);
|
|
27
35
|
};
|
|
@@ -55,6 +63,76 @@ export default function useStreamContainer() {
|
|
|
55
63
|
roomStore.setCanControlSelfAudio(!roomStore.isMicrophoneDisableForAllUser);
|
|
56
64
|
}
|
|
57
65
|
};
|
|
66
|
+
|
|
67
|
+
// Calculate the userId of the loudest speaker in the room
|
|
68
|
+
// Calculate the userId of the remote user who speaks the loudest in the current room.
|
|
69
|
+
function handleUserVoiceVolume(userVolumeList: Array<TRTCVolumeInfo>) {
|
|
70
|
+
const localUserVolume = {
|
|
71
|
+
userId: basicStore.userId,
|
|
72
|
+
volume: 0,
|
|
73
|
+
};
|
|
74
|
+
const largestRemoteUserVolume = {
|
|
75
|
+
userId: '',
|
|
76
|
+
volume: 0,
|
|
77
|
+
};
|
|
78
|
+
userVolumeList.forEach((item: TRTCVolumeInfo) => {
|
|
79
|
+
if (item.userId === basicStore.userId && localStream.value.hasAudioStream) {
|
|
80
|
+
localUserVolume.volume = item.volume;
|
|
81
|
+
} else if (item.userId !== basicStore.userId && roomStore.remoteUserObj[item.userId]?.hasAudioStream) {
|
|
82
|
+
const { userId, volume } = item;
|
|
83
|
+
if (volume > largestRemoteUserVolume.volume) {
|
|
84
|
+
largestRemoteUserVolume.userId = userId;
|
|
85
|
+
largestRemoteUserVolume.volume = volume;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
const largestUserVolume = localUserVolume.volume > largestRemoteUserVolume.volume
|
|
91
|
+
? localUserVolume : largestRemoteUserVolume;
|
|
92
|
+
|
|
93
|
+
if (currentRemoteSpeakerUserId.value) {
|
|
94
|
+
const lastRemoteSpeakerUserVolumeInfo = userVolumeList.find((item: TRTCVolumeInfo) => (
|
|
95
|
+
item.userId === currentRemoteSpeakerUserId.value
|
|
96
|
+
));
|
|
97
|
+
if (!lastRemoteSpeakerUserVolumeInfo || lastRemoteSpeakerUserVolumeInfo.volume === 0) {
|
|
98
|
+
if (largestRemoteUserVolume.volume > 0) {
|
|
99
|
+
currentRemoteSpeakerUserId.value = largestRemoteUserVolume.userId;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
} else {
|
|
103
|
+
if (largestRemoteUserVolume.volume > 0) {
|
|
104
|
+
currentRemoteSpeakerUserId.value = largestRemoteUserVolume.userId;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
if (currentSpeakerUserId.value) {
|
|
109
|
+
const lastSpeakerUserVolumeInfo: TRTCVolumeInfo | undefined = userVolumeList.find((item: TRTCVolumeInfo) => (
|
|
110
|
+
item.userId === currentSpeakerUserId.value
|
|
111
|
+
));
|
|
112
|
+
if (!lastSpeakerUserVolumeInfo || lastSpeakerUserVolumeInfo.volume === 0) {
|
|
113
|
+
if (largestUserVolume.volume > 0) {
|
|
114
|
+
currentSpeakerUserId.value = largestUserVolume.userId;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
} else {
|
|
118
|
+
if (largestUserVolume.volume > 0) {
|
|
119
|
+
currentSpeakerUserId.value = largestUserVolume.userId;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
const handleUserVoiceVolumeThrottle = throttle(handleUserVoiceVolume, 1000);
|
|
125
|
+
|
|
126
|
+
// volume change
|
|
127
|
+
const onUserVoiceVolumeChanged = (eventInfo: {
|
|
128
|
+
userVolumeList: any[],
|
|
129
|
+
}) => {
|
|
130
|
+
const { userVolumeList } = eventInfo;
|
|
131
|
+
if (layout.value === LAYOUT.LARGE_SMALL_WINDOW) {
|
|
132
|
+
handleUserVoiceVolumeThrottle(userVolumeList);
|
|
133
|
+
}
|
|
134
|
+
};
|
|
135
|
+
|
|
58
136
|
const {
|
|
59
137
|
isDefaultOpenCamera,
|
|
60
138
|
isDefaultOpenMicrophone,
|
|
@@ -67,31 +145,13 @@ export default function useStreamContainer() {
|
|
|
67
145
|
*
|
|
68
146
|
**/
|
|
69
147
|
if (isWeChat) {
|
|
70
|
-
await roomEngine.instance?.setLocalVideoView({
|
|
71
|
-
view: `${roomStore.localStream.userId}_${roomStore.localStream.streamType}`,
|
|
72
|
-
});
|
|
73
|
-
// @ts-ignore
|
|
74
148
|
await roomEngine.instance?.openLocalCamera({ isFrontCamera: basicStore.isFrontCamera });
|
|
75
149
|
} else if (isMobile) {
|
|
76
|
-
const previewDom = document?.getElementById(`${roomStore.localStream.userId}_${roomStore.localStream.streamType}`);
|
|
77
|
-
if (!previewDom) {
|
|
78
|
-
logger.error(`${logPrefix}watch isDefaultOpenCamera:`, isDefaultOpenCamera, previewDom);
|
|
79
|
-
return;
|
|
80
|
-
}
|
|
81
|
-
await roomEngine.instance?.setLocalVideoView({
|
|
82
|
-
view: `${roomStore.localStream.userId}_${roomStore.localStream.streamType}`,
|
|
83
|
-
});
|
|
84
150
|
const trtcCloud = roomEngine.instance?.getTRTCCloud();
|
|
85
151
|
trtcCloud?.enableSmallVideoStream(false, SMALL_VIDEO_ENC_PARAM);
|
|
86
|
-
// @ts-ignore
|
|
87
152
|
await roomEngine.instance?.openLocalCamera({ isFrontCamera: basicStore.isFrontCamera });
|
|
88
153
|
return;
|
|
89
154
|
} else {
|
|
90
|
-
const previewDom = document?.getElementById(`${roomStore.localStream.userId}_${roomStore.localStream.streamType}`);
|
|
91
|
-
if (!previewDom) {
|
|
92
|
-
logger.error(`${logPrefix}watch isDefaultOpenCamera:`, isDefaultOpenCamera, previewDom);
|
|
93
|
-
return;
|
|
94
|
-
}
|
|
95
155
|
/**
|
|
96
156
|
* Set device id
|
|
97
157
|
*
|
|
@@ -112,13 +172,10 @@ export default function useStreamContainer() {
|
|
|
112
172
|
* Turn on the local camera
|
|
113
173
|
*
|
|
114
174
|
**/
|
|
115
|
-
await roomEngine.instance?.setLocalVideoView({
|
|
116
|
-
view: `${roomStore.localStream.userId}_${roomStore.localStream.streamType}`,
|
|
117
|
-
});
|
|
118
175
|
await roomEngine.instance?.openLocalCamera();
|
|
119
176
|
}
|
|
120
177
|
}
|
|
121
|
-
}, {immediate: true});
|
|
178
|
+
}, { immediate: true });
|
|
122
179
|
|
|
123
180
|
watch(isDefaultOpenMicrophone, async (val) => {
|
|
124
181
|
if (val) {
|
|
@@ -142,12 +199,19 @@ export default function useStreamContainer() {
|
|
|
142
199
|
} else {
|
|
143
200
|
await roomEngine.instance?.muteLocalAudio();
|
|
144
201
|
}
|
|
145
|
-
}, {immediate: true});
|
|
202
|
+
}, { immediate: true });
|
|
203
|
+
|
|
204
|
+
const isSameStream = (stream1: StreamInfo | null, stream2: StreamInfo | null) => `${stream1?.userId}_${stream1?.streamType}` === `${stream2?.userId}_${stream2?.streamType}`;
|
|
205
|
+
|
|
146
206
|
return {
|
|
207
|
+
currentRemoteSpeakerUserId,
|
|
208
|
+
currentSpeakerUserId,
|
|
147
209
|
onRemoteUserEnterRoom,
|
|
148
210
|
onRemoteUserLeaveRoom,
|
|
149
211
|
onSeatListChanged,
|
|
150
212
|
onUserAudioStateChanged,
|
|
213
|
+
onUserVoiceVolumeChanged,
|
|
214
|
+
isSameStream,
|
|
151
215
|
t,
|
|
152
216
|
};
|
|
153
217
|
}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
v-if="playRegionDomId !== enlargeDomId"
|
|
4
4
|
ref="streamRegionRef"
|
|
5
5
|
class="user-stream-container"
|
|
6
|
-
@dblclick="$emit('
|
|
6
|
+
@dblclick="$emit('room-dblclick')"
|
|
7
7
|
>
|
|
8
8
|
<local-screen-stream
|
|
9
9
|
v-if="isLocalScreen"
|
|
@@ -80,6 +80,7 @@ interface Props {
|
|
|
80
80
|
}
|
|
81
81
|
|
|
82
82
|
const props = defineProps<Props>();
|
|
83
|
+
defineEmits(['room-dblclick']);
|
|
83
84
|
|
|
84
85
|
// Whether it is a local screen sharing placeholder window
|
|
85
86
|
const isLocalScreen = computed(() => (
|
|
@@ -111,11 +112,34 @@ const showIcon = computed(() => showMasterIcon.value || showAdminIcon.value);
|
|
|
111
112
|
const isScreenStream = computed(() => props.stream.streamType === TUIVideoStreamType.kScreenStream);
|
|
112
113
|
const userInfo = computed(() => {
|
|
113
114
|
if (isInnerScene) {
|
|
114
|
-
return `${props.stream.
|
|
115
|
+
return `${props.stream.nameCard || props.stream.userName} | ${props.stream.userId}`;
|
|
115
116
|
}
|
|
116
|
-
return props.stream.userName || props.stream.userId;
|
|
117
|
+
return props.stream.nameCard || props.stream.userName || props.stream.userId;
|
|
117
118
|
});
|
|
118
119
|
|
|
120
|
+
watch(
|
|
121
|
+
() => props.stream.hasVideoStream,
|
|
122
|
+
async (val) => {
|
|
123
|
+
if (props.stream.userId === basicStore.userId && props.stream.streamType === TUIVideoStreamType.kCameraStream) {
|
|
124
|
+
if (val) {
|
|
125
|
+
await nextTick();
|
|
126
|
+
const userIdEl = document?.getElementById(`${playRegionDomId.value}`) as HTMLDivElement;
|
|
127
|
+
if (userIdEl) {
|
|
128
|
+
logger.debug(`${logPrefix}watch isVideoStreamAvailable:`, props.stream.userId, userIdEl);
|
|
129
|
+
await roomEngine.instance?.setLocalVideoView({
|
|
130
|
+
view: `${playRegionDomId.value}`,
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
} else {
|
|
134
|
+
await roomEngine.instance?.setLocalVideoView({
|
|
135
|
+
view: null,
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
},
|
|
140
|
+
{ immediate: true },
|
|
141
|
+
);
|
|
142
|
+
|
|
119
143
|
// The stream type to be pulled from the remote user
|
|
120
144
|
const streamTypeToFetch = computed(() => {
|
|
121
145
|
const { streamType, userId } = props.stream;
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
<div v-for="item in applyToAnchorList" :key="item.userId" class="apply-item">
|
|
19
19
|
<div class="user-info">
|
|
20
20
|
<Avatar class="avatar-url" :img-src="item.avatarUrl"></Avatar>
|
|
21
|
-
<span class="user-name" :title="
|
|
21
|
+
<span class="user-name" :title="roomService.getDisplayName(item)">{{ roomService.getDisplayName(item) }}</span>
|
|
22
22
|
</div>
|
|
23
23
|
<div class="control-container">
|
|
24
24
|
<tui-button size="default" class="agree" @click="handleUserApply(item.userId, true)">
|
|
@@ -62,6 +62,7 @@ import Avatar from '../../../common/Avatar.vue';
|
|
|
62
62
|
import Dialog from '../../../common/base/Dialog/index.vue';
|
|
63
63
|
import SvgIcon from '../../../common/base/SvgIcon.vue';
|
|
64
64
|
import TuiButton from '../../../common/base/Button.vue';
|
|
65
|
+
import { roomService } from '../../../../services';
|
|
65
66
|
|
|
66
67
|
const {
|
|
67
68
|
t,
|
|
@@ -8,6 +8,7 @@ import useGetRoomEngine from '../../../hooks/useRoomEngine';
|
|
|
8
8
|
import TUIRoomEngine, { TUIRole, TUIRoomEvents } from '@tencentcloud/tuiroom-engine-electron';
|
|
9
9
|
import logger from '../../../utils/common/logger';
|
|
10
10
|
import TUIMessage from '../../common/base/Message/index';
|
|
11
|
+
import { roomService } from '../../../services';
|
|
11
12
|
|
|
12
13
|
export default function useEndControl() {
|
|
13
14
|
const { t } = useI18n();
|
|
@@ -35,8 +36,7 @@ export default function useEndControl() {
|
|
|
35
36
|
const selectedUser: Ref<string> = ref('');
|
|
36
37
|
const showTransfer = ref(false);
|
|
37
38
|
const searchName = ref('');
|
|
38
|
-
const filteredList = computed(() => remoteUserList.value.filter(searchUser => (
|
|
39
|
-
searchUser.userId.includes(searchName.value)) || (searchUser.userName?.includes(searchName.value))));
|
|
39
|
+
const filteredList = computed(() => remoteUserList.value.filter(searchUser => (searchUser.nameCard?.includes(searchName.value)) || (searchUser.userId.includes(searchName.value)) || (searchUser.userName?.includes(searchName.value))));
|
|
40
40
|
const hasNoData = computed(() => filteredList.value.length === 0);
|
|
41
41
|
const isMasterWithOneRemoteUser = computed(() => remoteUserList.value.length === 1);
|
|
42
42
|
const isMasterWithRemoteUser = computed(() => remoteUserList.value.length > 0);
|
|
@@ -169,9 +169,16 @@ export default function useEndControl() {
|
|
|
169
169
|
TUIRoomEngine.once('ready', () => {
|
|
170
170
|
roomEngine.instance?.on(TUIRoomEvents.onUserRoleChanged, onUserRoleChanged);
|
|
171
171
|
});
|
|
172
|
-
|
|
172
|
+
const handleMount = () => {
|
|
173
|
+
const { userRole } = roomService.roomStore.localUser;
|
|
174
|
+
if (userRole === TUIRole.kRoomOwner || userRole === TUIRole.kAdministrator) {
|
|
175
|
+
handleUpdateSeatApplicationList();
|
|
176
|
+
}
|
|
177
|
+
};
|
|
178
|
+
roomService.lifeCycleManager.on('mount', handleMount);
|
|
173
179
|
onUnmounted(() => {
|
|
174
180
|
roomEngine.instance?.off(TUIRoomEvents.onUserRoleChanged, onUserRoleChanged);
|
|
181
|
+
roomService.lifeCycleManager.off('mount', handleMount);
|
|
175
182
|
});
|
|
176
183
|
return {
|
|
177
184
|
t,
|
|
@@ -85,7 +85,7 @@ import logger from '../../../utils/common/logger';
|
|
|
85
85
|
const { t } = useI18n();
|
|
86
86
|
|
|
87
87
|
const roomStore = useRoomStore();
|
|
88
|
-
const { isAudience, hasOtherScreenShare } = storeToRefs(roomStore);
|
|
88
|
+
const { isAudience, hasOtherScreenShare, isGeneralUser, isScreenShareDisableForAllUser } = storeToRefs(roomStore);
|
|
89
89
|
const roomEngine = useGetRoomEngine();
|
|
90
90
|
|
|
91
91
|
const logPrefix = '[ScreenShareControl]';
|
|
@@ -125,6 +125,16 @@ async function toggleScreenShare() {
|
|
|
125
125
|
});
|
|
126
126
|
return;
|
|
127
127
|
}
|
|
128
|
+
|
|
129
|
+
if (isGeneralUser.value && isScreenShareDisableForAllUser.value) {
|
|
130
|
+
TUIMessage({
|
|
131
|
+
type: 'warning',
|
|
132
|
+
message: t('Failed to initiate screen sharing, currently only host/admin can share screen.'),
|
|
133
|
+
duration: MESSAGE_DURATION.LONG,
|
|
134
|
+
});
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
|
|
128
138
|
if (!(window as any).isHasScreen && process.platform === 'darwin') {
|
|
129
139
|
showPermissionVisible.value = true;
|
|
130
140
|
}
|
|
@@ -116,10 +116,6 @@ async function toggleMuteVideo() {
|
|
|
116
116
|
});
|
|
117
117
|
return;
|
|
118
118
|
}
|
|
119
|
-
// There is a list of camera
|
|
120
|
-
roomEngine.instance?.setLocalVideoView({
|
|
121
|
-
view: `${roomStore.localStream.userId}_${roomStore.localStream.streamType}`,
|
|
122
|
-
});
|
|
123
119
|
if (isMobile) {
|
|
124
120
|
if (isH5) {
|
|
125
121
|
const trtcCloud = roomEngine.instance?.getTRTCCloud();
|
|
@@ -152,9 +148,6 @@ async function onRequestReceived(eventInfo: { request: TUIRequest }) {
|
|
|
152
148
|
// Accept the host invitation and turn on the camera
|
|
153
149
|
async function handleAccept() {
|
|
154
150
|
roomStore.setCanControlSelfVideo(true);
|
|
155
|
-
roomEngine.instance?.setLocalVideoView({
|
|
156
|
-
view: `${roomStore.localStream.userId}_${roomStore.localStream.streamType}`,
|
|
157
|
-
});
|
|
158
151
|
await roomEngine.instance?.responseRemoteRequest({
|
|
159
152
|
requestId: requestOpenCameraRequestId.value,
|
|
160
153
|
agree: true,
|
|
@@ -9,40 +9,15 @@
|
|
|
9
9
|
></svg-icon>
|
|
10
10
|
</div>
|
|
11
11
|
<div v-if="showUserControl" class="user-control-container">
|
|
12
|
-
<div v-show="showEditNameContainer">
|
|
13
|
-
<div class="user-control-item-head" @click="showEditUserNameDialog">{{ t('Edit profile') }}</div>
|
|
14
|
-
</div>
|
|
15
12
|
<div class="user-control-item-foot" @click="$emit('log-out')">{{ t('Log out') }}</div>
|
|
16
13
|
</div>
|
|
17
|
-
<Dialog
|
|
18
|
-
v-model="showUserNameEdit"
|
|
19
|
-
:title="t('Edit profile')"
|
|
20
|
-
:modal="true"
|
|
21
|
-
width="480px"
|
|
22
|
-
:close-on-click-modal="true"
|
|
23
|
-
:append-to-body="true"
|
|
24
|
-
>
|
|
25
|
-
<div class="edit-content">
|
|
26
|
-
<span>{{ t('User Name') }}</span>
|
|
27
|
-
<tui-input v-model="tempUserName" class="edit-name-input" :placeholder="t('Please input user name')" />
|
|
28
|
-
</div>
|
|
29
|
-
<template #footer>
|
|
30
|
-
<tui-button class="button" size="default" @click="closeEditUserNameDialog">{{ t('Cancel') }}</tui-button>
|
|
31
|
-
<tui-button class="button" size="default" type="primary" @click="handleSaveUserName(tempUserName)">
|
|
32
|
-
{{ t('Save') }}
|
|
33
|
-
</tui-button>
|
|
34
|
-
</template>
|
|
35
|
-
</Dialog>
|
|
36
14
|
</div>
|
|
37
15
|
</template>
|
|
38
16
|
<script setup lang="ts">
|
|
39
|
-
import Dialog from '../../common/base/Dialog/index.vue';
|
|
40
17
|
import SvgIcon from '../../common/base/SvgIcon.vue';
|
|
41
18
|
import ArrowStrokeSelectDownIcon from '../../common/icons/ArrowStrokeSelectDownIcon.vue';
|
|
42
19
|
import useUserInfo from './useUserInfoHooks';
|
|
43
20
|
import Avatar from '../../common/Avatar.vue';
|
|
44
|
-
import TuiButton from '../../common/base/Button.vue';
|
|
45
|
-
import TuiInput from '../../common/base/Input.vue';
|
|
46
21
|
import { isInnerScene } from '../../../utils/constants';
|
|
47
22
|
import { roomService } from '../../../services';
|
|
48
23
|
import TUIMessage from '../../common/base/Message/index';
|
|
@@ -61,11 +36,8 @@ const roomStore = useRoomStore();
|
|
|
61
36
|
const {
|
|
62
37
|
t,
|
|
63
38
|
showUserControl,
|
|
64
|
-
showUserNameEdit,
|
|
65
39
|
userInfoRef,
|
|
66
|
-
tempUserName,
|
|
67
40
|
handleUserControl,
|
|
68
|
-
showEditUserNameDialog,
|
|
69
41
|
closeEditUserNameDialog,
|
|
70
42
|
} = useUserInfo();
|
|
71
43
|
|
|
@@ -73,31 +45,28 @@ const props = withDefaults(defineProps<{
|
|
|
73
45
|
userId: string,
|
|
74
46
|
userName: string,
|
|
75
47
|
avatarUrl?: string,
|
|
76
|
-
isShowEditName?: boolean,
|
|
77
48
|
}>(), {
|
|
78
|
-
isShowEditName: false,
|
|
79
49
|
});
|
|
80
|
-
const showEditNameContainer = isInnerScene && props.isShowEditName;
|
|
81
50
|
|
|
82
|
-
/**
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
**/
|
|
86
|
-
async function handleSaveUserName(userName: string) {
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
}
|
|
51
|
+
// /**
|
|
52
|
+
// * Save the new userName
|
|
53
|
+
// *
|
|
54
|
+
// **/
|
|
55
|
+
// async function handleSaveUserName(userName: string) {
|
|
56
|
+
// if (userName.length === 0) {
|
|
57
|
+
// TUIMessage({
|
|
58
|
+
// type: 'warning',
|
|
59
|
+
// message: t('Username length should be greater than 0'),
|
|
60
|
+
// duration: MESSAGE_DURATION.NORMAL,
|
|
61
|
+
// });
|
|
62
|
+
// return;
|
|
63
|
+
// }
|
|
64
|
+
// emits('update-user-name', userName);
|
|
65
|
+
// basicStore.setUserName(userName);
|
|
66
|
+
// TUIRoomEngine.setSelfInfo({ userName, avatarUrl: roomStore.localUser.avatarUrl || '' });
|
|
67
|
+
// roomStore.setLocalUser({ userName });
|
|
68
|
+
// closeEditUserNameDialog();
|
|
69
|
+
// }
|
|
101
70
|
|
|
102
71
|
</script>
|
|
103
72
|
<style lang="scss" scoped>
|