Files
element-web/src/utils/media/requestMediaPermissions.tsx
David Langley 491f0cd08a Change license (#13)
* Copyright headers 1

* Licence headers 2

* Copyright Headers 3

* Copyright Headers 4

* Copyright Headers 5

* Copyright Headers 6

* Copyright headers 7

* Add copyright headers for html and config file

* Replace license files and update package.json

* Update with CLA

* lint
2024-09-09 13:57:16 +00:00

49 lines
1.4 KiB
TypeScript

/*
Copyright 2024 New Vector Ltd.
Copyright 2022 The Matrix.org Foundation C.I.C.
SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only
Please see LICENSE files in the repository root for full details.
*/
import { logger } from "matrix-js-sdk/src/logger";
import ErrorDialog from "../../components/views/dialogs/ErrorDialog";
import { _t } from "../../languageHandler";
import Modal from "../../Modal";
import SdkConfig from "../../SdkConfig";
export const requestMediaPermissions = async (video = true): Promise<MediaStream | undefined> => {
let stream: MediaStream | undefined;
let error: any;
try {
stream = await navigator.mediaDevices.getUserMedia({
audio: true,
video,
});
} catch (err: any) {
// user likely doesn't have a webcam,
// we should still allow to select a microphone
if (video && err.name === "NotFoundError") {
try {
stream = await navigator.mediaDevices.getUserMedia({ audio: true });
} catch (err) {
error = err;
}
} else {
error = err;
}
}
if (error) {
logger.log("Failed to list userMedia devices", error);
const brand = SdkConfig.get().brand;
Modal.createDialog(ErrorDialog, {
title: _t("voip|no_media_perms_title"),
description: _t("voip|no_media_perms_description", { brand }),
});
}
return stream;
};