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