UNPKG

matrix-react-sdk

Version:
120 lines (91 loc) 15.2 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _react = _interopRequireDefault(require("react")); var _RoomViewStore = _interopRequireDefault(require("../../../stores/RoomViewStore")); var _ActiveWidgetStore = _interopRequireDefault(require("../../../stores/ActiveWidgetStore")); var _WidgetUtils = _interopRequireDefault(require("../../../utils/WidgetUtils")); var sdk = _interopRequireWildcard(require("../../../index")); var _MatrixClientPeg = require("../../../MatrixClientPeg"); var _replaceableComponent = require("../../../utils/replaceableComponent"); var _dec, _class, _temp; let PersistentApp = (_dec = (0, _replaceableComponent.replaceableComponent)("views.elements.PersistentApp"), _dec(_class = (_temp = class PersistentApp extends _react.default.Component { constructor(...args) { super(...args); (0, _defineProperty2.default)(this, "state", { roomId: _RoomViewStore.default.getRoomId(), persistentWidgetId: _ActiveWidgetStore.default.getPersistentWidgetId() }); (0, _defineProperty2.default)(this, "_onRoomViewStoreUpdate", payload => { if (_RoomViewStore.default.getRoomId() === this.state.roomId) return; this.setState({ roomId: _RoomViewStore.default.getRoomId() }); }); (0, _defineProperty2.default)(this, "_onActiveWidgetStoreUpdate", () => { this.setState({ persistentWidgetId: _ActiveWidgetStore.default.getPersistentWidgetId() }); }); (0, _defineProperty2.default)(this, "_onMyMembership", async (room, membership) => { const persistentWidgetInRoomId = _ActiveWidgetStore.default.getRoomId(this.state.persistentWidgetId); if (membership !== "join") { // we're not in the room anymore - delete if (room.roomId === persistentWidgetInRoomId) { _ActiveWidgetStore.default.destroyPersistentWidget(this.state.persistentWidgetId); } } }); } componentDidMount() { this._roomStoreToken = _RoomViewStore.default.addListener(this._onRoomViewStoreUpdate); _ActiveWidgetStore.default.on('update', this._onActiveWidgetStoreUpdate); _MatrixClientPeg.MatrixClientPeg.get().on("Room.myMembership", this._onMyMembership); } componentWillUnmount() { if (this._roomStoreToken) { this._roomStoreToken.remove(); } _ActiveWidgetStore.default.removeListener('update', this._onActiveWidgetStoreUpdate); if (_MatrixClientPeg.MatrixClientPeg.get()) { _MatrixClientPeg.MatrixClientPeg.get().removeListener("Room.myMembership", this._onMyMembership); } } render() { if (this.state.persistentWidgetId) { const persistentWidgetInRoomId = _ActiveWidgetStore.default.getRoomId(this.state.persistentWidgetId); const persistentWidgetInRoom = _MatrixClientPeg.MatrixClientPeg.get().getRoom(persistentWidgetInRoomId); // Sanity check the room - the widget may have been destroyed between render cycles, and // thus no room is associated anymore. if (!persistentWidgetInRoom) return null; const myMembership = persistentWidgetInRoom.getMyMembership(); if (this.state.roomId !== persistentWidgetInRoomId && myMembership === "join") { // get the widget data const appEvent = _WidgetUtils.default.getRoomWidgets(persistentWidgetInRoom).find(ev => { return ev.getStateKey() === _ActiveWidgetStore.default.getPersistentWidgetId(); }); const app = _WidgetUtils.default.makeAppConfig(appEvent.getStateKey(), appEvent.getContent(), appEvent.getSender(), persistentWidgetInRoomId, appEvent.getId()); const AppTile = sdk.getComponent('elements.AppTile'); return /*#__PURE__*/_react.default.createElement(AppTile, { key: app.id, app: app, fullWidth: true, room: persistentWidgetInRoom, userId: _MatrixClientPeg.MatrixClientPeg.get().credentials.userId, creatorUserId: app.creatorUserId, widgetPageTitle: _WidgetUtils.default.getWidgetDataTitle(app), waitForIframeLoad: app.waitForIframeLoad, miniMode: true, showMenubar: false }); } } return null; } }, _temp)) || _class); exports.default = PersistentApp; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3ZpZXdzL2VsZW1lbnRzL1BlcnNpc3RlbnRBcHAuanMiXSwibmFtZXMiOlsiUGVyc2lzdGVudEFwcCIsIlJlYWN0IiwiQ29tcG9uZW50Iiwicm9vbUlkIiwiUm9vbVZpZXdTdG9yZSIsImdldFJvb21JZCIsInBlcnNpc3RlbnRXaWRnZXRJZCIsIkFjdGl2ZVdpZGdldFN0b3JlIiwiZ2V0UGVyc2lzdGVudFdpZGdldElkIiwicGF5bG9hZCIsInN0YXRlIiwic2V0U3RhdGUiLCJyb29tIiwibWVtYmVyc2hpcCIsInBlcnNpc3RlbnRXaWRnZXRJblJvb21JZCIsImRlc3Ryb3lQZXJzaXN0ZW50V2lkZ2V0IiwiY29tcG9uZW50RGlkTW91bnQiLCJfcm9vbVN0b3JlVG9rZW4iLCJhZGRMaXN0ZW5lciIsIl9vblJvb21WaWV3U3RvcmVVcGRhdGUiLCJvbiIsIl9vbkFjdGl2ZVdpZGdldFN0b3JlVXBkYXRlIiwiTWF0cml4Q2xpZW50UGVnIiwiZ2V0IiwiX29uTXlNZW1iZXJzaGlwIiwiY29tcG9uZW50V2lsbFVubW91bnQiLCJyZW1vdmUiLCJyZW1vdmVMaXN0ZW5lciIsInJlbmRlciIsInBlcnNpc3RlbnRXaWRnZXRJblJvb20iLCJnZXRSb29tIiwibXlNZW1iZXJzaGlwIiwiZ2V0TXlNZW1iZXJzaGlwIiwiYXBwRXZlbnQiLCJXaWRnZXRVdGlscyIsImdldFJvb21XaWRnZXRzIiwiZmluZCIsImV2IiwiZ2V0U3RhdGVLZXkiLCJhcHAiLCJtYWtlQXBwQ29uZmlnIiwiZ2V0Q29udGVudCIsImdldFNlbmRlciIsImdldElkIiwiQXBwVGlsZSIsInNkayIsImdldENvbXBvbmVudCIsImlkIiwiY3JlZGVudGlhbHMiLCJ1c2VySWQiLCJjcmVhdG9yVXNlcklkIiwiZ2V0V2lkZ2V0RGF0YVRpdGxlIiwid2FpdEZvcklmcmFtZUxvYWQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFpQkE7O0FBQ0E7O0FBQ0E7O0FB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LHFCQUFZTSxhQUFaLENBQ1JQLFFBQVEsQ0FBQ0ssV0FBVCxFQURRLEVBQ2dCTCxRQUFRLENBQUNRLFVBQVQsRUFEaEIsRUFDdUNSLFFBQVEsQ0FBQ1MsU0FBVCxFQUR2QyxFQUVSNUIsd0JBRlEsRUFFa0JtQixRQUFRLENBQUNVLEtBQVQsRUFGbEIsQ0FBWjs7QUFJQSxjQUFNQyxPQUFPLEdBQUdDLEdBQUcsQ0FBQ0MsWUFBSixDQUFpQixrQkFBakIsQ0FBaEI7QUFDQSw0QkFBTyw2QkFBQyxPQUFEO0FBQ0gsVUFBQSxHQUFHLEVBQUVQLEdBQUcsQ0FBQ1EsRUFETjtBQUVILFVBQUEsR0FBRyxFQUFFUixHQUZGO0FBR0gsVUFBQSxTQUFTLEVBQUUsSUFIUjtBQUlILFVBQUEsSUFBSSxFQUFFVixzQkFKSDtBQUtILFVBQUEsTUFBTSxFQUFFUCxpQ0FBZ0JDLEdBQWhCLEdBQXNCeUIsV0FBdEIsQ0FBa0NDLE1BTHZDO0FBTUgsVUFBQSxhQUFhLEVBQUVWLEdBQUcsQ0FBQ1csYUFOaEI7QUFPSCxVQUFBLGVBQWUsRUFBRWhCLHFCQUFZaUIsa0JBQVosQ0FBK0JaLEdBQS9CLENBUGQ7QUFRSCxVQUFBLGlCQUFpQixFQUFFQSxHQUFHLENBQUNhLGlCQVJwQjtBQVNILFVBQUEsUUFBUSxFQUFFLElBVFA7QUFVSCxVQUFBLFdBQVcsRUFBRTtBQVZWLFVBQVA7QUFZSDtBQUNKOztBQUNELFdBQU8sSUFBUDtBQUNIOztBQWpGc0QsQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG5Db3B5cmlnaHQgMjAxOCBOZXcgVmVjdG9yIEx0ZFxuQ29weXJpZ2h0IDIwMTksIDIwMjAgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFJvb21WaWV3U3RvcmUgZnJvbSAnLi4vLi4vLi4vc3RvcmVzL1Jvb21WaWV3U3RvcmUnO1xuaW1wb3J0IEFjdGl2ZVdpZGdldFN0b3JlIGZyb20gJy4uLy4uLy4uL3N0b3Jlcy9BY3RpdmVXaWRnZXRTdG9yZSc7XG5pbXBvcnQgV2lkZ2V0VXRpbHMgZnJvbSAnLi4vLi4vLi4vdXRpbHMvV2lkZ2V0VXRpbHMnO1xuaW1wb3J0ICogYXMgc2RrIGZyb20gJy4uLy4uLy4uL2luZGV4JztcbmltcG9ydCB7TWF0cml4Q2xpZW50UGVnfSBmcm9tICcuLi8uLi8uLi9NYXRyaXhDbGllbnRQZWcnO1xuaW1wb3J0IHtyZXBsYWNlYWJsZUNvbXBvbmVudH0gZnJvbSBcIi4uLy4uLy4uL3V0aWxzL3JlcGxhY2VhYmxlQ29tcG9uZW50XCI7XG5cbkByZXBsYWNlYWJsZUNvbXBvbmVudChcInZpZXdzLmVsZW1lbnRzLlBlcnNpc3RlbnRBcHBcIilcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBlcnNpc3RlbnRBcHAgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICAgIHN0YXRlID0ge1xuICAgICAgICByb29tSWQ6IFJvb21WaWV3U3RvcmUuZ2V0Um9vbUlkKCksXG4gICAgICAgIHBlcnNpc3RlbnRXaWRnZXRJZDogQWN0aXZlV2lkZ2V0U3RvcmUuZ2V0UGVyc2lzdGVudFdpZGdldElkKCksXG4gICAgfTtcblxuICAgIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgICB0aGlzLl9yb29tU3RvcmVUb2tlbiA9IFJvb21WaWV3U3RvcmUuYWRkTGlzdGVuZXIodGhpcy5fb25Sb29tVmlld1N0b3JlVXBkYXRlKTtcbiAgICAgICAgQWN0aXZlV2lkZ2V0U3RvcmUub24oJ3VwZGF0ZScsIHRoaXMuX29uQWN0aXZlV2lkZ2V0U3RvcmVVcGRhdGUpO1xuICAgICAgICBNYXRyaXhDbGllbnRQZWcuZ2V0KCkub24oXCJSb29tLm15TWVtYmVyc2hpcFwiLCB0aGlzLl9vbk15TWVtYmVyc2hpcCk7XG4gICAgfVxuXG4gICAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgICAgIGlmICh0aGlzLl9yb29tU3RvcmVUb2tlbikge1xuICAgICAgICAgICAgdGhpcy5fcm9vbVN0b3JlVG9rZW4ucmVtb3ZlKCk7XG4gICAgICAgIH1cbiAgICAgICAgQWN0aXZlV2lkZ2V0U3RvcmUucmVtb3ZlTGlzdGVuZXIoJ3VwZGF0ZScsIHRoaXMuX29uQWN0aXZlV2lkZ2V0U3RvcmVVcGRhdGUpO1xuICAgICAgICBpZiAoTWF0cml4Q2xpZW50UGVnLmdldCgpKSB7XG4gICAgICAgICAgICBNYXRyaXhDbGllbnRQZWcuZ2V0KCkucmVtb3ZlTGlzdGVuZXIoXCJSb29tLm15TWVtYmVyc2hpcFwiLCB0aGlzLl9vbk15TWVtYmVyc2hpcCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBfb25Sb29tVmlld1N0b3JlVXBkYXRlID0gcGF5bG9hZCA9PiB7XG4gICAgICAgIGlmIChSb29tVmlld1N0b3JlLmdldFJvb21JZCgpID09PSB0aGlzLnN0YXRlLnJvb21JZCkgcmV0dXJuO1xuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgIHJvb21JZDogUm9vbVZpZXdTdG9yZS5nZXRSb29tSWQoKSxcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIF9vbkFjdGl2ZVdpZGdldFN0b3JlVXBkYXRlID0gKCkgPT4ge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgIHBlcnNpc3RlbnRXaWRnZXRJZDogQWN0aXZlV2lkZ2V0U3RvcmUuZ2V0UGVyc2lzdGVudFdpZGdldElkKCksXG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBfb25NeU1lbWJlcnNoaXAgPSBhc3luYyAocm9vbSwgbWVtYmVyc2hpcCkgPT4ge1xuICAgICAgICBjb25zdCBwZXJzaXN0ZW50V2lkZ2V0SW5Sb29tSWQgPSBBY3RpdmVXaWRnZXRTdG9yZS5nZXRSb29tSWQodGhpcy5zdGF0ZS5wZXJzaXN0ZW50V2lkZ2V0SWQpO1xuICAgICAgICBpZiAobWVtYmVyc2hpcCAhPT0gXCJqb2luXCIpIHtcbiAgICAgICAgICAgIC8vIHdlJ3JlIG5vdCBpbiB0aGUgcm9vbSBhbnltb3JlIC0gZGVsZXRlXG4gICAgICAgICAgICBpZiAocm9vbS5yb29tSWQgPT09IHBlcnNpc3RlbnRXaWRnZXRJblJvb21JZCkge1xuICAgICAgICAgICAgICAgIEFjdGl2ZVdpZGdldFN0b3JlLmRlc3Ryb3lQZXJzaXN0ZW50V2lkZ2V0KHRoaXMuc3RhdGUucGVyc2lzdGVudFdpZGdldElkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG5cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLnN0YXRlLnBlcnNpc3RlbnRXaWRnZXRJZCkge1xuICAgICAgICAgICAgY29uc3QgcGVyc2lzdGVudFdpZGdldEluUm9vbUlkID0gQWN0aXZlV2lkZ2V0U3RvcmUuZ2V0Um9vbUlkKHRoaXMuc3RhdGUucGVyc2lzdGVudFdpZGdldElkKTtcblxuICAgICAgICAgICAgY29uc3QgcGVyc2lzdGVudFdpZGdldEluUm9vbSA9IE1hdHJpeENsaWVudFBlZy5nZXQoKS5nZXRSb29tKHBlcnNpc3RlbnRXaWRnZXRJblJvb21JZCk7XG5cbiAgICAgICAgICAgIC8vIFNhbml0eSBjaGVjayB0aGUgcm9vbSAtIHRoZSB3aWRnZXQgbWF5IGhhdmUgYmVlbiBkZXN0cm95ZWQgYmV0d2VlbiByZW5kZXIgY3ljbGVzLCBhbmRcbiAgICAgICAgICAgIC8vIHRodXMgbm8gcm9vbSBpcyBhc3NvY2lhdGVkIGFueW1vcmUuXG4gICAgICAgICAgICBpZiAoIXBlcnNpc3RlbnRXaWRnZXRJblJvb20pIHJldHVybiBudWxsO1xuXG4gICAgICAgICAgICBjb25zdCBteU1lbWJlcnNoaXAgPSBwZXJzaXN0ZW50V2lkZ2V0SW5Sb29tLmdldE15TWVtYmVyc2hpcCgpO1xuICAgICAgICAgICAgaWYgKHRoaXMuc3RhdGUucm9vbUlkICE9PSBwZXJzaXN0ZW50V2lkZ2V0SW5Sb29tSWQgJiYgbXlNZW1iZXJzaGlwID09PSBcImpvaW5cIikge1xuICAgICAgICAgICAgICAgIC8vIGdldCB0aGUgd2lkZ2V0IGRhdGFcbiAgICAgICAgICAgICAgICBjb25zdCBhcHBFdmVudCA9IFdpZGdldFV0aWxzLmdldFJvb21XaWRnZXRzKHBlcnNpc3RlbnRXaWRnZXRJblJvb20pLmZpbmQoKGV2KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBldi5nZXRTdGF0ZUtleSgpID09PSBBY3RpdmVXaWRnZXRTdG9yZS5nZXRQZXJzaXN0ZW50V2lkZ2V0SWQoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBjb25zdCBhcHAgPSBXaWRnZXRVdGlscy5tYWtlQXBwQ29uZmlnKFxuICAgICAgICAgICAgICAgICAgICBhcHBFdmVudC5nZXRTdGF0ZUtleSgpLCBhcHBFdmVudC5nZXRDb250ZW50KCksIGFwcEV2ZW50LmdldFNlbmRlcigpLFxuICAgICAgICAgICAgICAgICAgICBwZXJzaXN0ZW50V2lkZ2V0SW5Sb29tSWQsIGFwcEV2ZW50LmdldElkKCksXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBjb25zdCBBcHBUaWxlID0gc2RrLmdldENvbXBvbmVudCgnZWxlbWVudHMuQXBwVGlsZScpO1xuICAgICAgICAgICAgICAgIHJldHVybiA8QXBwVGlsZVxuICAgICAgICAgICAgICAgICAgICBrZXk9e2FwcC5pZH1cbiAgICAgICAgICAgICAgICAgICAgYXBwPXthcHB9XG4gICAgICAgICAgICAgICAgICAgIGZ1bGxXaWR0aD17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgcm9vbT17cGVyc2lzdGVudFdpZGdldEluUm9vbX1cbiAgICAgICAgICAgICAgICAgICAgdXNlcklkPXtNYXRyaXhDbGllbnRQZWcuZ2V0KCkuY3JlZGVudGlhbHMudXNlcklkfVxuICAgICAgICAgICAgICAgICAgICBjcmVhdG9yVXNlcklkPXthcHAuY3JlYXRvclVzZXJJZH1cbiAgICAgICAgICAgICAgICAgICAgd2lkZ2V0UGFnZVRpdGxlPXtXaWRnZXRVdGlscy5nZXRXaWRnZXREYXRhVGl0bGUoYXBwKX1cbiAgICAgICAgICAgICAgICAgICAgd2FpdEZvcklmcmFtZUxvYWQ9e2FwcC53YWl0Rm9ySWZyYW1lTG9hZH1cbiAgICAgICAgICAgICAgICAgICAgbWluaU1vZGU9e3RydWV9XG4gICAgICAgICAgICAgICAgICAgIHNob3dNZW51YmFyPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAvPjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG59XG5cbiJdfQ==