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