UNPKG

matrix-react-sdk

Version:
106 lines (89 loc) 9.64 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.ReadyWatchingStore = void 0; var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _MatrixClientPeg = require("../MatrixClientPeg"); var _events = require("events"); /* * Copyright 2021 The Matrix.org Foundation C.I.C. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ class ReadyWatchingStore extends _events.EventEmitter /*:: implements IDestroyable*/ { constructor(dispatcher /*: Dispatcher<ActionPayload>*/ ) { super(); this.dispatcher /*:: */ = dispatcher /*:: */ ; (0, _defineProperty2.default)(this, "matrixClient", void 0); (0, _defineProperty2.default)(this, "dispatcherRef", void 0); (0, _defineProperty2.default)(this, "onAction", async (payload /*: ActionPayload*/ ) => { if (payload.action === 'MatrixActions.sync') { // Only set the client on the transition into the PREPARED state. // Everything after this is unnecessary (we only need to know once we have a client) // and we intentionally don't set the client before this point to avoid stores // updating for every event emitted during the cached sync. if (!(payload.prevState === 'PREPARED' && payload.state !== 'PREPARED')) { return; } if (this.matrixClient !== payload.matrixClient) { if (this.matrixClient) { await this.onNotReady(); } this.matrixClient = payload.matrixClient; await this.onReady(); } } else if (payload.action === 'on_client_not_viable' || payload.action === 'on_logged_out') { if (this.matrixClient) { await this.onNotReady(); this.matrixClient = null; } } }); this.dispatcherRef = this.dispatcher.register(this.onAction); if (_MatrixClientPeg.MatrixClientPeg.get()) { this.matrixClient = _MatrixClientPeg.MatrixClientPeg.get(); // noinspection JSIgnoredPromiseFromCall this.onReady(); } } get mxClient() /*: MatrixClient*/ { return this.matrixClient; // for external readonly access } useUnitTestClient(cli /*: MatrixClient*/ ) { this.matrixClient = cli; } destroy() { this.dispatcher.unregister(this.dispatcherRef); } async onReady() {// Default implementation is to do nothing. } async onNotReady() {// Default implementation is to do nothing. } } exports.ReadyWatchingStore = ReadyWatchingStore; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdG9yZXMvUmVhZHlXYXRjaGluZ1N0b3JlLnRzIl0sIm5hbWVzIjpbIlJlYWR5V2F0Y2hpbmdTdG9yZSIsIkV2ZW50RW1pdHRlciIsImNvbnN0cnVjdG9yIiwiZGlzcGF0Y2hlciIsInBheWxvYWQiLCJhY3Rpb24iLCJwcmV2U3RhdGUiLCJzdGF0ZSIsIm1hdHJpeENsaWVudCIsIm9uTm90UmVhZHkiLCJvblJlYWR5IiwiZGlzcGF0Y2hlclJlZiIsInJlZ2lzdGVyIiwib25BY3Rpb24iLCJNYXRyaXhDbGllbnRQZWciLCJnZXQiLCJteENsaWVudCIsInVzZVVuaXRUZXN0Q2xpZW50IiwiY2xpIiwiZGVzdHJveSIsInVucmVnaXN0ZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBaUJBOztBQUlBOztBQXJCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFTTyxNQUFlQSxrQkFBZixTQUEwQ0M7QUFBMUM7QUFBK0U7QUFJbEZDLEVBQUFBLFdBQVcsQ0FBb0JDO0FBQXBCO0FBQUEsSUFBMkQ7QUFDbEU7QUFEa0UsU0FBdkNBO0FBQXVDO0FBQUEsTUFBdkNBO0FBQXVDO0FBQUE7QUFBQTtBQUFBO0FBQUEsb0RBaUNuRCxPQUFPQztBQUFQO0FBQUEsU0FBa0M7QUFDakQsVUFBSUEsT0FBTyxDQUFDQyxNQUFSLEtBQW1CLG9CQUF2QixFQUE2QztBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQUksRUFBRUQsT0FBTyxDQUFDRSxTQUFSLEtBQXNCLFVBQXRCLElBQW9DRixPQUFPLENBQUNHLEtBQVIsS0FBa0IsVUFBeEQsQ0FBSixFQUF5RTtBQUNyRTtBQUNIOztBQUVELFlBQUksS0FBS0MsWUFBTCxLQUFzQkosT0FBTyxDQUFDSSxZQUFsQyxFQUFnRDtBQUM1QyxjQUFJLEtBQUtBLFlBQVQsRUFBdUI7QUFDbkIsa0JBQU0sS0FBS0MsVUFBTCxFQUFOO0FBQ0g7O0FBQ0QsZUFBS0QsWUFBTCxHQUFvQkosT0FBTyxDQUFDSSxZQUE1QjtBQUNBLGdCQUFNLEtBQUtFLE9BQUwsRUFBTjtBQUNIO0FBQ0osT0FoQkQsTUFnQk8sSUFBSU4sT0FBTyxDQUFDQyxNQUFSLEtBQW1CLHNCQUFuQixJQUE2Q0QsT0FBTyxDQUFDQyxNQUFSLEtBQW1CLGVBQXBFLEVBQXFGO0FBQ3hGLFlBQUksS0FBS0csWUFBVCxFQUF1QjtBQUNuQixnQkFBTSxLQUFLQyxVQUFMLEVBQU47QUFDQSxlQUFLRCxZQUFMLEdBQW9CLElBQXBCO0FBQ0g7QUFDSjtBQUNKLEtBeERxRTtBQUdsRSxTQUFLRyxhQUFMLEdBQXFCLEtBQUtSLFVBQUwsQ0FBZ0JTLFFBQWhCLENBQXlCLEtBQUtDLFFBQTlCLENBQXJCOztBQUVBLFFBQUlDLGlDQUFnQkMsR0FBaEIsRUFBSixFQUEyQjtBQUN2QixXQUFLUCxZQUFMLEdBQW9CTSxpQ0FBZ0JDLEdBQWhCLEVBQXBCLENBRHVCLENBR3ZCOztBQUNBLFdBQUtMLE9BQUw7QUFDSDtBQUNKOztBQUVELE1BQVdNLFFBQVg7QUFBQTtBQUFvQztBQUNoQyxXQUFPLEtBQUtSLFlBQVosQ0FEZ0MsQ0FDTjtBQUM3Qjs7QUFFTVMsRUFBQUEsaUJBQVAsQ0FBeUJDO0FBQXpCO0FBQUEsSUFBNEM7QUFDeEMsU0FBS1YsWUFBTCxHQUFvQlUsR0FBcEI7QUFDSDs7QUFFTUMsRUFBQUEsT0FBUCxHQUFpQjtBQUNiLFNBQUtoQixVQUFMLENBQWdCaUIsVUFBaEIsQ0FBMkIsS0FBS1QsYUFBaEM7QUFDSDs7QUFFRCxRQUFnQkQsT0FBaEIsR0FBMEIsQ0FDdEI7QUFDSDs7QUFFRCxRQUFnQkQsVUFBaEIsR0FBNkIsQ0FDekI7QUFDSDs7QUFuQ2lGIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDIxIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBNYXRyaXhDbGllbnQgfSBmcm9tIFwibWF0cml4LWpzLXNkay9zcmMvY2xpZW50XCI7XG5pbXBvcnQgeyBNYXRyaXhDbGllbnRQZWcgfSBmcm9tIFwiLi4vTWF0cml4Q2xpZW50UGVnXCI7XG5pbXBvcnQgeyBBY3Rpb25QYXlsb2FkIH0gZnJvbSBcIi4uL2Rpc3BhdGNoZXIvcGF5bG9hZHNcIjtcbmltcG9ydCB7IERpc3BhdGNoZXIgfSBmcm9tIFwiZmx1eFwiO1xuaW1wb3J0IHsgSURlc3Ryb3lhYmxlIH0gZnJvbSBcIi4uL3V0aWxzL0lEZXN0cm95YWJsZVwiO1xuaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSBcImV2ZW50c1wiO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUmVhZHlXYXRjaGluZ1N0b3JlIGV4dGVuZHMgRXZlbnRFbWl0dGVyIGltcGxlbWVudHMgSURlc3Ryb3lhYmxlIHtcbiAgICBwcm90ZWN0ZWQgbWF0cml4Q2xpZW50OiBNYXRyaXhDbGllbnQ7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkaXNwYXRjaGVyUmVmOiBzdHJpbmc7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgcmVhZG9ubHkgZGlzcGF0Y2hlcjogRGlzcGF0Y2hlcjxBY3Rpb25QYXlsb2FkPikge1xuICAgICAgICBzdXBlcigpO1xuXG4gICAgICAgIHRoaXMuZGlzcGF0Y2hlclJlZiA9IHRoaXMuZGlzcGF0Y2hlci5yZWdpc3Rlcih0aGlzLm9uQWN0aW9uKTtcblxuICAgICAgICBpZiAoTWF0cml4Q2xpZW50UGVnLmdldCgpKSB7XG4gICAgICAgICAgICB0aGlzLm1hdHJpeENsaWVudCA9IE1hdHJpeENsaWVudFBlZy5nZXQoKTtcblxuICAgICAgICAgICAgLy8gbm9pbnNwZWN0aW9uIEpTSWdub3JlZFByb21pc2VGcm9tQ2FsbFxuICAgICAgICAgICAgdGhpcy5vblJlYWR5KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG14Q2xpZW50KCk6IE1hdHJpeENsaWVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hdHJpeENsaWVudDsgLy8gZm9yIGV4dGVybmFsIHJlYWRvbmx5IGFjY2Vzc1xuICAgIH1cblxuICAgIHB1YmxpYyB1c2VVbml0VGVzdENsaWVudChjbGk6IE1hdHJpeENsaWVudCkge1xuICAgICAgICB0aGlzLm1hdHJpeENsaWVudCA9IGNsaTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5kaXNwYXRjaGVyLnVucmVnaXN0ZXIodGhpcy5kaXNwYXRjaGVyUmVmKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgYXN5bmMgb25SZWFkeSgpIHtcbiAgICAgICAgLy8gRGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBpcyB0byBkbyBub3RoaW5nLlxuICAgIH1cblxuICAgIHByb3RlY3RlZCBhc3luYyBvbk5vdFJlYWR5KCkge1xuICAgICAgICAvLyBEZWZhdWx0IGltcGxlbWVudGF0aW9uIGlzIHRvIGRvIG5vdGhpbmcuXG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbkFjdGlvbiA9IGFzeW5jIChwYXlsb2FkOiBBY3Rpb25QYXlsb2FkKSA9PiB7XG4gICAgICAgIGlmIChwYXlsb2FkLmFjdGlvbiA9PT0gJ01hdHJpeEFjdGlvbnMuc3luYycpIHtcbiAgICAgICAgICAgIC8vIE9ubHkgc2V0IHRoZSBjbGllbnQgb24gdGhlIHRyYW5zaXRpb24gaW50byB0aGUgUFJFUEFSRUQgc3RhdGUuXG4gICAgICAgICAgICAvLyBFdmVyeXRoaW5nIGFmdGVyIHRoaXMgaXMgdW5uZWNlc3NhcnkgKHdlIG9ubHkgbmVlZCB0byBrbm93IG9uY2Ugd2UgaGF2ZSBhIGNsaWVudClcbiAgICAgICAgICAgIC8vIGFuZCB3ZSBpbnRlbnRpb25hbGx5IGRvbid0IHNldCB0aGUgY2xpZW50IGJlZm9yZSB0aGlzIHBvaW50IHRvIGF2b2lkIHN0b3Jlc1xuICAgICAgICAgICAgLy8gdXBkYXRpbmcgZm9yIGV2ZXJ5IGV2ZW50IGVtaXR0ZWQgZHVyaW5nIHRoZSBjYWNoZWQgc3luYy5cbiAgICAgICAgICAgIGlmICghKHBheWxvYWQucHJldlN0YXRlID09PSAnUFJFUEFSRUQnICYmIHBheWxvYWQuc3RhdGUgIT09ICdQUkVQQVJFRCcpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5tYXRyaXhDbGllbnQgIT09IHBheWxvYWQubWF0cml4Q2xpZW50KSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubWF0cml4Q2xpZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMub25Ob3RSZWFkeSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLm1hdHJpeENsaWVudCA9IHBheWxvYWQubWF0cml4Q2xpZW50O1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMub25SZWFkeSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHBheWxvYWQuYWN0aW9uID09PSAnb25fY2xpZW50X25vdF92aWFibGUnIHx8IHBheWxvYWQuYWN0aW9uID09PSAnb25fbG9nZ2VkX291dCcpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLm1hdHJpeENsaWVudCkge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMub25Ob3RSZWFkeSgpO1xuICAgICAgICAgICAgICAgIHRoaXMubWF0cml4Q2xpZW50ID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG59XG4iXX0=