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,
78 lines (77 loc) • 2.69 kB
JavaScript
import { ref, computed } from "vue";
import { TUIVideoQuality } from "@tencentcloud/tuiroom-engine-js";
import i18n from "../../../locales/index.mjs";
import "../../../utils/environment.mjs";
import { isGetUserMediaSupported, isEnumerateDevicesSupported } from "../../../utils/mediaAbility.mjs";
import { MediaDeviceState } from "../../type/MediaDeviceSetting.mjs";
import "../../../services/main.mjs";
import { roomService } from "../../../services/roomService.mjs";
import "mitt";
import "../../../services/manager/roomActionManager.mjs";
import "@tencentcloud/tui-core";
const { t } = i18n.global;
const cameraList = ref([]);
const currentCameraDevice = ref();
const currentCameraId = computed(() => {
return currentCameraDevice.value && currentCameraDevice.value.deviceId || "";
});
const isFrontCamera = ref(true);
const isLocalMirror = ref(true);
const isCameraTestLoading = ref(false);
const isCameraTesting = ref(false);
const localVideoQuality = ref(
TUIVideoQuality.kVideoQuality_360p
);
const videoQualityList = computed(() => [
{ label: t("Low Definition"), value: TUIVideoQuality.kVideoQuality_360p },
{
label: t("Standard Definition"),
value: TUIVideoQuality.kVideoQuality_540p
},
{ label: t("High Definition"), value: TUIVideoQuality.kVideoQuality_720p },
{
label: t("Super Definition"),
value: TUIVideoQuality.kVideoQuality_1080p
}
]);
const isCameraListInitiated = ref(false);
const cameraState = computed(() => {
var _a, _b, _c;
if (!isGetUserMediaSupported || !isEnumerateDevicesSupported) {
return MediaDeviceState.NotSupportCapture;
}
if (isCameraListInitiated.value && cameraList.value.length === 0) {
return MediaDeviceState.NoDeviceDetected;
}
if (roomService.roomStore.isCameraDisableForAllUser && !((_a = roomService.roomStore.localStream) == null ? void 0 : _a.hasVideoStream) && roomService.roomStore.isGeneralUser) {
return MediaDeviceState.DeviceOffAndDisabled;
}
if (roomService.roomStore.isAudience) {
return MediaDeviceState.DeviceOffAndDisabled;
}
if ((_b = roomService.roomStore.localStream) == null ? void 0 : _b.hasVideoStream) {
return MediaDeviceState.DeviceOn;
}
if (!((_c = roomService.roomStore.localStream) == null ? void 0 : _c.hasVideoStream)) {
return MediaDeviceState.DeviceOff;
}
return MediaDeviceState.DeviceOff;
});
function useVideoDeviceManagerState() {
return {
cameraList,
currentCameraDevice,
currentCameraId,
isFrontCamera,
cameraState,
isLocalMirror,
localVideoQuality,
videoQualityList,
isCameraTesting,
isCameraTestLoading
};
}
export {
useVideoDeviceManagerState as default,
isCameraListInitiated
};