UNPKG

roomkit-web-vue3

Version:

<h1 align="center"> TUIRoomKit</h1> Conference (TUIRoomKit) is a product suitable for multi-person audio and video conversation scenarios such as business meetings, webinars, and online education. By integrating this product, you can add room management,

79 lines (78 loc) 2.85 kB
import { ref, computed } from "vue"; import { TUIAudioRoute } from "@tencentcloud/tuiroom-engine-js"; import { MediaDeviceState } from "../../type/MediaDeviceSetting.mjs"; import { isGetUserMediaSupported, isEnumerateDevicesSupported } from "../../../utils/mediaAbility.mjs"; import "../../../services/main.mjs"; import { roomService } from "../../../services/roomService.mjs"; import "../../../locales/index.mjs"; import "../../../utils/environment.mjs"; import "mitt"; import "../../../services/manager/roomActionManager.mjs"; import "@tencentcloud/tui-core"; const testAudioVolume = ref(0); const microphoneList = ref([]); const currentMicrophoneDevice = ref(null); const isMicrophoneTesting = ref(false); const speakerList = ref([]); const currentSpeakerDevice = ref(null); const currentAudioRoute = ref( TUIAudioRoute.kAudioRouteSpeakerphone ); const isSpeakerTesting = ref(false); const isMicrophoneListInitiated = ref(false); const isSpeakerListInitiated = ref(false); const currentMicrophoneId = computed(() => { return currentMicrophoneDevice.value && currentMicrophoneDevice.value.deviceId || ""; }); const currentSpeakerId = computed(() => { return currentSpeakerDevice.value && currentSpeakerDevice.value.deviceId || ""; }); const microphoneState = computed(() => { var _a, _b, _c; if (!isGetUserMediaSupported || !isEnumerateDevicesSupported) { return MediaDeviceState.NotSupportCapture; } if (isMicrophoneListInitiated.value && microphoneList.value.length === 0) { return MediaDeviceState.NoDeviceDetected; } if (roomService.roomStore.isMicrophoneDisableForAllUser && !((_a = roomService.roomStore.localStream) == null ? void 0 : _a.hasAudioStream) && roomService.roomStore.isGeneralUser) { return MediaDeviceState.DeviceOffAndDisabled; } if (!roomService.roomStore.isMaster && roomService.roomStore.isAudience) { return MediaDeviceState.DeviceOffAndDisabled; } if ((_b = roomService.roomStore.localStream) == null ? void 0 : _b.hasAudioStream) { return MediaDeviceState.DeviceOn; } if (!((_c = roomService.roomStore.localStream) == null ? void 0 : _c.hasAudioStream)) { return MediaDeviceState.DeviceOff; } return MediaDeviceState.DeviceOff; }); const audioVolume = computed(() => { if (isMicrophoneTesting.value) { return testAudioVolume.value; } return roomService.roomStore.userVolumeObj[roomService.roomStore.localUser.userId]; }); function useAudioDeviceManagerState() { return { microphoneState, microphoneList, currentMicrophoneDevice, currentMicrophoneId, audioVolume, isMicrophoneTesting, speakerList, currentSpeakerDevice, currentSpeakerId, currentAudioRoute, isSpeakerTesting }; } export { useAudioDeviceManagerState as default, isMicrophoneListInitiated, isSpeakerListInitiated, testAudioVolume };