UNPKG

@tencentcloud/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) 3.35 kB
"use strict"; Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } }); const Vue = require("vue"); const TUIRoomEngine = require("@tencentcloud/tuiroom-engine-js"); const MediaDeviceSetting = require("../../type/MediaDeviceSetting.js"); const mediaAbility = require("../../../utils/mediaAbility.js"); require("../../../services/main.js"); const roomService = require("../../../services/roomService.js"); require("../../../locales/index.js"); require("../../../utils/environment.js"); require("mitt"); require("../../../services/manager/roomActionManager.js"); require("@tencentcloud/tui-core"); const testAudioVolume = Vue.ref(0); const microphoneList = Vue.ref([]); const currentMicrophoneDevice = Vue.ref(null); const isMicrophoneTesting = Vue.ref(false); const speakerList = Vue.ref([]); const currentSpeakerDevice = Vue.ref(null); const currentAudioRoute = Vue.ref( TUIRoomEngine.TUIAudioRoute.kAudioRouteSpeakerphone ); const isSpeakerTesting = Vue.ref(false); const isMicrophoneListInitiated = Vue.ref(false); const isSpeakerListInitiated = Vue.ref(false); const currentMicrophoneId = Vue.computed(() => { return currentMicrophoneDevice.value && currentMicrophoneDevice.value.deviceId || ""; }); const currentSpeakerId = Vue.computed(() => { return currentSpeakerDevice.value && currentSpeakerDevice.value.deviceId || ""; }); const microphoneState = Vue.computed(() => { var _a, _b, _c; if (!mediaAbility.isGetUserMediaSupported || !mediaAbility.isEnumerateDevicesSupported) { return MediaDeviceSetting.MediaDeviceState.NotSupportCapture; } if (isMicrophoneListInitiated.value && microphoneList.value.length === 0) { return MediaDeviceSetting.MediaDeviceState.NoDeviceDetected; } if (roomService.roomService.roomStore.isMicrophoneDisableForAllUser && !((_a = roomService.roomService.roomStore.localStream) == null ? void 0 : _a.hasAudioStream) && roomService.roomService.roomStore.isGeneralUser) { return MediaDeviceSetting.MediaDeviceState.DeviceOffAndDisabled; } if (!roomService.roomService.roomStore.isMaster && roomService.roomService.roomStore.isAudience) { return MediaDeviceSetting.MediaDeviceState.DeviceOffAndDisabled; } if ((_b = roomService.roomService.roomStore.localStream) == null ? void 0 : _b.hasAudioStream) { return MediaDeviceSetting.MediaDeviceState.DeviceOn; } if (!((_c = roomService.roomService.roomStore.localStream) == null ? void 0 : _c.hasAudioStream)) { return MediaDeviceSetting.MediaDeviceState.DeviceOff; } return MediaDeviceSetting.MediaDeviceState.DeviceOff; }); const audioVolume = Vue.computed(() => { if (isMicrophoneTesting.value) { return testAudioVolume.value; } return roomService.roomService.roomStore.userVolumeObj[roomService.roomService.roomStore.localUser.userId]; }); function useAudioDeviceManagerState() { return { microphoneState, microphoneList, currentMicrophoneDevice, currentMicrophoneId, audioVolume, isMicrophoneTesting, speakerList, currentSpeakerDevice, currentSpeakerId, currentAudioRoute, isSpeakerTesting }; } exports.default = useAudioDeviceManagerState; exports.isMicrophoneListInitiated = isMicrophoneListInitiated; exports.isSpeakerListInitiated = isSpeakerListInitiated; exports.testAudioVolume = testAudioVolume;