matrix-react-sdk
Version:
SDK for matrix.org using React
86 lines (82 loc) • 10.8 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.WidgetMessagingStoreEvent = exports.WidgetMessagingStore = void 0;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _AsyncStoreWithClient = require("../AsyncStoreWithClient");
var _dispatcher = _interopRequireDefault(require("../../dispatcher/dispatcher"));
var _maps = require("../../utils/maps");
var _WidgetUtils = _interopRequireDefault(require("../../utils/WidgetUtils"));
var _WidgetMessagingStore;
/*
* 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.
*/
let WidgetMessagingStoreEvent = exports.WidgetMessagingStoreEvent = /*#__PURE__*/function (WidgetMessagingStoreEvent) {
WidgetMessagingStoreEvent["StoreMessaging"] = "store_messaging";
WidgetMessagingStoreEvent["StopMessaging"] = "stop_messaging";
return WidgetMessagingStoreEvent;
}({});
/**
* Temporary holding store for widget messaging instances. This is eventually
* going to be merged with a more complete WidgetStore, but for now it's
* easiest to split this into a single place.
*/
class WidgetMessagingStore extends _AsyncStoreWithClient.AsyncStoreWithClient {
// <widget UID, ClientWidgetAPi>
constructor() {
super(_dispatcher.default);
(0, _defineProperty2.default)(this, "widgetMap", new _maps.EnhancedMap());
}
static get instance() {
return WidgetMessagingStore.internalInstance;
}
async onAction(payload) {
// nothing to do
}
async onReady() {
// just in case
this.widgetMap.clear();
}
storeMessaging(widget, roomId, widgetApi) {
this.stopMessaging(widget, roomId);
const uid = _WidgetUtils.default.calcWidgetUid(widget.id, roomId);
this.widgetMap.set(uid, widgetApi);
this.emit(WidgetMessagingStoreEvent.StoreMessaging, uid, widgetApi);
}
stopMessaging(widget, roomId) {
this.stopMessagingByUid(_WidgetUtils.default.calcWidgetUid(widget.id, roomId));
}
getMessaging(widget, roomId) {
return this.widgetMap.get(_WidgetUtils.default.calcWidgetUid(widget.id, roomId));
}
/**
* Stops the widget messaging instance for a given widget UID.
* @param {string} widgetUid The widget UID.
*/
stopMessagingByUid(widgetUid) {
this.widgetMap.remove(widgetUid)?.stop();
this.emit(WidgetMessagingStoreEvent.StopMessaging, widgetUid);
}
/**
* Gets the widget messaging class for a given widget UID.
* @param {string} widgetUid The widget UID.
* @returns {ClientWidgetApi} The widget API, or a falsy value if not found.
*/
getMessagingForUid(widgetUid) {
return this.widgetMap.get(widgetUid);
}
}
exports.WidgetMessagingStore = WidgetMessagingStore;
_WidgetMessagingStore = WidgetMessagingStore;
(0, _defineProperty2.default)(WidgetMessagingStore, "internalInstance", (() => {
const instance = new _WidgetMessagingStore();
instance.start();
return instance;
})());
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfQXN5bmNTdG9yZVdpdGhDbGllbnQiLCJyZXF1aXJlIiwiX2Rpc3BhdGNoZXIiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX21hcHMiLCJfV2lkZ2V0VXRpbHMiLCJfV2lkZ2V0TWVzc2FnaW5nU3RvcmUiLCJXaWRnZXRNZXNzYWdpbmdTdG9yZUV2ZW50IiwiZXhwb3J0cyIsIldpZGdldE1lc3NhZ2luZ1N0b3JlIiwiQXN5bmNTdG9yZVdpdGhDbGllbnQiLCJjb25zdHJ1Y3RvciIsImRlZmF1bHREaXNwYXRjaGVyIiwiX2RlZmluZVByb3BlcnR5MiIsImRlZmF1bHQiLCJFbmhhbmNlZE1hcCIsImluc3RhbmNlIiwiaW50ZXJuYWxJbnN0YW5jZSIsIm9uQWN0aW9uIiwicGF5bG9hZCIsIm9uUmVhZHkiLCJ3aWRnZXRNYXAiLCJjbGVhciIsInN0b3JlTWVzc2FnaW5nIiwid2lkZ2V0Iiwicm9vbUlkIiwid2lkZ2V0QXBpIiwic3RvcE1lc3NhZ2luZyIsInVpZCIsIldpZGdldFV0aWxzIiwiY2FsY1dpZGdldFVpZCIsImlkIiwic2V0IiwiZW1pdCIsIlN0b3JlTWVzc2FnaW5nIiwic3RvcE1lc3NhZ2luZ0J5VWlkIiwiZ2V0TWVzc2FnaW5nIiwiZ2V0Iiwid2lkZ2V0VWlkIiwicmVtb3ZlIiwic3RvcCIsIlN0b3BNZXNzYWdpbmciLCJnZXRNZXNzYWdpbmdGb3JVaWQiLCJzdGFydCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zdG9yZXMvd2lkZ2V0cy9XaWRnZXRNZXNzYWdpbmdTdG9yZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMjQgTmV3IFZlY3RvciBMdGQuXG4gKiBDb3B5cmlnaHQgMjAyMCBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuICpcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBR1BMLTMuMC1vbmx5IE9SIEdQTC0zLjAtb25seVxuICogUGxlYXNlIHNlZSBMSUNFTlNFIGZpbGVzIGluIHRoZSByZXBvc2l0b3J5IHJvb3QgZm9yIGZ1bGwgZGV0YWlscy5cbiAqL1xuXG5pbXBvcnQgeyBDbGllbnRXaWRnZXRBcGksIFdpZGdldCB9IGZyb20gXCJtYXRyaXgtd2lkZ2V0LWFwaVwiO1xuXG5pbXBvcnQgeyBBc3luY1N0b3JlV2l0aENsaWVudCB9IGZyb20gXCIuLi9Bc3luY1N0b3JlV2l0aENsaWVudFwiO1xuaW1wb3J0IGRlZmF1bHREaXNwYXRjaGVyIGZyb20gXCIuLi8uLi9kaXNwYXRjaGVyL2Rpc3BhdGNoZXJcIjtcbmltcG9ydCB7IEFjdGlvblBheWxvYWQgfSBmcm9tIFwiLi4vLi4vZGlzcGF0Y2hlci9wYXlsb2Fkc1wiO1xuaW1wb3J0IHsgRW5oYW5jZWRNYXAgfSBmcm9tIFwiLi4vLi4vdXRpbHMvbWFwc1wiO1xuaW1wb3J0IFdpZGdldFV0aWxzIGZyb20gXCIuLi8uLi91dGlscy9XaWRnZXRVdGlsc1wiO1xuXG5leHBvcnQgZW51bSBXaWRnZXRNZXNzYWdpbmdTdG9yZUV2ZW50IHtcbiAgICBTdG9yZU1lc3NhZ2luZyA9IFwic3RvcmVfbWVzc2FnaW5nXCIsXG4gICAgU3RvcE1lc3NhZ2luZyA9IFwic3RvcF9tZXNzYWdpbmdcIixcbn1cblxuLyoqXG4gKiBUZW1wb3JhcnkgaG9sZGluZyBzdG9yZSBmb3Igd2lkZ2V0IG1lc3NhZ2luZyBpbnN0YW5jZXMuIFRoaXMgaXMgZXZlbnR1YWxseVxuICogZ29pbmcgdG8gYmUgbWVyZ2VkIHdpdGggYSBtb3JlIGNvbXBsZXRlIFdpZGdldFN0b3JlLCBidXQgZm9yIG5vdyBpdCdzXG4gKiBlYXNpZXN0IHRvIHNwbGl0IHRoaXMgaW50byBhIHNpbmdsZSBwbGFjZS5cbiAqL1xuZXhwb3J0IGNsYXNzIFdpZGdldE1lc3NhZ2luZ1N0b3JlIGV4dGVuZHMgQXN5bmNTdG9yZVdpdGhDbGllbnQ8e30+IHtcbiAgICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBpbnRlcm5hbEluc3RhbmNlID0gKCgpID0+IHtcbiAgICAgICAgY29uc3QgaW5zdGFuY2UgPSBuZXcgV2lkZ2V0TWVzc2FnaW5nU3RvcmUoKTtcbiAgICAgICAgaW5zdGFuY2Uuc3RhcnQoKTtcbiAgICAgICAgcmV0dXJuIGluc3RhbmNlO1xuICAgIH0pKCk7XG5cbiAgICBwcml2YXRlIHdpZGdldE1hcCA9IG5ldyBFbmhhbmNlZE1hcDxzdHJpbmcsIENsaWVudFdpZGdldEFwaT4oKTsgLy8gPHdpZGdldCBVSUQsIENsaWVudFdpZGdldEFQaT5cblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoZGVmYXVsdERpc3BhdGNoZXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0IGluc3RhbmNlKCk6IFdpZGdldE1lc3NhZ2luZ1N0b3JlIHtcbiAgICAgICAgcmV0dXJuIFdpZGdldE1lc3NhZ2luZ1N0b3JlLmludGVybmFsSW5zdGFuY2U7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFzeW5jIG9uQWN0aW9uKHBheWxvYWQ6IEFjdGlvblBheWxvYWQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgLy8gbm90aGluZyB0byBkb1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBhc3luYyBvblJlYWR5KCk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIC8vIGp1c3QgaW4gY2FzZVxuICAgICAgICB0aGlzLndpZGdldE1hcC5jbGVhcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdG9yZU1lc3NhZ2luZyh3aWRnZXQ6IFdpZGdldCwgcm9vbUlkOiBzdHJpbmcgfCB1bmRlZmluZWQsIHdpZGdldEFwaTogQ2xpZW50V2lkZ2V0QXBpKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RvcE1lc3NhZ2luZyh3aWRnZXQsIHJvb21JZCk7XG4gICAgICAgIGNvbnN0IHVpZCA9IFdpZGdldFV0aWxzLmNhbGNXaWRnZXRVaWQod2lkZ2V0LmlkLCByb29tSWQpO1xuICAgICAgICB0aGlzLndpZGdldE1hcC5zZXQodWlkLCB3aWRnZXRBcGkpO1xuXG4gICAgICAgIHRoaXMuZW1pdChXaWRnZXRNZXNzYWdpbmdTdG9yZUV2ZW50LlN0b3JlTWVzc2FnaW5nLCB1aWQsIHdpZGdldEFwaSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0b3BNZXNzYWdpbmcod2lkZ2V0OiBXaWRnZXQsIHJvb21JZDogc3RyaW5nIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RvcE1lc3NhZ2luZ0J5VWlkKFdpZGdldFV0aWxzLmNhbGNXaWRnZXRVaWQod2lkZ2V0LmlkLCByb29tSWQpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0TWVzc2FnaW5nKHdpZGdldDogV2lkZ2V0LCByb29tSWQ6IHN0cmluZyB8IHVuZGVmaW5lZCk6IENsaWVudFdpZGdldEFwaSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLndpZGdldE1hcC5nZXQoV2lkZ2V0VXRpbHMuY2FsY1dpZGdldFVpZCh3aWRnZXQuaWQsIHJvb21JZCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFN0b3BzIHRoZSB3aWRnZXQgbWVzc2FnaW5nIGluc3RhbmNlIGZvciBhIGdpdmVuIHdpZGdldCBVSUQuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHdpZGdldFVpZCBUaGUgd2lkZ2V0IFVJRC5cbiAgICAgKi9cbiAgICBwdWJsaWMgc3RvcE1lc3NhZ2luZ0J5VWlkKHdpZGdldFVpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMud2lkZ2V0TWFwLnJlbW92ZSh3aWRnZXRVaWQpPy5zdG9wKCk7XG4gICAgICAgIHRoaXMuZW1pdChXaWRnZXRNZXNzYWdpbmdTdG9yZUV2ZW50LlN0b3BNZXNzYWdpbmcsIHdpZGdldFVpZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgd2lkZ2V0IG1lc3NhZ2luZyBjbGFzcyBmb3IgYSBnaXZlbiB3aWRnZXQgVUlELlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB3aWRnZXRVaWQgVGhlIHdpZGdldCBVSUQuXG4gICAgICogQHJldHVybnMge0NsaWVudFdpZGdldEFwaX0gVGhlIHdpZGdldCBBUEksIG9yIGEgZmFsc3kgdmFsdWUgaWYgbm90IGZvdW5kLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRNZXNzYWdpbmdGb3JVaWQod2lkZ2V0VWlkOiBzdHJpbmcpOiBDbGllbnRXaWRnZXRBcGkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy53aWRnZXRNYXAuZ2V0KHdpZGdldFVpZCk7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQVVBLElBQUFBLHFCQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxXQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFFQSxJQUFBRyxLQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxZQUFBLEdBQUFGLHNCQUFBLENBQUFGLE9BQUE7QUFBa0QsSUFBQUsscUJBQUE7QUFkbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFOQSxJQWdCWUMseUJBQXlCLEdBQUFDLE9BQUEsQ0FBQUQseUJBQUEsMEJBQXpCQSx5QkFBeUI7RUFBekJBLHlCQUF5QjtFQUF6QkEseUJBQXlCO0VBQUEsT0FBekJBLHlCQUF5QjtBQUFBO0FBS3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxNQUFNRSxvQkFBb0IsU0FBU0MsMENBQW9CLENBQUs7RUFPQzs7RUFFekRDLFdBQVdBLENBQUEsRUFBRztJQUNqQixLQUFLLENBQUNDLG1CQUFpQixDQUFDO0lBQUMsSUFBQUMsZ0JBQUEsQ0FBQUMsT0FBQSxxQkFIVCxJQUFJQyxpQkFBVyxDQUEwQixDQUFDO0VBSTlEO0VBRUEsV0FBa0JDLFFBQVFBLENBQUEsRUFBeUI7SUFDL0MsT0FBT1Asb0JBQW9CLENBQUNRLGdCQUFnQjtFQUNoRDtFQUVBLE1BQWdCQyxRQUFRQSxDQUFDQyxPQUFzQixFQUFpQjtJQUM1RDtFQUFBO0VBR0osTUFBZ0JDLE9BQU9BLENBQUEsRUFBaUI7SUFDcEM7SUFDQSxJQUFJLENBQUNDLFNBQVMsQ0FBQ0MsS0FBSyxDQUFDLENBQUM7RUFDMUI7RUFFT0MsY0FBY0EsQ0FBQ0MsTUFBYyxFQUFFQyxNQUEwQixFQUFFQyxTQUEwQixFQUFRO0lBQ2hHLElBQUksQ0FBQ0MsYUFBYSxDQUFDSCxNQUFNLEVBQUVDLE1BQU0sQ0FBQztJQUNsQyxNQUFNRyxHQUFHLEdBQUdDLG9CQUFXLENBQUNDLGFBQWEsQ0FBQ04sTUFBTSxDQUFDTyxFQUFFLEVBQUVOLE1BQU0sQ0FBQztJQUN4RCxJQUFJLENBQUNKLFNBQVMsQ0FBQ1csR0FBRyxDQUFDSixHQUFHLEVBQUVGLFNBQVMsQ0FBQztJQUVsQyxJQUFJLENBQUNPLElBQUksQ0FBQzFCLHlCQUF5QixDQUFDMkIsY0FBYyxFQUFFTixHQUFHLEVBQUVGLFNBQVMsQ0FBQztFQUN2RTtFQUVPQyxhQUFhQSxDQUFDSCxNQUFjLEVBQUVDLE1BQTBCLEVBQVE7SUFDbkUsSUFBSSxDQUFDVSxrQkFBa0IsQ0FBQ04sb0JBQVcsQ0FBQ0MsYUFBYSxDQUFDTixNQUFNLENBQUNPLEVBQUUsRUFBRU4sTUFBTSxDQUFDLENBQUM7RUFDekU7RUFFT1csWUFBWUEsQ0FBQ1osTUFBYyxFQUFFQyxNQUEwQixFQUErQjtJQUN6RixPQUFPLElBQUksQ0FBQ0osU0FBUyxDQUFDZ0IsR0FBRyxDQUFDUixvQkFBVyxDQUFDQyxhQUFhLENBQUNOLE1BQU0sQ0FBQ08sRUFBRSxFQUFFTixNQUFNLENBQUMsQ0FBQztFQUMzRTs7RUFFQTtBQUNKO0FBQ0E7QUFDQTtFQUNXVSxrQkFBa0JBLENBQUNHLFNBQWlCLEVBQVE7SUFDL0MsSUFBSSxDQUFDakIsU0FBUyxDQUFDa0IsTUFBTSxDQUFDRCxTQUFTLENBQUMsRUFBRUUsSUFBSSxDQUFDLENBQUM7SUFDeEMsSUFBSSxDQUFDUCxJQUFJLENBQUMxQix5QkFBeUIsQ0FBQ2tDLGFBQWEsRUFBRUgsU0FBUyxDQUFDO0VBQ2pFOztFQUVBO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7RUFDV0ksa0JBQWtCQSxDQUFDSixTQUFpQixFQUErQjtJQUN0RSxPQUFPLElBQUksQ0FBQ2pCLFNBQVMsQ0FBQ2dCLEdBQUcsQ0FBQ0MsU0FBUyxDQUFDO0VBQ3hDO0FBQ0o7QUFBQzlCLE9BQUEsQ0FBQUMsb0JBQUEsR0FBQUEsb0JBQUE7QUFBQUgscUJBQUEsR0EzRFlHLG9CQUFvQjtBQUFBLElBQUFJLGdCQUFBLENBQUFDLE9BQUEsRUFBcEJMLG9CQUFvQixzQkFDYyxDQUFDLE1BQU07RUFDOUMsTUFBTU8sUUFBUSxHQUFHLElBQUlQLHFCQUFvQixDQUFDLENBQUM7RUFDM0NPLFFBQVEsQ0FBQzJCLEtBQUssQ0FBQyxDQUFDO0VBQ2hCLE9BQU8zQixRQUFRO0FBQ25CLENBQUMsRUFBRSxDQUFDIiwiaWdub3JlTGlzdCI6W119