UNPKG

matrix-react-sdk

Version:
79 lines (75 loc) 9.22 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _events = _interopRequireDefault(require("events")); /* 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. */ /** * Holds the active toasts */ class ToastStore extends _events.default { constructor(...args) { super(...args); (0, _defineProperty2.default)(this, "toasts", []); // The count of toasts which have been seen & dealt with in this stack // where the count resets when the stack of toasts clears. (0, _defineProperty2.default)(this, "countSeen", 0); } static sharedInstance() { if (!window.mxToastStore) window.mxToastStore = new ToastStore(); return window.mxToastStore; } reset() { this.toasts = []; this.countSeen = 0; } /** * Add or replace a toast * If a toast with the same toastKey already exists, the given toast will replace it * Toasts are always added underneath any toasts of the same priority, so existing * toasts stay at the top unless a higher priority one arrives (better to not change the * toast unless necessary). * * @param {object} newToast The new toast */ addOrReplaceToast(newToast) { const oldIndex = this.toasts.findIndex(t => t.key === newToast.key); if (oldIndex === -1) { let newIndex = this.toasts.length; while (newIndex > 0 && this.toasts[newIndex - 1].priority < newToast.priority) --newIndex; this.toasts.splice(newIndex, 0, newToast); } else { this.toasts[oldIndex] = newToast; } this.emit("update"); } dismissToast(key) { if (this.toasts[0] && this.toasts[0].key === key) { this.countSeen++; } const length = this.toasts.length; this.toasts = this.toasts.filter(t => t.key !== key); if (length !== this.toasts.length) { if (this.toasts.length === 0) { this.countSeen = 0; } this.emit("update"); } } getToasts() { return this.toasts; } getCountSeen() { return this.countSeen; } } exports.default = ToastStore; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZXZlbnRzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJUb2FzdFN0b3JlIiwiRXZlbnRFbWl0dGVyIiwiY29uc3RydWN0b3IiLCJhcmdzIiwiX2RlZmluZVByb3BlcnR5MiIsImRlZmF1bHQiLCJzaGFyZWRJbnN0YW5jZSIsIndpbmRvdyIsIm14VG9hc3RTdG9yZSIsInJlc2V0IiwidG9hc3RzIiwiY291bnRTZWVuIiwiYWRkT3JSZXBsYWNlVG9hc3QiLCJuZXdUb2FzdCIsIm9sZEluZGV4IiwiZmluZEluZGV4IiwidCIsImtleSIsIm5ld0luZGV4IiwibGVuZ3RoIiwicHJpb3JpdHkiLCJzcGxpY2UiLCJlbWl0IiwiZGlzbWlzc1RvYXN0IiwiZmlsdGVyIiwiZ2V0VG9hc3RzIiwiZ2V0Q291bnRTZWVuIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdG9yZXMvVG9hc3RTdG9yZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuQ29weXJpZ2h0IDIwMjQgTmV3IFZlY3RvciBMdGQuXG5Db3B5cmlnaHQgMjAyMCBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5TUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQUdQTC0zLjAtb25seSBPUiBHUEwtMy4wLW9ubHlcblBsZWFzZSBzZWUgTElDRU5TRSBmaWxlcyBpbiB0aGUgcmVwb3NpdG9yeSByb290IGZvciBmdWxsIGRldGFpbHMuXG4qL1xuXG5pbXBvcnQgRXZlbnRFbWl0dGVyIGZyb20gXCJldmVudHNcIjtcbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgQ29tcG9uZW50Q2xhc3MgfSBmcm9tIFwiLi4vQHR5cGVzL2NvbW1vblwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIElUb2FzdDxDIGV4dGVuZHMgQ29tcG9uZW50Q2xhc3M+IHtcbiAgICBrZXk6IHN0cmluZztcbiAgICAvLyBoaWdoZXIgcHJpb3JpdHkgbnVtYmVyIHdpbGwgYmUgc2hvd24gb24gdG9wIG9mIGxvd2VyIHByaW9yaXR5XG4gICAgcHJpb3JpdHk6IG51bWJlcjtcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICBpY29uPzogc3RyaW5nO1xuICAgIGNvbXBvbmVudDogQztcbiAgICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gICAgYm9keUNsYXNzTmFtZT86IHN0cmluZztcbiAgICBwcm9wcz86IE9taXQ8UmVhY3QuQ29tcG9uZW50UHJvcHM8Qz4sIFwidG9hc3RLZXlcIj47IC8vIHRvYXN0S2V5IGlzIGluamVjdGVkIGJ5IFRvYXN0Q29udGFpbmVyXG59XG5cbi8qKlxuICogSG9sZHMgdGhlIGFjdGl2ZSB0b2FzdHNcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVG9hc3RTdG9yZSBleHRlbmRzIEV2ZW50RW1pdHRlciB7XG4gICAgcHJpdmF0ZSB0b2FzdHM6IElUb2FzdDxhbnk+W10gPSBbXTtcbiAgICAvLyBUaGUgY291bnQgb2YgdG9hc3RzIHdoaWNoIGhhdmUgYmVlbiBzZWVuICYgZGVhbHQgd2l0aCBpbiB0aGlzIHN0YWNrXG4gICAgLy8gd2hlcmUgdGhlIGNvdW50IHJlc2V0cyB3aGVuIHRoZSBzdGFjayBvZiB0b2FzdHMgY2xlYXJzLlxuICAgIHByaXZhdGUgY291bnRTZWVuID0gMDtcblxuICAgIHB1YmxpYyBzdGF0aWMgc2hhcmVkSW5zdGFuY2UoKTogVG9hc3RTdG9yZSB7XG4gICAgICAgIGlmICghd2luZG93Lm14VG9hc3RTdG9yZSkgd2luZG93Lm14VG9hc3RTdG9yZSA9IG5ldyBUb2FzdFN0b3JlKCk7XG4gICAgICAgIHJldHVybiB3aW5kb3cubXhUb2FzdFN0b3JlO1xuICAgIH1cblxuICAgIHB1YmxpYyByZXNldCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50b2FzdHMgPSBbXTtcbiAgICAgICAgdGhpcy5jb3VudFNlZW4gPSAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZCBvciByZXBsYWNlIGEgdG9hc3RcbiAgICAgKiBJZiBhIHRvYXN0IHdpdGggdGhlIHNhbWUgdG9hc3RLZXkgYWxyZWFkeSBleGlzdHMsIHRoZSBnaXZlbiB0b2FzdCB3aWxsIHJlcGxhY2UgaXRcbiAgICAgKiBUb2FzdHMgYXJlIGFsd2F5cyBhZGRlZCB1bmRlcm5lYXRoIGFueSB0b2FzdHMgb2YgdGhlIHNhbWUgcHJpb3JpdHksIHNvIGV4aXN0aW5nXG4gICAgICogdG9hc3RzIHN0YXkgYXQgdGhlIHRvcCB1bmxlc3MgYSBoaWdoZXIgcHJpb3JpdHkgb25lIGFycml2ZXMgKGJldHRlciB0byBub3QgY2hhbmdlIHRoZVxuICAgICAqIHRvYXN0IHVubGVzcyBuZWNlc3NhcnkpLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtvYmplY3R9IG5ld1RvYXN0IFRoZSBuZXcgdG9hc3RcbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkT3JSZXBsYWNlVG9hc3Q8QyBleHRlbmRzIENvbXBvbmVudENsYXNzPihuZXdUb2FzdDogSVRvYXN0PEM+KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG9sZEluZGV4ID0gdGhpcy50b2FzdHMuZmluZEluZGV4KCh0KSA9PiB0LmtleSA9PT0gbmV3VG9hc3Qua2V5KTtcbiAgICAgICAgaWYgKG9sZEluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgbGV0IG5ld0luZGV4ID0gdGhpcy50b2FzdHMubGVuZ3RoO1xuICAgICAgICAgICAgd2hpbGUgKG5ld0luZGV4ID4gMCAmJiB0aGlzLnRvYXN0c1tuZXdJbmRleCAtIDFdLnByaW9yaXR5IDwgbmV3VG9hc3QucHJpb3JpdHkpIC0tbmV3SW5kZXg7XG4gICAgICAgICAgICB0aGlzLnRvYXN0cy5zcGxpY2UobmV3SW5kZXgsIDAsIG5ld1RvYXN0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudG9hc3RzW29sZEluZGV4XSA9IG5ld1RvYXN0O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZW1pdChcInVwZGF0ZVwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZGlzbWlzc1RvYXN0KGtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnRvYXN0c1swXSAmJiB0aGlzLnRvYXN0c1swXS5rZXkgPT09IGtleSkge1xuICAgICAgICAgICAgdGhpcy5jb3VudFNlZW4rKztcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGxlbmd0aCA9IHRoaXMudG9hc3RzLmxlbmd0aDtcbiAgICAgICAgdGhpcy50b2FzdHMgPSB0aGlzLnRvYXN0cy5maWx0ZXIoKHQpID0+IHQua2V5ICE9PSBrZXkpO1xuICAgICAgICBpZiAobGVuZ3RoICE9PSB0aGlzLnRvYXN0cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnRvYXN0cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvdW50U2VlbiA9IDA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuZW1pdChcInVwZGF0ZVwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXRUb2FzdHMoKTogSVRvYXN0PGFueT5bXSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRvYXN0cztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Q291bnRTZWVuKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvdW50U2VlbjtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBUUEsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBUkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBbUJBO0FBQ0E7QUFDQTtBQUNlLE1BQU1DLFVBQVUsU0FBU0MsZUFBWSxDQUFDO0VBQUFDLFlBQUEsR0FBQUMsSUFBQTtJQUFBLFNBQUFBLElBQUE7SUFBQSxJQUFBQyxnQkFBQSxDQUFBQyxPQUFBLGtCQUNqQixFQUFFO0lBQ2xDO0lBQ0E7SUFBQSxJQUFBRCxnQkFBQSxDQUFBQyxPQUFBLHFCQUNvQixDQUFDO0VBQUE7RUFFckIsT0FBY0MsY0FBY0EsQ0FBQSxFQUFlO0lBQ3ZDLElBQUksQ0FBQ0MsTUFBTSxDQUFDQyxZQUFZLEVBQUVELE1BQU0sQ0FBQ0MsWUFBWSxHQUFHLElBQUlSLFVBQVUsQ0FBQyxDQUFDO0lBQ2hFLE9BQU9PLE1BQU0sQ0FBQ0MsWUFBWTtFQUM5QjtFQUVPQyxLQUFLQSxDQUFBLEVBQVM7SUFDakIsSUFBSSxDQUFDQyxNQUFNLEdBQUcsRUFBRTtJQUNoQixJQUFJLENBQUNDLFNBQVMsR0FBRyxDQUFDO0VBQ3RCOztFQUVBO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNXQyxpQkFBaUJBLENBQTJCQyxRQUFtQixFQUFRO0lBQzFFLE1BQU1DLFFBQVEsR0FBRyxJQUFJLENBQUNKLE1BQU0sQ0FBQ0ssU0FBUyxDQUFFQyxDQUFDLElBQUtBLENBQUMsQ0FBQ0MsR0FBRyxLQUFLSixRQUFRLENBQUNJLEdBQUcsQ0FBQztJQUNyRSxJQUFJSCxRQUFRLEtBQUssQ0FBQyxDQUFDLEVBQUU7TUFDakIsSUFBSUksUUFBUSxHQUFHLElBQUksQ0FBQ1IsTUFBTSxDQUFDUyxNQUFNO01BQ2pDLE9BQU9ELFFBQVEsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDUixNQUFNLENBQUNRLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQ0UsUUFBUSxHQUFHUCxRQUFRLENBQUNPLFFBQVEsRUFBRSxFQUFFRixRQUFRO01BQ3pGLElBQUksQ0FBQ1IsTUFBTSxDQUFDVyxNQUFNLENBQUNILFFBQVEsRUFBRSxDQUFDLEVBQUVMLFFBQVEsQ0FBQztJQUM3QyxDQUFDLE1BQU07TUFDSCxJQUFJLENBQUNILE1BQU0sQ0FBQ0ksUUFBUSxDQUFDLEdBQUdELFFBQVE7SUFDcEM7SUFDQSxJQUFJLENBQUNTLElBQUksQ0FBQyxRQUFRLENBQUM7RUFDdkI7RUFFT0MsWUFBWUEsQ0FBQ04sR0FBVyxFQUFRO0lBQ25DLElBQUksSUFBSSxDQUFDUCxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDQSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUNPLEdBQUcsS0FBS0EsR0FBRyxFQUFFO01BQzlDLElBQUksQ0FBQ04sU0FBUyxFQUFFO0lBQ3BCO0lBRUEsTUFBTVEsTUFBTSxHQUFHLElBQUksQ0FBQ1QsTUFBTSxDQUFDUyxNQUFNO0lBQ2pDLElBQUksQ0FBQ1QsTUFBTSxHQUFHLElBQUksQ0FBQ0EsTUFBTSxDQUFDYyxNQUFNLENBQUVSLENBQUMsSUFBS0EsQ0FBQyxDQUFDQyxHQUFHLEtBQUtBLEdBQUcsQ0FBQztJQUN0RCxJQUFJRSxNQUFNLEtBQUssSUFBSSxDQUFDVCxNQUFNLENBQUNTLE1BQU0sRUFBRTtNQUMvQixJQUFJLElBQUksQ0FBQ1QsTUFBTSxDQUFDUyxNQUFNLEtBQUssQ0FBQyxFQUFFO1FBQzFCLElBQUksQ0FBQ1IsU0FBUyxHQUFHLENBQUM7TUFDdEI7TUFFQSxJQUFJLENBQUNXLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkI7RUFDSjtFQUVPRyxTQUFTQSxDQUFBLEVBQWtCO0lBQzlCLE9BQU8sSUFBSSxDQUFDZixNQUFNO0VBQ3RCO0VBRU9nQixZQUFZQSxDQUFBLEVBQVc7SUFDMUIsT0FBTyxJQUFJLENBQUNmLFNBQVM7RUFDekI7QUFDSjtBQUFDZ0IsT0FBQSxDQUFBdEIsT0FBQSxHQUFBTCxVQUFBIiwiaWdub3JlTGlzdCI6W119