2022-09-16 11:12:27 -04:00
|
|
|
/*
|
2024-09-09 14:57:16 +01:00
|
|
|
Copyright 2024 New Vector Ltd.
|
2022-09-16 11:12:27 -04:00
|
|
|
Copyright 2022 The Matrix.org Foundation C.I.C.
|
|
|
|
|
|
2024-09-09 14:57:16 +01:00
|
|
|
SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only
|
|
|
|
|
Please see LICENSE files in the repository root for full details.
|
2022-09-16 11:12:27 -04:00
|
|
|
*/
|
|
|
|
|
|
2023-08-04 08:36:16 +01:00
|
|
|
import type { Room } from "matrix-js-sdk/src/matrix";
|
2022-09-16 11:12:27 -04:00
|
|
|
import SettingsStore from "../settings/SettingsStore";
|
2024-07-30 18:36:04 +01:00
|
|
|
import { useFeatureEnabled } from "../hooks/useSettings";
|
|
|
|
|
|
|
|
|
|
function checkIsVideoRoom(room: Room, elementCallVideoRoomsEnabled: boolean): boolean {
|
|
|
|
|
return room.isElementVideoRoom() || (elementCallVideoRoomsEnabled && room.isCallRoom());
|
|
|
|
|
}
|
2022-09-16 11:12:27 -04:00
|
|
|
|
2023-01-12 13:25:14 +00:00
|
|
|
export const isVideoRoom = (room: Room): boolean =>
|
2024-07-30 18:36:04 +01:00
|
|
|
checkIsVideoRoom(room, SettingsStore.getValue("feature_element_call_video_rooms"));
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Returns whether the given room is a video room based on the current feature flags.
|
|
|
|
|
* @param room The room to check.
|
|
|
|
|
* @param skipVideoRoomsEnabledCheck If true, the check for the video rooms feature flag is skipped,
|
|
|
|
|
* useful for suggesting to the user to enable the labs flag.
|
|
|
|
|
*/
|
|
|
|
|
export const useIsVideoRoom = (room?: Room, skipVideoRoomsEnabledCheck = false): boolean => {
|
|
|
|
|
const videoRoomsEnabled = useFeatureEnabled("feature_video_rooms");
|
|
|
|
|
const elementCallVideoRoomsEnabled = useFeatureEnabled("feature_element_call_video_rooms"); // react to updates as isVideoRoom reads the value itself
|
|
|
|
|
|
|
|
|
|
if (!room) return false;
|
|
|
|
|
if (!videoRoomsEnabled && !skipVideoRoomsEnabledCheck) return false;
|
|
|
|
|
return checkIsVideoRoom(room, elementCallVideoRoomsEnabled);
|
|
|
|
|
};
|