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
JavaScript
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
};