UNPKG

matrix-react-sdk

Version:
68 lines (66 loc) 13.3 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.useAudioDeviceSelection = void 0; var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _react = require("react"); var _languageHandler = require("../languageHandler"); var _MediaDeviceHandler = _interopRequireWildcard(require("../MediaDeviceHandler")); var _requestMediaPermissions = require("../utils/media/requestMediaPermissions"); function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); } function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } /* 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. */ const useAudioDeviceSelection = onDeviceChanged => { const shouldRequestPermissionsRef = (0, _react.useRef)(true); const [state, setState] = (0, _react.useState)({ devices: [], device: null }); if (shouldRequestPermissionsRef.current) { shouldRequestPermissionsRef.current = false; (0, _requestMediaPermissions.requestMediaPermissions)(false).then(stream => { _MediaDeviceHandler.default.getDevices().then(devices => { if (!devices) return; const { audioinput } = devices; _MediaDeviceHandler.default.getDefaultDevice(audioinput); const deviceFromSettings = _MediaDeviceHandler.default.getAudioInput(); const device = audioinput.find(d => { return d.deviceId === deviceFromSettings; }) || audioinput[0]; setState(_objectSpread(_objectSpread({}, state), {}, { devices: audioinput, device })); stream?.getTracks().forEach(t => t.stop()); }); }); } const setDevice = device => { const shouldNotify = device.deviceId !== state.device?.deviceId; _MediaDeviceHandler.default.instance.setDevice(device.deviceId, _MediaDeviceHandler.MediaDeviceKindEnum.AudioInput); setState(_objectSpread(_objectSpread({}, state), {}, { device })); if (shouldNotify) { onDeviceChanged?.(device); } }; return { currentDevice: state.device, currentDeviceLabel: state.device?.label || (0, _languageHandler._t)("voip|default_device"), devices: state.devices, setDevice }; }; exports.useAudioDeviceSelection = useAudioDeviceSelection; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJyZXF1aXJlIiwiX2xhbmd1YWdlSGFuZGxlciIsIl9NZWRpYURldmljZUhhbmRsZXIiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9yZXF1ZXN0TWVkaWFQZXJtaXNzaW9ucyIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsInVzZUF1ZGlvRGV2aWNlU2VsZWN0aW9uIiwib25EZXZpY2VDaGFuZ2VkIiwic2hvdWxkUmVxdWVzdFBlcm1pc3Npb25zUmVmIiwidXNlUmVmIiwic3RhdGUiLCJzZXRTdGF0ZSIsInVzZVN0YXRlIiwiZGV2aWNlcyIsImRldmljZSIsImN1cnJlbnQiLCJyZXF1ZXN0TWVkaWFQZXJtaXNzaW9ucyIsInRoZW4iLCJzdHJlYW0iLCJNZWRpYURldmljZUhhbmRsZXIiLCJnZXREZXZpY2VzIiwiYXVkaW9pbnB1dCIsImdldERlZmF1bHREZXZpY2UiLCJkZXZpY2VGcm9tU2V0dGluZ3MiLCJnZXRBdWRpb0lucHV0IiwiZmluZCIsImQiLCJkZXZpY2VJZCIsImdldFRyYWNrcyIsInN0b3AiLCJzZXREZXZpY2UiLCJzaG91bGROb3RpZnkiLCJpbnN0YW5jZSIsIk1lZGlhRGV2aWNlS2luZEVudW0iLCJBdWRpb0lucHV0IiwiY3VycmVudERldmljZSIsImN1cnJlbnREZXZpY2VMYWJlbCIsImxhYmVsIiwiX3QiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hvb2tzL3VzZUF1ZGlvRGV2aWNlU2VsZWN0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qXG5Db3B5cmlnaHQgMjAyNCBOZXcgVmVjdG9yIEx0ZC5cbkNvcHlyaWdodCAyMDIyIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cblNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBR1BMLTMuMC1vbmx5IE9SIEdQTC0zLjAtb25seVxuUGxlYXNlIHNlZSBMSUNFTlNFIGZpbGVzIGluIHRoZSByZXBvc2l0b3J5IHJvb3QgZm9yIGZ1bGwgZGV0YWlscy5cbiovXG5cbmltcG9ydCB7IHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgX3QgfSBmcm9tIFwiLi4vbGFuZ3VhZ2VIYW5kbGVyXCI7XG5pbXBvcnQgTWVkaWFEZXZpY2VIYW5kbGVyLCB7IE1lZGlhRGV2aWNlS2luZEVudW0gfSBmcm9tIFwiLi4vTWVkaWFEZXZpY2VIYW5kbGVyXCI7XG5pbXBvcnQgeyByZXF1ZXN0TWVkaWFQZXJtaXNzaW9ucyB9IGZyb20gXCIuLi91dGlscy9tZWRpYS9yZXF1ZXN0TWVkaWFQZXJtaXNzaW9uc1wiO1xuXG5pbnRlcmZhY2UgU3RhdGUge1xuICAgIGRldmljZXM6IE1lZGlhRGV2aWNlSW5mb1tdO1xuICAgIGRldmljZTogTWVkaWFEZXZpY2VJbmZvIHwgbnVsbDtcbn1cblxuZXhwb3J0IGNvbnN0IHVzZUF1ZGlvRGV2aWNlU2VsZWN0aW9uID0gKFxuICAgIG9uRGV2aWNlQ2hhbmdlZD86IChkZXZpY2U6IE1lZGlhRGV2aWNlSW5mbykgPT4gdm9pZCxcbik6IHtcbiAgICBjdXJyZW50RGV2aWNlOiBNZWRpYURldmljZUluZm8gfCBudWxsO1xuICAgIGN1cnJlbnREZXZpY2VMYWJlbDogc3RyaW5nO1xuICAgIGRldmljZXM6IE1lZGlhRGV2aWNlSW5mb1tdO1xuICAgIHNldERldmljZShkZXZpY2U6IE1lZGlhRGV2aWNlSW5mbyk6IHZvaWQ7XG59ID0+IHtcbiAgICBjb25zdCBzaG91bGRSZXF1ZXN0UGVybWlzc2lvbnNSZWYgPSB1c2VSZWY8Ym9vbGVhbj4odHJ1ZSk7XG4gICAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV0gPSB1c2VTdGF0ZTxTdGF0ZT4oe1xuICAgICAgICBkZXZpY2VzOiBbXSxcbiAgICAgICAgZGV2aWNlOiBudWxsLFxuICAgIH0pO1xuXG4gICAgaWYgKHNob3VsZFJlcXVlc3RQZXJtaXNzaW9uc1JlZi5jdXJyZW50KSB7XG4gICAgICAgIHNob3VsZFJlcXVlc3RQZXJtaXNzaW9uc1JlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgICAgIHJlcXVlc3RNZWRpYVBlcm1pc3Npb25zKGZhbHNlKS50aGVuKChzdHJlYW06IE1lZGlhU3RyZWFtIHwgdW5kZWZpbmVkKSA9PiB7XG4gICAgICAgICAgICBNZWRpYURldmljZUhhbmRsZXIuZ2V0RGV2aWNlcygpLnRoZW4oKGRldmljZXMpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWRldmljZXMpIHJldHVybjtcbiAgICAgICAgICAgICAgICBjb25zdCB7IGF1ZGlvaW5wdXQgfSA9IGRldmljZXM7XG4gICAgICAgICAgICAgICAgTWVkaWFEZXZpY2VIYW5kbGVyLmdldERlZmF1bHREZXZpY2UoYXVkaW9pbnB1dCk7XG4gICAgICAgICAgICAgICAgY29uc3QgZGV2aWNlRnJvbVNldHRpbmdzID0gTWVkaWFEZXZpY2VIYW5kbGVyLmdldEF1ZGlvSW5wdXQoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBkZXZpY2UgPVxuICAgICAgICAgICAgICAgICAgICBhdWRpb2lucHV0LmZpbmQoKGQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkLmRldmljZUlkID09PSBkZXZpY2VGcm9tU2V0dGluZ3M7XG4gICAgICAgICAgICAgICAgICAgIH0pIHx8IGF1ZGlvaW5wdXRbMF07XG4gICAgICAgICAgICAgICAgc2V0U3RhdGUoe1xuICAgICAgICAgICAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgZGV2aWNlczogYXVkaW9pbnB1dCxcbiAgICAgICAgICAgICAgICAgICAgZGV2aWNlLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHN0cmVhbT8uZ2V0VHJhY2tzKCkuZm9yRWFjaCgodCkgPT4gdC5zdG9wKCkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IHNldERldmljZSA9IChkZXZpY2U6IE1lZGlhRGV2aWNlSW5mbyk6IHZvaWQgPT4ge1xuICAgICAgICBjb25zdCBzaG91bGROb3RpZnkgPSBkZXZpY2UuZGV2aWNlSWQgIT09IHN0YXRlLmRldmljZT8uZGV2aWNlSWQ7XG4gICAgICAgIE1lZGlhRGV2aWNlSGFuZGxlci5pbnN0YW5jZS5zZXREZXZpY2UoZGV2aWNlLmRldmljZUlkLCBNZWRpYURldmljZUtpbmRFbnVtLkF1ZGlvSW5wdXQpO1xuXG4gICAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgZGV2aWNlLFxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoc2hvdWxkTm90aWZ5KSB7XG4gICAgICAgICAgICBvbkRldmljZUNoYW5nZWQ/LihkZXZpY2UpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIHJldHVybiB7XG4gICAgICAgIGN1cnJlbnREZXZpY2U6IHN0YXRlLmRldmljZSxcbiAgICAgICAgY3VycmVudERldmljZUxhYmVsOiBzdGF0ZS5kZXZpY2U/LmxhYmVsIHx8IF90KFwidm9pcHxkZWZhdWx0X2RldmljZVwiKSxcbiAgICAgICAgZGV2aWNlczogc3RhdGUuZGV2aWNlcyxcbiAgICAgICAgc2V0RGV2aWNlLFxuICAgIH07XG59O1xu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