UNPKG

matrix-react-sdk

Version:
71 lines (65 loc) 10 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.startNewVoiceBroadcastRecording = void 0; var _matrix = require("matrix-js-sdk/src/matrix"); var _utils = require("matrix-js-sdk/src/utils"); var _ = require(".."); var _checkVoiceBroadcastPreConditions = require("./checkVoiceBroadcastPreConditions"); /* 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 startBroadcast = async (room, client, recordingsStore) => { const { promise, resolve, reject } = (0, _utils.defer)(); const userId = client.getUserId(); if (!userId) { reject("unable to start voice broadcast if current user is unknown"); return promise; } let result = null; const onRoomStateEvents = () => { if (!result) return; const voiceBroadcastEvent = room.currentState.getStateEvents(_.VoiceBroadcastInfoEventType, userId); if (voiceBroadcastEvent?.getId() === result.event_id) { room.off(_matrix.RoomStateEvent.Events, onRoomStateEvents); const recording = new _.VoiceBroadcastRecording(voiceBroadcastEvent, client); recordingsStore.setCurrent(recording); recording.start(); resolve(recording); } }; room.on(_matrix.RoomStateEvent.Events, onRoomStateEvents); // XXX Michael W: refactor to live event result = await client.sendStateEvent(room.roomId, _.VoiceBroadcastInfoEventType, { device_id: client.getDeviceId(), state: _.VoiceBroadcastInfoState.Started, chunk_length: (0, _.getChunkLength)() }, userId); return promise; }; /** * Starts a new Voice Broadcast Recording, if * - the user has the permissions to do so in the room * - the user is not already recording a voice broadcast * - there is no other broadcast being recorded in the room, yet * Sends a voice_broadcast_info state event and waits for the event to actually appear in the room state. */ const startNewVoiceBroadcastRecording = async (room, client, playbacksStore, recordingsStore) => { if (!(await (0, _checkVoiceBroadcastPreConditions.checkVoiceBroadcastPreConditions)(room, client, recordingsStore))) { return null; } // pause and clear current playback (if any) playbacksStore.getCurrent()?.pause(); playbacksStore.clearCurrent(); return startBroadcast(room, client, recordingsStore); }; exports.startNewVoiceBroadcastRecording = startNewVoiceBroadcastRecording; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbWF0cml4IiwicmVxdWlyZSIsIl91dGlscyIsIl8iLCJfY2hlY2tWb2ljZUJyb2FkY2FzdFByZUNvbmRpdGlvbnMiLCJzdGFydEJyb2FkY2FzdCIsInJvb20iLCJjbGllbnQiLCJyZWNvcmRpbmdzU3RvcmUiLCJwcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsImRlZmVyIiwidXNlcklkIiwiZ2V0VXNlcklkIiwicmVzdWx0Iiwib25Sb29tU3RhdGVFdmVudHMiLCJ2b2ljZUJyb2FkY2FzdEV2ZW50IiwiY3VycmVudFN0YXRlIiwiZ2V0U3RhdGVFdmVudHMiLCJWb2ljZUJyb2FkY2FzdEluZm9FdmVudFR5cGUiLCJnZXRJZCIsImV2ZW50X2lkIiwib2ZmIiwiUm9vbVN0YXRlRXZlbnQiLCJFdmVudHMiLCJyZWNvcmRpbmciLCJWb2ljZUJyb2FkY2FzdFJlY29yZGluZyIsInNldEN1cnJlbnQiLCJzdGFydCIsIm9uIiwic2VuZFN0YXRlRXZlbnQiLCJyb29tSWQiLCJkZXZpY2VfaWQiLCJnZXREZXZpY2VJZCIsInN0YXRlIiwiVm9pY2VCcm9hZGNhc3RJbmZvU3RhdGUiLCJTdGFydGVkIiwiY2h1bmtfbGVuZ3RoIiwiZ2V0Q2h1bmtMZW5ndGgiLCJzdGFydE5ld1ZvaWNlQnJvYWRjYXN0UmVjb3JkaW5nIiwicGxheWJhY2tzU3RvcmUiLCJjaGVja1ZvaWNlQnJvYWRjYXN0UHJlQ29uZGl0aW9ucyIsImdldEN1cnJlbnQiLCJwYXVzZSIsImNsZWFyQ3VycmVudCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdm9pY2UtYnJvYWRjYXN0L3V0aWxzL3N0YXJ0TmV3Vm9pY2VCcm9hZGNhc3RSZWNvcmRpbmcudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbkNvcHlyaWdodCAyMDI0IE5ldyBWZWN0b3IgTHRkLlxuQ29weXJpZ2h0IDIwMjIgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFHUEwtMy4wLW9ubHkgT1IgR1BMLTMuMC1vbmx5XG5QbGVhc2Ugc2VlIExJQ0VOU0UgZmlsZXMgaW4gdGhlIHJlcG9zaXRvcnkgcm9vdCBmb3IgZnVsbCBkZXRhaWxzLlxuKi9cblxuaW1wb3J0IHsgSVNlbmRFdmVudFJlc3BvbnNlLCBNYXRyaXhDbGllbnQsIFJvb20sIFJvb21TdGF0ZUV2ZW50IH0gZnJvbSBcIm1hdHJpeC1qcy1zZGsvc3JjL21hdHJpeFwiO1xuaW1wb3J0IHsgZGVmZXIgfSBmcm9tIFwibWF0cml4LWpzLXNkay9zcmMvdXRpbHNcIjtcblxuaW1wb3J0IHtcbiAgICBWb2ljZUJyb2FkY2FzdEluZm9FdmVudENvbnRlbnQsXG4gICAgVm9pY2VCcm9hZGNhc3RJbmZvRXZlbnRUeXBlLFxuICAgIFZvaWNlQnJvYWRjYXN0SW5mb1N0YXRlLFxuICAgIFZvaWNlQnJvYWRjYXN0UmVjb3JkaW5nc1N0b3JlLFxuICAgIFZvaWNlQnJvYWRjYXN0UmVjb3JkaW5nLFxuICAgIGdldENodW5rTGVuZ3RoLFxuICAgIFZvaWNlQnJvYWRjYXN0UGxheWJhY2tzU3RvcmUsXG59IGZyb20gXCIuLlwiO1xuaW1wb3J0IHsgY2hlY2tWb2ljZUJyb2FkY2FzdFByZUNvbmRpdGlvbnMgfSBmcm9tIFwiLi9jaGVja1ZvaWNlQnJvYWRjYXN0UHJlQ29uZGl0aW9uc1wiO1xuXG5jb25zdCBzdGFydEJyb2FkY2FzdCA9IGFzeW5jIChcbiAgICByb29tOiBSb29tLFxuICAgIGNsaWVudDogTWF0cml4Q2xpZW50LFxuICAgIHJlY29yZGluZ3NTdG9yZTogVm9pY2VCcm9hZGNhc3RSZWNvcmRpbmdzU3RvcmUsXG4pOiBQcm9taXNlPFZvaWNlQnJvYWRjYXN0UmVjb3JkaW5nPiA9PiB7XG4gICAgY29uc3QgeyBwcm9taXNlLCByZXNvbHZlLCByZWplY3QgfSA9IGRlZmVyPFZvaWNlQnJvYWRjYXN0UmVjb3JkaW5nPigpO1xuXG4gICAgY29uc3QgdXNlcklkID0gY2xpZW50LmdldFVzZXJJZCgpO1xuXG4gICAgaWYgKCF1c2VySWQpIHtcbiAgICAgICAgcmVqZWN0KFwidW5hYmxlIHRvIHN0YXJ0IHZvaWNlIGJyb2FkY2FzdCBpZiBjdXJyZW50IHVzZXIgaXMgdW5rbm93blwiKTtcbiAgICAgICAgcmV0dXJuIHByb21pc2U7XG4gICAgfVxuXG4gICAgbGV0IHJlc3VsdDogSVNlbmRFdmVudFJlc3BvbnNlIHwgbnVsbCA9IG51bGw7XG5cbiAgICBjb25zdCBvblJvb21TdGF0ZUV2ZW50cyA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgaWYgKCFyZXN1bHQpIHJldHVybjtcblxuICAgICAgICBjb25zdCB2b2ljZUJyb2FkY2FzdEV2ZW50ID0gcm9vbS5jdXJyZW50U3RhdGUuZ2V0U3RhdGVFdmVudHMoVm9pY2VCcm9hZGNhc3RJbmZvRXZlbnRUeXBlLCB1c2VySWQpO1xuXG4gICAgICAgIGlmICh2b2ljZUJyb2FkY2FzdEV2ZW50Py5nZXRJZCgpID09PSByZXN1bHQuZXZlbnRfaWQpIHtcbiAgICAgICAgICAgIHJvb20ub2ZmKFJvb21TdGF0ZUV2ZW50LkV2ZW50cywgb25Sb29tU3RhdGVFdmVudHMpO1xuICAgICAgICAgICAgY29uc3QgcmVjb3JkaW5nID0gbmV3IFZvaWNlQnJvYWRjYXN0UmVjb3JkaW5nKHZvaWNlQnJvYWRjYXN0RXZlbnQsIGNsaWVudCk7XG4gICAgICAgICAgICByZWNvcmRpbmdzU3RvcmUuc2V0Q3VycmVudChyZWNvcmRpbmcpO1xuICAgICAgICAgICAgcmVjb3JkaW5nLnN0YXJ0KCk7XG4gICAgICAgICAgICByZXNvbHZlKHJlY29yZGluZyk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgcm9vbS5vbihSb29tU3RhdGVFdmVudC5FdmVudHMsIG9uUm9vbVN0YXRlRXZlbnRzKTtcblxuICAgIC8vIFhYWCBNaWNoYWVsIFc6IHJlZmFjdG9yIHRvIGxpdmUgZXZlbnRcbiAgICByZXN1bHQgPSBhd2FpdCBjbGllbnQuc2VuZFN0YXRlRXZlbnQoXG4gICAgICAgIHJvb20ucm9vbUlkLFxuICAgICAgICBWb2ljZUJyb2FkY2FzdEluZm9FdmVudFR5cGUsXG4gICAgICAgIHtcbiAgICAgICAgICAgIGRldmljZV9pZDogY2xpZW50LmdldERldmljZUlkKCksXG4gICAgICAgICAgICBzdGF0ZTogVm9pY2VCcm9hZGNhc3RJbmZvU3RhdGUuU3RhcnRlZCxcbiAgICAgICAgICAgIGNodW5rX2xlbmd0aDogZ2V0Q2h1bmtMZW5ndGgoKSxcbiAgICAgICAgfSBhcyBWb2ljZUJyb2FkY2FzdEluZm9FdmVudENvbnRlbnQsXG4gICAgICAgIHVzZXJJZCxcbiAgICApO1xuXG4gICAgcmV0dXJuIHByb21pc2U7XG59O1xuXG4vKipcbiAqIFN0YXJ0cyBhIG5ldyBWb2ljZSBCcm9hZGNhc3QgUmVjb3JkaW5nLCBpZlxuICogLSB0aGUgdXNlciBoYXMgdGhlIHBlcm1pc3Npb25zIHRvIGRvIHNvIGluIHRoZSByb29tXG4gKiAtIHRoZSB1c2VyIGlzIG5vdCBhbHJlYWR5IHJlY29yZGluZyBhIHZvaWNlIGJyb2FkY2FzdFxuICogLSB0aGVyZSBpcyBubyBvdGhlciBicm9hZGNhc3QgYmVpbmcgcmVjb3JkZWQgaW4gdGhlIHJvb20sIHlldFxuICogU2VuZHMgYSB2b2ljZV9icm9hZGNhc3RfaW5mbyBzdGF0ZSBldmVudCBhbmQgd2FpdHMgZm9yIHRoZSBldmVudCB0byBhY3R1YWxseSBhcHBlYXIgaW4gdGhlIHJvb20gc3RhdGUuXG4gKi9cbmV4cG9ydCBjb25zdCBzdGFydE5ld1ZvaWNlQnJvYWRjYXN0UmVjb3JkaW5nID0gYXN5bmMgKFxuICAgIHJvb206IFJvb20sXG4gICAgY2xpZW50OiBNYXRyaXhDbGllbnQsXG4gICAgcGxheWJhY2tzU3RvcmU6IFZvaWNlQnJvYWRjYXN0UGxheWJhY2tzU3RvcmUsXG4gICAgcmVjb3JkaW5nc1N0b3JlOiBWb2ljZUJyb2FkY2FzdFJlY29yZGluZ3NTdG9yZSxcbik6IFByb21pc2U8Vm9pY2VCcm9hZGNhc3RSZWNvcmRpbmcgfCBudWxsPiA9PiB7XG4gICAgaWYgKCEoYXdhaXQgY2hlY2tWb2ljZUJyb2FkY2FzdFByZUNvbmRpdGlvbnMocm9vbSwgY2xpZW50LCByZWNvcmRpbmdzU3RvcmUpKSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBwYXVzZSBhbmQgY2xlYXIgY3VycmVudCBwbGF5YmFjayAoaWYgYW55KVxuICAgIHBsYXliYWNrc1N0b3JlLmdldEN1cnJlbnQoKT8ucGF1c2UoKTtcbiAgICBwbGF5YmFja3NTdG9yZS5jbGVhckN1cnJlbnQoKTtcblxuICAgIHJldHVybiBzdGFydEJyb2FkY2FzdChyb29tLCBjbGllbnQsIHJlY29yZGluZ3NTdG9yZSk7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFRQSxJQUFBQSxPQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxNQUFBLEdBQUFELE9BQUE7QUFFQSxJQUFBRSxDQUFBLEdBQUFGLE9BQUE7QUFTQSxJQUFBRyxpQ0FBQSxHQUFBSCxPQUFBO0FBcEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQWdCQSxNQUFNSSxjQUFjLEdBQUcsTUFBQUEsQ0FDbkJDLElBQVUsRUFDVkMsTUFBb0IsRUFDcEJDLGVBQThDLEtBQ1g7RUFDbkMsTUFBTTtJQUFFQyxPQUFPO0lBQUVDLE9BQU87SUFBRUM7RUFBTyxDQUFDLEdBQUcsSUFBQUMsWUFBSyxFQUEwQixDQUFDO0VBRXJFLE1BQU1DLE1BQU0sR0FBR04sTUFBTSxDQUFDTyxTQUFTLENBQUMsQ0FBQztFQUVqQyxJQUFJLENBQUNELE1BQU0sRUFBRTtJQUNURixNQUFNLENBQUMsNERBQTRELENBQUM7SUFDcEUsT0FBT0YsT0FBTztFQUNsQjtFQUVBLElBQUlNLE1BQWlDLEdBQUcsSUFBSTtFQUU1QyxNQUFNQyxpQkFBaUIsR0FBR0EsQ0FBQSxLQUFZO0lBQ2xDLElBQUksQ0FBQ0QsTUFBTSxFQUFFO0lBRWIsTUFBTUUsbUJBQW1CLEdBQUdYLElBQUksQ0FBQ1ksWUFBWSxDQUFDQyxjQUFjLENBQUNDLDZCQUEyQixFQUFFUCxNQUFNLENBQUM7SUFFakcsSUFBSUksbUJBQW1CLEVBQUVJLEtBQUssQ0FBQyxDQUFDLEtBQUtOLE1BQU0sQ0FBQ08sUUFBUSxFQUFFO01BQ2xEaEIsSUFBSSxDQUFDaUIsR0FBRyxDQUFDQyxzQkFBYyxDQUFDQyxNQUFNLEVBQUVULGlCQUFpQixDQUFDO01BQ2xELE1BQU1VLFNBQVMsR0FBRyxJQUFJQyx5QkFBdUIsQ0FBQ1YsbUJBQW1CLEVBQUVWLE1BQU0sQ0FBQztNQUMxRUMsZUFBZSxDQUFDb0IsVUFBVSxDQUFDRixTQUFTLENBQUM7TUFDckNBLFNBQVMsQ0FBQ0csS0FBSyxDQUFDLENBQUM7TUFDakJuQixPQUFPLENBQUNnQixTQUFTLENBQUM7SUFDdEI7RUFDSixDQUFDO0VBRURwQixJQUFJLENBQUN3QixFQUFFLENBQUNOLHNCQUFjLENBQUNDLE1BQU0sRUFBRVQsaUJBQWlCLENBQUM7O0VBRWpEO0VBQ0FELE1BQU0sR0FBRyxNQUFNUixNQUFNLENBQUN3QixjQUFjLENBQ2hDekIsSUFBSSxDQUFDMEIsTUFBTSxFQUNYWiw2QkFBMkIsRUFDM0I7SUFDSWEsU0FBUyxFQUFFMUIsTUFBTSxDQUFDMkIsV0FBVyxDQUFDLENBQUM7SUFDL0JDLEtBQUssRUFBRUMseUJBQXVCLENBQUNDLE9BQU87SUFDdENDLFlBQVksRUFBRSxJQUFBQyxnQkFBYyxFQUFDO0VBQ2pDLENBQUMsRUFDRDFCLE1BQ0osQ0FBQztFQUVELE9BQU9KLE9BQU87QUFDbEIsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLE1BQU0rQiwrQkFBK0IsR0FBRyxNQUFBQSxDQUMzQ2xDLElBQVUsRUFDVkMsTUFBb0IsRUFDcEJrQyxjQUE0QyxFQUM1Q2pDLGVBQThDLEtBQ0o7RUFDMUMsSUFBSSxFQUFFLE1BQU0sSUFBQWtDLGtFQUFnQyxFQUFDcEMsSUFBSSxFQUFFQyxNQUFNLEVBQUVDLGVBQWUsQ0FBQyxDQUFDLEVBQUU7SUFDMUUsT0FBTyxJQUFJO0VBQ2Y7O0VBRUE7RUFDQWlDLGNBQWMsQ0FBQ0UsVUFBVSxDQUFDLENBQUMsRUFBRUMsS0FBSyxDQUFDLENBQUM7RUFDcENILGNBQWMsQ0FBQ0ksWUFBWSxDQUFDLENBQUM7RUFFN0IsT0FBT3hDLGNBQWMsQ0FBQ0MsSUFBSSxFQUFFQyxNQUFNLEVBQUVDLGVBQWUsQ0FBQztBQUN4RCxDQUFDO0FBQUNzQyxPQUFBLENBQUFOLCtCQUFBLEdBQUFBLCtCQUFBIiwiaWdub3JlTGlzdCI6W119