UNPKG

matrix-react-sdk

Version:
84 lines (81 loc) 12 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.EchoStore = void 0; var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _RoomEchoChamber = require("./RoomEchoChamber"); var _RoomEchoContext = require("./RoomEchoContext"); var _AsyncStoreWithClient = require("../AsyncStoreWithClient"); var _dispatcher = _interopRequireDefault(require("../../dispatcher/dispatcher")); var _EchoContext = require("./EchoContext"); var _NonUrgentToastStore = _interopRequireDefault(require("../NonUrgentToastStore")); var _NonUrgentEchoFailureToast = _interopRequireDefault(require("../../components/views/toasts/NonUrgentEchoFailureToast")); /* Copyright 2024 New Vector Ltd. Copyright 2020 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 roomContextKey = room => `room-${room.roomId}`; class EchoStore extends _AsyncStoreWithClient.AsyncStoreWithClient { constructor() { super(_dispatcher.default); (0, _defineProperty2.default)(this, "caches", new Map()); } static get instance() { if (!this._instance) { this._instance = new EchoStore(); this._instance.start(); } return this._instance; } get contexts() { return Array.from(this.caches.values()).map(e => e.context); } getOrCreateChamberForRoom(room) { if (this.caches.has(roomContextKey(room))) { return this.caches.get(roomContextKey(room)); } const context = new _RoomEchoContext.RoomEchoContext(room); context.whenAnything(() => this.checkContexts()); const echo = new _RoomEchoChamber.RoomEchoChamber(context); echo.setClient(this.matrixClient); this.caches.set(roomContextKey(room), echo); return echo; } async checkContexts() { let hasOrHadError = false; for (const echo of this.caches.values()) { hasOrHadError = echo.context.state === _EchoContext.ContextTransactionState.PendingErrors; if (hasOrHadError) break; } if (hasOrHadError && !this.state.toastRef) { const ref = _NonUrgentToastStore.default.instance.addToast(_NonUrgentEchoFailureToast.default); await this.updateState({ toastRef: ref }); } else if (!hasOrHadError && this.state.toastRef) { _NonUrgentToastStore.default.instance.removeToast(this.state.toastRef); await this.updateState({ toastRef: null }); } } async onReady() { if (!this.caches) return; // can only happen during initialization for (const echo of this.caches.values()) { echo.setClient(this.matrixClient); } } async onNotReady() { for (const echo of this.caches.values()) { echo.setClient(null); } } async onAction(payload) {} } exports.EchoStore = EchoStore; (0, _defineProperty2.default)(EchoStore, "_instance", void 0); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfUm9vbUVjaG9DaGFtYmVyIiwicmVxdWlyZSIsIl9Sb29tRWNob0NvbnRleHQiLCJfQXN5bmNTdG9yZVdpdGhDbGllbnQiLCJfZGlzcGF0Y2hlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfRWNob0NvbnRleHQiLCJfTm9uVXJnZW50VG9hc3RTdG9yZSIsIl9Ob25VcmdlbnRFY2hvRmFpbHVyZVRvYXN0Iiwicm9vbUNvbnRleHRLZXkiLCJyb29tIiwicm9vbUlkIiwiRWNob1N0b3JlIiwiQXN5bmNTdG9yZVdpdGhDbGllbnQiLCJjb25zdHJ1Y3RvciIsImRlZmF1bHREaXNwYXRjaGVyIiwiX2RlZmluZVByb3BlcnR5MiIsImRlZmF1bHQiLCJNYXAiLCJpbnN0YW5jZSIsIl9pbnN0YW5jZSIsInN0YXJ0IiwiY29udGV4dHMiLCJBcnJheSIsImZyb20iLCJjYWNoZXMiLCJ2YWx1ZXMiLCJtYXAiLCJlIiwiY29udGV4dCIsImdldE9yQ3JlYXRlQ2hhbWJlckZvclJvb20iLCJoYXMiLCJnZXQiLCJSb29tRWNob0NvbnRleHQiLCJ3aGVuQW55dGhpbmciLCJjaGVja0NvbnRleHRzIiwiZWNobyIsIlJvb21FY2hvQ2hhbWJlciIsInNldENsaWVudCIsIm1hdHJpeENsaWVudCIsInNldCIsImhhc09ySGFkRXJyb3IiLCJzdGF0ZSIsIkNvbnRleHRUcmFuc2FjdGlvblN0YXRlIiwiUGVuZGluZ0Vycm9ycyIsInRvYXN0UmVmIiwicmVmIiwiTm9uVXJnZW50VG9hc3RTdG9yZSIsImFkZFRvYXN0IiwiTm9uVXJnZW50RWNob0ZhaWx1cmVUb2FzdCIsInVwZGF0ZVN0YXRlIiwicmVtb3ZlVG9hc3QiLCJvblJlYWR5Iiwib25Ob3RSZWFkeSIsIm9uQWN0aW9uIiwicGF5bG9hZCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc3RvcmVzL2xvY2FsLWVjaG8vRWNob1N0b3JlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qXG5Db3B5cmlnaHQgMjAyNCBOZXcgVmVjdG9yIEx0ZC5cbkNvcHlyaWdodCAyMDIwIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cblNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBR1BMLTMuMC1vbmx5IE9SIEdQTC0zLjAtb25seVxuUGxlYXNlIHNlZSBMSUNFTlNFIGZpbGVzIGluIHRoZSByZXBvc2l0b3J5IHJvb3QgZm9yIGZ1bGwgZGV0YWlscy5cbiovXG5cbmltcG9ydCB7IFJvb20gfSBmcm9tIFwibWF0cml4LWpzLXNkay9zcmMvbWF0cml4XCI7XG5cbmltcG9ydCB7IEdlbmVyaWNFY2hvQ2hhbWJlciB9IGZyb20gXCIuL0dlbmVyaWNFY2hvQ2hhbWJlclwiO1xuaW1wb3J0IHsgUm9vbUVjaG9DaGFtYmVyIH0gZnJvbSBcIi4vUm9vbUVjaG9DaGFtYmVyXCI7XG5pbXBvcnQgeyBSb29tRWNob0NvbnRleHQgfSBmcm9tIFwiLi9Sb29tRWNob0NvbnRleHRcIjtcbmltcG9ydCB7IEFzeW5jU3RvcmVXaXRoQ2xpZW50IH0gZnJvbSBcIi4uL0FzeW5jU3RvcmVXaXRoQ2xpZW50XCI7XG5pbXBvcnQgZGVmYXVsdERpc3BhdGNoZXIgZnJvbSBcIi4uLy4uL2Rpc3BhdGNoZXIvZGlzcGF0Y2hlclwiO1xuaW1wb3J0IHsgQWN0aW9uUGF5bG9hZCB9IGZyb20gXCIuLi8uLi9kaXNwYXRjaGVyL3BheWxvYWRzXCI7XG5pbXBvcnQgeyBDb250ZXh0VHJhbnNhY3Rpb25TdGF0ZSwgRWNob0NvbnRleHQgfSBmcm9tIFwiLi9FY2hvQ29udGV4dFwiO1xuaW1wb3J0IE5vblVyZ2VudFRvYXN0U3RvcmUsIHsgVG9hc3RSZWZlcmVuY2UgfSBmcm9tIFwiLi4vTm9uVXJnZW50VG9hc3RTdG9yZVwiO1xuaW1wb3J0IE5vblVyZ2VudEVjaG9GYWlsdXJlVG9hc3QgZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvdmlld3MvdG9hc3RzL05vblVyZ2VudEVjaG9GYWlsdXJlVG9hc3RcIjtcblxuaW50ZXJmYWNlIElTdGF0ZSB7XG4gICAgdG9hc3RSZWY6IFRvYXN0UmVmZXJlbmNlO1xufVxuXG50eXBlIENvbnRleHRLZXkgPSBzdHJpbmc7XG5cbmNvbnN0IHJvb21Db250ZXh0S2V5ID0gKHJvb206IFJvb20pOiBDb250ZXh0S2V5ID0+IGByb29tLSR7cm9vbS5yb29tSWR9YDtcblxuZXhwb3J0IGNsYXNzIEVjaG9TdG9yZSBleHRlbmRzIEFzeW5jU3RvcmVXaXRoQ2xpZW50PElTdGF0ZT4ge1xuICAgIHByaXZhdGUgc3RhdGljIF9pbnN0YW5jZTogRWNob1N0b3JlO1xuXG4gICAgcHJpdmF0ZSBjYWNoZXMgPSBuZXcgTWFwPENvbnRleHRLZXksIEdlbmVyaWNFY2hvQ2hhbWJlcjxhbnksIGFueSwgYW55Pj4oKTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoZGVmYXVsdERpc3BhdGNoZXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0IGluc3RhbmNlKCk6IEVjaG9TdG9yZSB7XG4gICAgICAgIGlmICghdGhpcy5faW5zdGFuY2UpIHtcbiAgICAgICAgICAgIHRoaXMuX2luc3RhbmNlID0gbmV3IEVjaG9TdG9yZSgpO1xuICAgICAgICAgICAgdGhpcy5faW5zdGFuY2Uuc3RhcnQoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5faW5zdGFuY2U7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjb250ZXh0cygpOiBFY2hvQ29udGV4dFtdIHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5jYWNoZXMudmFsdWVzKCkpLm1hcCgoZSkgPT4gZS5jb250ZXh0KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0T3JDcmVhdGVDaGFtYmVyRm9yUm9vbShyb29tOiBSb29tKTogUm9vbUVjaG9DaGFtYmVyIHtcbiAgICAgICAgaWYgKHRoaXMuY2FjaGVzLmhhcyhyb29tQ29udGV4dEtleShyb29tKSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNhY2hlcy5nZXQocm9vbUNvbnRleHRLZXkocm9vbSkpIGFzIFJvb21FY2hvQ2hhbWJlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNvbnRleHQgPSBuZXcgUm9vbUVjaG9Db250ZXh0KHJvb20pO1xuICAgICAgICBjb250ZXh0LndoZW5Bbnl0aGluZygoKSA9PiB0aGlzLmNoZWNrQ29udGV4dHMoKSk7XG5cbiAgICAgICAgY29uc3QgZWNobyA9IG5ldyBSb29tRWNob0NoYW1iZXIoY29udGV4dCk7XG4gICAgICAgIGVjaG8uc2V0Q2xpZW50KHRoaXMubWF0cml4Q2xpZW50KTtcbiAgICAgICAgdGhpcy5jYWNoZXMuc2V0KHJvb21Db250ZXh0S2V5KHJvb20pLCBlY2hvKTtcblxuICAgICAgICByZXR1cm4gZWNobztcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGNoZWNrQ29udGV4dHMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGxldCBoYXNPckhhZEVycm9yID0gZmFsc2U7XG4gICAgICAgIGZvciAoY29uc3QgZWNobyBvZiB0aGlzLmNhY2hlcy52YWx1ZXMoKSkge1xuICAgICAgICAgICAgaGFzT3JIYWRFcnJvciA9IGVjaG8uY29udGV4dC5zdGF0ZSA9PT0gQ29udGV4dFRyYW5zYWN0aW9uU3RhdGUuUGVuZGluZ0Vycm9ycztcbiAgICAgICAgICAgIGlmIChoYXNPckhhZEVycm9yKSBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChoYXNPckhhZEVycm9yICYmICF0aGlzLnN0YXRlLnRvYXN0UmVmKSB7XG4gICAgICAgICAgICBjb25zdCByZWYgPSBOb25VcmdlbnRUb2FzdFN0b3JlLmluc3RhbmNlLmFkZFRvYXN0KE5vblVyZ2VudEVjaG9GYWlsdXJlVG9hc3QpO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy51cGRhdGVTdGF0ZSh7IHRvYXN0UmVmOiByZWYgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAoIWhhc09ySGFkRXJyb3IgJiYgdGhpcy5zdGF0ZS50b2FzdFJlZikge1xuICAgICAgICAgICAgTm9uVXJnZW50VG9hc3RTdG9yZS5pbnN0YW5jZS5yZW1vdmVUb2FzdCh0aGlzLnN0YXRlLnRvYXN0UmVmKTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMudXBkYXRlU3RhdGUoeyB0b2FzdFJlZjogbnVsbCB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBhc3luYyBvblJlYWR5KCk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIGlmICghdGhpcy5jYWNoZXMpIHJldHVybjsgLy8gY2FuIG9ubHkgaGFwcGVuIGR1cmluZyBpbml0aWFsaXphdGlvblxuICAgICAgICBmb3IgKGNvbnN0IGVjaG8gb2YgdGhpcy5jYWNoZXMudmFsdWVzKCkpIHtcbiAgICAgICAgICAgIGVjaG8uc2V0Q2xpZW50KHRoaXMubWF0cml4Q2xpZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBhc3luYyBvbk5vdFJlYWR5KCk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIGZvciAoY29uc3QgZWNobyBvZiB0aGlzLmNhY2hlcy52YWx1ZXMoKSkge1xuICAgICAgICAgICAgZWNoby5zZXRDbGllbnQobnVsbCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgYXN5bmMgb25BY3Rpb24ocGF5bG9hZDogQWN0aW9uUGF5bG9hZCk6IFByb21pc2U8dm9pZD4ge31cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFXQSxJQUFBQSxnQkFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsZ0JBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLHFCQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxXQUFBLEdBQUFDLHNCQUFBLENBQUFKLE9BQUE7QUFFQSxJQUFBSyxZQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxvQkFBQSxHQUFBRixzQkFBQSxDQUFBSixPQUFBO0FBQ0EsSUFBQU8sMEJBQUEsR0FBQUgsc0JBQUEsQ0FBQUosT0FBQTtBQWxCQTtBQUNBO0FBQ0E7QUFDQTtBQUNB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