UNPKG

matrix-react-sdk

Version:
90 lines (88 loc) 12.3 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.VoiceBroadcastPlaybacksStoreEvent = exports.VoiceBroadcastPlaybacksStore = void 0; var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _matrix = require("matrix-js-sdk/src/matrix"); var _ = require(".."); /* 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. */ let VoiceBroadcastPlaybacksStoreEvent = exports.VoiceBroadcastPlaybacksStoreEvent = /*#__PURE__*/function (VoiceBroadcastPlaybacksStoreEvent) { VoiceBroadcastPlaybacksStoreEvent["CurrentChanged"] = "current_changed"; return VoiceBroadcastPlaybacksStoreEvent; }({}); /** * This store manages VoiceBroadcastPlaybacks: * - access the currently playing voice broadcast * - ensures that only once broadcast is playing at a time */ class VoiceBroadcastPlaybacksStore extends _matrix.TypedEventEmitter { constructor(recordings) { super(); (0, _defineProperty2.default)(this, "current", null); /** Playbacks indexed by their info event id. */ (0, _defineProperty2.default)(this, "playbacks", new Map()); (0, _defineProperty2.default)(this, "onPlaybackStateChanged", (state, playback) => { switch (state) { case _.VoiceBroadcastPlaybackState.Buffering: case _.VoiceBroadcastPlaybackState.Playing: this.pauseExcept(playback); this.setCurrent(playback); break; case _.VoiceBroadcastPlaybackState.Stopped: this.clearCurrent(); break; } }); this.recordings = recordings; } setCurrent(current) { if (this.current === current) return; this.current = current; this.addPlayback(current); this.emit(VoiceBroadcastPlaybacksStoreEvent.CurrentChanged, current); } clearCurrent() { if (this.current === null) return; this.current = null; this.emit(VoiceBroadcastPlaybacksStoreEvent.CurrentChanged, null); } getCurrent() { return this.current; } getByInfoEvent(infoEvent, client) { const infoEventId = infoEvent.getId(); if (!this.playbacks.has(infoEventId)) { this.addPlayback(new _.VoiceBroadcastPlayback(infoEvent, client, this.recordings)); } return this.playbacks.get(infoEventId); } addPlayback(playback) { const infoEventId = playback.infoEvent.getId(); if (this.playbacks.has(infoEventId)) return; this.playbacks.set(infoEventId, playback); playback.on(_.VoiceBroadcastPlaybackEvent.StateChanged, this.onPlaybackStateChanged); } pauseExcept(playbackNotToPause) { for (const playback of this.playbacks.values()) { if (playback !== playbackNotToPause) { playback.pause(); } } } destroy() { this.removeAllListeners(); for (const playback of this.playbacks.values()) { playback.off(_.VoiceBroadcastPlaybackEvent.StateChanged, this.onPlaybackStateChanged); } this.playbacks = new Map(); } } exports.VoiceBroadcastPlaybacksStore = VoiceBroadcastPlaybacksStore; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbWF0cml4IiwicmVxdWlyZSIsIl8iLCJWb2ljZUJyb2FkY2FzdFBsYXliYWNrc1N0b3JlRXZlbnQiLCJleHBvcnRzIiwiVm9pY2VCcm9hZGNhc3RQbGF5YmFja3NTdG9yZSIsIlR5cGVkRXZlbnRFbWl0dGVyIiwiY29uc3RydWN0b3IiLCJyZWNvcmRpbmdzIiwiX2RlZmluZVByb3BlcnR5MiIsImRlZmF1bHQiLCJNYXAiLCJzdGF0ZSIsInBsYXliYWNrIiwiVm9pY2VCcm9hZGNhc3RQbGF5YmFja1N0YXRlIiwiQnVmZmVyaW5nIiwiUGxheWluZyIsInBhdXNlRXhjZXB0Iiwic2V0Q3VycmVudCIsIlN0b3BwZWQiLCJjbGVhckN1cnJlbnQiLCJjdXJyZW50IiwiYWRkUGxheWJhY2siLCJlbWl0IiwiQ3VycmVudENoYW5nZWQiLCJnZXRDdXJyZW50IiwiZ2V0QnlJbmZvRXZlbnQiLCJpbmZvRXZlbnQiLCJjbGllbnQiLCJpbmZvRXZlbnRJZCIsImdldElkIiwicGxheWJhY2tzIiwiaGFzIiwiVm9pY2VCcm9hZGNhc3RQbGF5YmFjayIsImdldCIsInNldCIsIm9uIiwiVm9pY2VCcm9hZGNhc3RQbGF5YmFja0V2ZW50IiwiU3RhdGVDaGFuZ2VkIiwib25QbGF5YmFja1N0YXRlQ2hhbmdlZCIsInBsYXliYWNrTm90VG9QYXVzZSIsInZhbHVlcyIsInBhdXNlIiwiZGVzdHJveSIsInJlbW92ZUFsbExpc3RlbmVycyIsIm9mZiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92b2ljZS1icm9hZGNhc3Qvc3RvcmVzL1ZvaWNlQnJvYWRjYXN0UGxheWJhY2tzU3RvcmUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbkNvcHlyaWdodCAyMDI0IE5ldyBWZWN0b3IgTHRkLlxuQ29weXJpZ2h0IDIwMjIgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFHUEwtMy4wLW9ubHkgT1IgR1BMLTMuMC1vbmx5XG5QbGVhc2Ugc2VlIExJQ0VOU0UgZmlsZXMgaW4gdGhlIHJlcG9zaXRvcnkgcm9vdCBmb3IgZnVsbCBkZXRhaWxzLlxuKi9cblxuaW1wb3J0IHsgTWF0cml4Q2xpZW50LCBNYXRyaXhFdmVudCwgVHlwZWRFdmVudEVtaXR0ZXIgfSBmcm9tIFwibWF0cml4LWpzLXNkay9zcmMvbWF0cml4XCI7XG5cbmltcG9ydCB7XG4gICAgVm9pY2VCcm9hZGNhc3RQbGF5YmFjayxcbiAgICBWb2ljZUJyb2FkY2FzdFBsYXliYWNrRXZlbnQsXG4gICAgVm9pY2VCcm9hZGNhc3RQbGF5YmFja1N0YXRlLFxuICAgIFZvaWNlQnJvYWRjYXN0UmVjb3JkaW5nc1N0b3JlLFxufSBmcm9tIFwiLi5cIjtcbmltcG9ydCB7IElEZXN0cm95YWJsZSB9IGZyb20gXCIuLi8uLi91dGlscy9JRGVzdHJveWFibGVcIjtcblxuZXhwb3J0IGVudW0gVm9pY2VCcm9hZGNhc3RQbGF5YmFja3NTdG9yZUV2ZW50IHtcbiAgICBDdXJyZW50Q2hhbmdlZCA9IFwiY3VycmVudF9jaGFuZ2VkXCIsXG59XG5cbmludGVyZmFjZSBFdmVudE1hcCB7XG4gICAgW1ZvaWNlQnJvYWRjYXN0UGxheWJhY2tzU3RvcmVFdmVudC5DdXJyZW50Q2hhbmdlZF06IChyZWNvcmRpbmc6IFZvaWNlQnJvYWRjYXN0UGxheWJhY2sgfCBudWxsKSA9PiB2b2lkO1xufVxuXG4vKipcbiAqIFRoaXMgc3RvcmUgbWFuYWdlcyBWb2ljZUJyb2FkY2FzdFBsYXliYWNrczpcbiAqIC0gYWNjZXNzIHRoZSBjdXJyZW50bHkgcGxheWluZyB2b2ljZSBicm9hZGNhc3RcbiAqIC0gZW5zdXJlcyB0aGF0IG9ubHkgb25jZSBicm9hZGNhc3QgaXMgcGxheWluZyBhdCBhIHRpbWVcbiAqL1xuZXhwb3J0IGNsYXNzIFZvaWNlQnJvYWRjYXN0UGxheWJhY2tzU3RvcmVcbiAgICBleHRlbmRzIFR5cGVkRXZlbnRFbWl0dGVyPFZvaWNlQnJvYWRjYXN0UGxheWJhY2tzU3RvcmVFdmVudCwgRXZlbnRNYXA+XG4gICAgaW1wbGVtZW50cyBJRGVzdHJveWFibGVcbntcbiAgICBwcml2YXRlIGN1cnJlbnQ6IFZvaWNlQnJvYWRjYXN0UGxheWJhY2sgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKiBQbGF5YmFja3MgaW5kZXhlZCBieSB0aGVpciBpbmZvIGV2ZW50IGlkLiAqL1xuICAgIHByaXZhdGUgcGxheWJhY2tzID0gbmV3IE1hcDxzdHJpbmcsIFZvaWNlQnJvYWRjYXN0UGxheWJhY2s+KCk7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSByZWNvcmRpbmdzOiBWb2ljZUJyb2FkY2FzdFJlY29yZGluZ3NTdG9yZSkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRDdXJyZW50KGN1cnJlbnQ6IFZvaWNlQnJvYWRjYXN0UGxheWJhY2spOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudCA9PT0gY3VycmVudCkgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMuY3VycmVudCA9IGN1cnJlbnQ7XG4gICAgICAgIHRoaXMuYWRkUGxheWJhY2soY3VycmVudCk7XG4gICAgICAgIHRoaXMuZW1pdChWb2ljZUJyb2FkY2FzdFBsYXliYWNrc1N0b3JlRXZlbnQuQ3VycmVudENoYW5nZWQsIGN1cnJlbnQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbGVhckN1cnJlbnQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnQgPT09IG51bGwpIHJldHVybjtcblxuICAgICAgICB0aGlzLmN1cnJlbnQgPSBudWxsO1xuICAgICAgICB0aGlzLmVtaXQoVm9pY2VCcm9hZGNhc3RQbGF5YmFja3NTdG9yZUV2ZW50LkN1cnJlbnRDaGFuZ2VkLCBudWxsKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Q3VycmVudCgpOiBWb2ljZUJyb2FkY2FzdFBsYXliYWNrIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEJ5SW5mb0V2ZW50KGluZm9FdmVudDogTWF0cml4RXZlbnQsIGNsaWVudDogTWF0cml4Q2xpZW50KTogVm9pY2VCcm9hZGNhc3RQbGF5YmFjayB7XG4gICAgICAgIGNvbnN0IGluZm9FdmVudElkID0gaW5mb0V2ZW50LmdldElkKCkhO1xuXG4gICAgICAgIGlmICghdGhpcy5wbGF5YmFja3MuaGFzKGluZm9FdmVudElkKSkge1xuICAgICAgICAgICAgdGhpcy5hZGRQbGF5YmFjayhuZXcgVm9pY2VCcm9hZGNhc3RQbGF5YmFjayhpbmZvRXZlbnQsIGNsaWVudCwgdGhpcy5yZWNvcmRpbmdzKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5wbGF5YmFja3MuZ2V0KGluZm9FdmVudElkKSE7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhZGRQbGF5YmFjayhwbGF5YmFjazogVm9pY2VCcm9hZGNhc3RQbGF5YmFjayk6IHZvaWQge1xuICAgICAgICBjb25zdCBpbmZvRXZlbnRJZCA9IHBsYXliYWNrLmluZm9FdmVudC5nZXRJZCgpITtcblxuICAgICAgICBpZiAodGhpcy5wbGF5YmFja3MuaGFzKGluZm9FdmVudElkKSkgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMucGxheWJhY2tzLnNldChpbmZvRXZlbnRJZCwgcGxheWJhY2spO1xuICAgICAgICBwbGF5YmFjay5vbihWb2ljZUJyb2FkY2FzdFBsYXliYWNrRXZlbnQuU3RhdGVDaGFuZ2VkLCB0aGlzLm9uUGxheWJhY2tTdGF0ZUNoYW5nZWQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25QbGF5YmFja1N0YXRlQ2hhbmdlZCA9IChzdGF0ZTogVm9pY2VCcm9hZGNhc3RQbGF5YmFja1N0YXRlLCBwbGF5YmFjazogVm9pY2VCcm9hZGNhc3RQbGF5YmFjayk6IHZvaWQgPT4ge1xuICAgICAgICBzd2l0Y2ggKHN0YXRlKSB7XG4gICAgICAgICAgICBjYXNlIFZvaWNlQnJvYWRjYXN0UGxheWJhY2tTdGF0ZS5CdWZmZXJpbmc6XG4gICAgICAgICAgICBjYXNlIFZvaWNlQnJvYWRjYXN0UGxheWJhY2tTdGF0ZS5QbGF5aW5nOlxuICAgICAgICAgICAgICAgIHRoaXMucGF1c2VFeGNlcHQocGxheWJhY2spO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0Q3VycmVudChwbGF5YmFjayk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFZvaWNlQnJvYWRjYXN0UGxheWJhY2tTdGF0ZS5TdG9wcGVkOlxuICAgICAgICAgICAgICAgIHRoaXMuY2xlYXJDdXJyZW50KCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBwYXVzZUV4Y2VwdChwbGF5YmFja05vdFRvUGF1c2U6IFZvaWNlQnJvYWRjYXN0UGxheWJhY2spOiB2b2lkIHtcbiAgICAgICAgZm9yIChjb25zdCBwbGF5YmFjayBvZiB0aGlzLnBsYXliYWNrcy52YWx1ZXMoKSkge1xuICAgICAgICAgICAgaWYgKHBsYXliYWNrICE9PSBwbGF5YmFja05vdFRvUGF1c2UpIHtcbiAgICAgICAgICAgICAgICBwbGF5YmFjay5wYXVzZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVtb3ZlQWxsTGlzdGVuZXJzKCk7XG5cbiAgICAgICAgZm9yIChjb25zdCBwbGF5YmFjayBvZiB0aGlzLnBsYXliYWNrcy52YWx1ZXMoKSkge1xuICAgICAgICAgICAgcGxheWJhY2sub2ZmKFZvaWNlQnJvYWRjYXN0UGxheWJhY2tFdmVudC5TdGF0ZUNoYW5nZWQsIHRoaXMub25QbGF5YmFja1N0YXRlQ2hhbmdlZCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnBsYXliYWNrcyA9IG5ldyBNYXAoKTtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBUUEsSUFBQUEsT0FBQSxHQUFBQyxPQUFBO0FB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