UNPKG

matrix-react-sdk

Version:
136 lines (106 loc) 17 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 = _interopRequireWildcard(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var sdk = _interopRequireWildcard(require("../../../index")); var _SettingsStore = _interopRequireDefault(require("../../../settings/SettingsStore")); var _Mjolnir = require("../../../mjolnir/Mjolnir"); var _RedactedBody = _interopRequireDefault(require("./RedactedBody")); var _UnknownBody = _interopRequireDefault(require("./UnknownBody")); var _replaceableComponent = require("../../../utils/replaceableComponent"); var _dec, _class, _class2, _temp; let MessageEvent = (_dec = (0, _replaceableComponent.replaceableComponent)("views.messages.MessageEvent"), _dec(_class = (_temp = _class2 = class MessageEvent extends _react.default.Component { constructor(props) { super(props); (0, _defineProperty2.default)(this, "getEventTileOps", () => { return this._body.current && this._body.current.getEventTileOps ? this._body.current.getEventTileOps() : null; }); (0, _defineProperty2.default)(this, "onTileUpdate", () => { this.forceUpdate(); }); this._body = /*#__PURE__*/(0, _react.createRef)(); } render() { const bodyTypes = { 'm.text': sdk.getComponent('messages.TextualBody'), 'm.notice': sdk.getComponent('messages.TextualBody'), 'm.emote': sdk.getComponent('messages.TextualBody'), 'm.image': sdk.getComponent('messages.MImageBody'), 'm.file': sdk.getComponent('messages.MFileBody'), 'm.audio': sdk.getComponent('messages.MVoiceOrAudioBody'), 'm.video': sdk.getComponent('messages.MVideoBody') }; const evTypes = { 'm.sticker': sdk.getComponent('messages.MStickerBody') }; const content = this.props.mxEvent.getContent(); const type = this.props.mxEvent.getType(); const msgtype = content.msgtype; let BodyType = _RedactedBody.default; if (!this.props.mxEvent.isRedacted()) { // only resolve BodyType if event is not redacted if (type && evTypes[type]) { BodyType = evTypes[type]; } else if (msgtype && bodyTypes[msgtype]) { BodyType = bodyTypes[msgtype]; } else if (content.url) { // Fallback to MFileBody if there's a content URL BodyType = bodyTypes['m.file']; } else { // Fallback to UnknownBody otherwise if not redacted BodyType = _UnknownBody.default; } } if (_SettingsStore.default.getValue("feature_mjolnir")) { const key = `mx_mjolnir_render_${this.props.mxEvent.getRoomId()}__${this.props.mxEvent.getId()}`; const allowRender = localStorage.getItem(key) === "true"; if (!allowRender) { const userDomain = this.props.mxEvent.getSender().split(':').slice(1).join(':'); const userBanned = _Mjolnir.Mjolnir.sharedInstance().isUserBanned(this.props.mxEvent.getSender()); const serverBanned = _Mjolnir.Mjolnir.sharedInstance().isServerBanned(userDomain); if (userBanned || serverBanned) { BodyType = sdk.getComponent('messages.MjolnirBody'); } } } return /*#__PURE__*/_react.default.createElement(BodyType, { ref: this._body, mxEvent: this.props.mxEvent, highlights: this.props.highlights, highlightLink: this.props.highlightLink, showUrlPreview: this.props.showUrlPreview, tileShape: this.props.tileShape, maxImageHeight: this.props.maxImageHeight, replacingEventId: this.props.replacingEventId, editState: this.props.editState, onHeightChanged: this.props.onHeightChanged, onMessageAllowed: this.onTileUpdate, permalinkCreator: this.props.permalinkCreator }); } }, (0, _defineProperty2.default)(_class2, "propTypes", { /* the MatrixEvent to show */ mxEvent: _propTypes.default.object.isRequired, /* a list of words to highlight */ highlights: _propTypes.default.array, /* link URL for the highlights */ highlightLink: _propTypes.default.string, /* should show URL previews for this event */ showUrlPreview: _propTypes.default.bool, /* callback called when dynamic content in events are loaded */ onHeightChanged: _propTypes.default.func, /* the shape of the tile, used */ tileShape: _propTypes.default.string, /* the maximum image height to use, if the event is an image */ maxImageHeight: _propTypes.default.number, /* the permalinkCreator */ permalinkCreator: _propTypes.default.object }), _temp)) || _class); exports.default = MessageEvent; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3ZpZXdzL21lc3NhZ2VzL01lc3NhZ2VFdmVudC5qcyJdLCJuYW1lcyI6WyJNZXNzYWdlRXZlbnQiLCJSZWFjdCIsIkNvbXBvbmVudCIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJfYm9keSIsImN1cnJlbnQiLCJnZXRFdmVudFRpbGVPcHMiLCJmb3JjZVVwZGF0ZSIsInJlbmRlciIsImJvZHlUeXBlcyIsInNkayIsImdldENvbXBvbmVudCIsImV2VHlwZXMiLCJjb250ZW50IiwibXhFdmVudCIsImdldENvbnRlbnQiLCJ0eXBlIiwiZ2V0VHlwZSIsIm1zZ3R5cGUiLCJCb2R5VHlwZSIsIlJlZGFjdGVkQm9keSIsImlzUmVkYWN0ZWQiLCJ1cmwiLCJVbmtub3duQm9keSIsIlNldHRpbmdzU3RvcmUiLCJnZXRWYWx1ZSIsImtleSIsImdldFJvb21JZCIsImdldElkIiwiYWxsb3dSZW5kZXIiLCJsb2NhbFN0b3JhZ2UiLCJnZXRJdGVtIiwidXNlckRvbWFpbiIsImdldFNlbmRlciIsInNwbGl0Iiwic2xpY2UiLCJqb2luIiwidXNlckJhbm5lZCIsIk1qb2xuaXIiLCJzaGFyZWRJbnN0YW5jZSIsImlzVXNlckJhbm5lZCIsInNlcnZlckJhbm5lZCIsImlzU2VydmVyQmFubmVkIiwiaGlnaGxpZ2h0cyIsImhpZ2hsaWdodExpbmsiLCJzaG93VXJsUHJldmlldyIsInRpbGVTaGFwZSIsIm1heEltYWdlSGVpZ2h0IiwicmVwbGFjaW5nRXZlbnRJZCIsImVkaXRTdGF0ZSIsIm9uSGVpZ2h0Q2hhbmdlZCIsIm9uVGlsZVVwZGF0ZSIsInBlcm1hbGlua0NyZWF0b3IiLCJQcm9wVHlwZXMiLCJvYmplY3QiLCJpc1JlcXVpcmVkIiwiYXJyYXkiLCJzdHJpbmciLCJib29sIiwiZnVuYyIsIm51bWJlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQWdCQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7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RUFBRXVDLG1CQUFVQyxNQUFWLENBQWlCQyxVQUZYOztBQUlmO0FBQ0FaLEVBQUFBLFVBQVUsRUFBRVUsbUJBQVVHLEtBTFA7O0FBT2Y7QUFDQVosRUFBQUEsYUFBYSxFQUFFUyxtQkFBVUksTUFSVjs7QUFVZjtBQUNBWixFQUFBQSxjQUFjLEVBQUVRLG1CQUFVSyxJQVhYOztBQWFmO0FBQ0FSLEVBQUFBLGVBQWUsRUFBRUcsbUJBQVVNLElBZFo7O0FBZ0JmO0FBQ0FiLEVBQUFBLFNBQVMsRUFBRU8sbUJBQVVJLE1BakJOOztBQW1CZjtBQUNBVixFQUFBQSxjQUFjLEVBQUVNLG1CQUFVTyxNQXBCWDs7QUFzQmY7QUFDQVIsRUFBQUEsZ0JBQWdCLEVBQUVDLG1CQUFVQztBQXZCYixDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbkNvcHlyaWdodCAyMDE1LCAyMDE2IE9wZW5NYXJrZXQgTHRkXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cblxuaW1wb3J0IFJlYWN0LCB7Y3JlYXRlUmVmfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0ICogYXMgc2RrIGZyb20gJy4uLy4uLy4uL2luZGV4JztcbmltcG9ydCBTZXR0aW5nc1N0b3JlIGZyb20gXCIuLi8uLi8uLi9zZXR0aW5ncy9TZXR0aW5nc1N0b3JlXCI7XG5pbXBvcnQge01qb2xuaXJ9IGZyb20gXCIuLi8uLi8uLi9tam9sbmlyL01qb2xuaXJcIjtcbmltcG9ydCBSZWRhY3RlZEJvZHkgZnJvbSBcIi4vUmVkYWN0ZWRCb2R5XCI7XG5pbXBvcnQgVW5rbm93bkJvZHkgZnJvbSBcIi4vVW5rbm93bkJvZHlcIjtcbmltcG9ydCB7cmVwbGFjZWFibGVDb21wb25lbnR9IGZyb20gXCIuLi8uLi8uLi91dGlscy9yZXBsYWNlYWJsZUNvbXBvbmVudFwiO1xuXG5AcmVwbGFjZWFibGVDb21wb25lbnQoXCJ2aWV3cy5tZXNzYWdlcy5NZXNzYWdlRXZlbnRcIilcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1lc3NhZ2VFdmVudCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gICAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICAgICAgLyogdGhlIE1hdHJpeEV2ZW50IHRvIHNob3cgKi9cbiAgICAgICAgbXhFdmVudDogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuXG4gICAgICAgIC8qIGEgbGlzdCBvZiB3b3JkcyB0byBoaWdobGlnaHQgKi9cbiAgICAgICAgaGlnaGxpZ2h0czogUHJvcFR5cGVzLmFycmF5LFxuXG4gICAgICAgIC8qIGxpbmsgVVJMIGZvciB0aGUgaGlnaGxpZ2h0cyAqL1xuICAgICAgICBoaWdobGlnaHRMaW5rOiBQcm9wVHlwZXMuc3RyaW5nLFxuXG4gICAgICAgIC8qIHNob3VsZCBzaG93IFVSTCBwcmV2aWV3cyBmb3IgdGhpcyBldmVudCAqL1xuICAgICAgICBzaG93VXJsUHJldmlldzogUHJvcFR5cGVzLmJvb2wsXG5cbiAgICAgICAgLyogY2FsbGJhY2sgY2FsbGVkIHdoZW4gZHluYW1pYyBjb250ZW50IGluIGV2ZW50cyBhcmUgbG9hZGVkICovXG4gICAgICAgIG9uSGVpZ2h0Q2hhbmdlZDogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgICAgICAgLyogdGhlIHNoYXBlIG9mIHRoZSB0aWxlLCB1c2VkICovXG4gICAgICAgIHRpbGVTaGFwZTogUHJvcFR5cGVzLnN0cmluZyxcblxuICAgICAgICAvKiB0aGUgbWF4aW11bSBpbWFnZSBoZWlnaHQgdG8gdXNlLCBpZiB0aGUgZXZlbnQgaXMgYW4gaW1hZ2UgKi9cbiAgICAgICAgbWF4SW1hZ2VIZWlnaHQ6IFByb3BUeXBlcy5udW1iZXIsXG5cbiAgICAgICAgLyogdGhlIHBlcm1hbGlua0NyZWF0b3IgKi9cbiAgICAgICAgcGVybWFsaW5rQ3JlYXRvcjogUHJvcFR5cGVzLm9iamVjdCxcbiAgICB9O1xuXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICAgICAgc3VwZXIocHJvcHMpO1xuXG4gICAgICAgIHRoaXMuX2JvZHkgPSBjcmVhdGVSZWYoKTtcbiAgICB9XG5cbiAgICBnZXRFdmVudFRpbGVPcHMgPSAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ib2R5LmN1cnJlbnQgJiYgdGhpcy5fYm9keS5jdXJyZW50LmdldEV2ZW50VGlsZU9wcyA/IHRoaXMuX2JvZHkuY3VycmVudC5nZXRFdmVudFRpbGVPcHMoKSA6IG51bGw7XG4gICAgfTtcblxuICAgIG9uVGlsZVVwZGF0ZSA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5mb3JjZVVwZGF0ZSgpO1xuICAgIH07XG5cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGNvbnN0IGJvZHlUeXBlcyA9IHtcbiAgICAgICAgICAgICdtLnRleHQnOiBzZGsuZ2V0Q29tcG9uZW50KCdtZXNzYWdlcy5UZXh0dWFsQm9keScpLFxuICAgICAgICAgICAgJ20ubm90aWNlJzogc2RrLmdldENvbXBvbmVudCgnbWVzc2FnZXMuVGV4dHVhbEJvZHknKSxcbiAgICAgICAgICAgICdtLmVtb3RlJzogc2RrLmdldENvbXBvbmVudCgnbWVzc2FnZXMuVGV4dHVhbEJvZHknKSxcbiAgICAgICAgICAgICdtLmltYWdlJzogc2RrLmdldENvbXBvbmVudCgnbWVzc2FnZXMuTUltYWdlQm9keScpLFxuICAgICAgICAgICAgJ20uZmlsZSc6IHNkay5nZXRDb21wb25lbnQoJ21lc3NhZ2VzLk1GaWxlQm9keScpLFxuICAgICAgICAgICAgJ20uYXVkaW8nOiBzZGsuZ2V0Q29tcG9uZW50KCdtZXNzYWdlcy5NVm9pY2VPckF1ZGlvQm9keScpLFxuICAgICAgICAgICAgJ20udmlkZW8nOiBzZGsuZ2V0Q29tcG9uZW50KCdtZXNzYWdlcy5NVmlkZW9Cb2R5JyksXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGV2VHlwZXMgPSB7XG4gICAgICAgICAgICAnbS5zdGlja2VyJzogc2RrLmdldENvbXBvbmVudCgnbWVzc2FnZXMuTVN0aWNrZXJCb2R5JyksXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgY29udGVudCA9IHRoaXMucHJvcHMubXhFdmVudC5nZXRDb250ZW50KCk7XG4gICAgICAgIGNvbnN0IHR5cGUgPSB0aGlzLnByb3BzLm14RXZlbnQuZ2V0VHlwZSgpO1xuICAgICAgICBjb25zdCBtc2d0eXBlID0gY29udGVudC5tc2d0eXBlO1xuICAgICAgICBsZXQgQm9keVR5cGUgPSBSZWRhY3RlZEJvZHk7XG4gICAgICAgIGlmICghdGhpcy5wcm9wcy5teEV2ZW50LmlzUmVkYWN0ZWQoKSkge1xuICAgICAgICAgICAgLy8gb25seSByZXNvbHZlIEJvZHlUeXBlIGlmIGV2ZW50IGlzIG5vdCByZWRhY3RlZFxuICAgICAgICAgICAgaWYgKHR5cGUgJiYgZXZUeXBlc1t0eXBlXSkge1xuICAgICAgICAgICAgICAgIEJvZHlUeXBlID0gZXZUeXBlc1t0eXBlXTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobXNndHlwZSAmJiBib2R5VHlwZXNbbXNndHlwZV0pIHtcbiAgICAgICAgICAgICAgICBCb2R5VHlwZSA9IGJvZHlUeXBlc1ttc2d0eXBlXTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY29udGVudC51cmwpIHtcbiAgICAgICAgICAgICAgICAvLyBGYWxsYmFjayB0byBNRmlsZUJvZHkgaWYgdGhlcmUncyBhIGNvbnRlbnQgVVJMXG4gICAgICAgICAgICAgICAgQm9keVR5cGUgPSBib2R5VHlwZXNbJ20uZmlsZSddO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBGYWxsYmFjayB0byBVbmtub3duQm9keSBvdGhlcndpc2UgaWYgbm90IHJlZGFjdGVkXG4gICAgICAgICAgICAgICAgQm9keVR5cGUgPSBVbmtub3duQm9keTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChTZXR0aW5nc1N0b3JlLmdldFZhbHVlKFwiZmVhdHVyZV9tam9sbmlyXCIpKSB7XG4gICAgICAgICAgICBjb25zdCBrZXkgPSBgbXhfbWpvbG5pcl9yZW5kZXJfJHt0aGlzLnByb3BzLm14RXZlbnQuZ2V0Um9vbUlkKCl9X18ke3RoaXMucHJvcHMubXhFdmVudC5nZXRJZCgpfWA7XG4gICAgICAgICAgICBjb25zdCBhbGxvd1JlbmRlciA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGtleSkgPT09IFwidHJ1ZVwiO1xuXG4gICAgICAgICAgICBpZiAoIWFsbG93UmVuZGVyKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdXNlckRvbWFpbiA9IHRoaXMucHJvcHMubXhFdmVudC5nZXRTZW5kZXIoKS5zcGxpdCgnOicpLnNsaWNlKDEpLmpvaW4oJzonKTtcbiAgICAgICAgICAgICAgICBjb25zdCB1c2VyQmFubmVkID0gTWpvbG5pci5zaGFyZWRJbnN0YW5jZSgpLmlzVXNlckJhbm5lZCh0aGlzLnByb3BzLm14RXZlbnQuZ2V0U2VuZGVyKCkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlcnZlckJhbm5lZCA9IE1qb2xuaXIuc2hhcmVkSW5zdGFuY2UoKS5pc1NlcnZlckJhbm5lZCh1c2VyRG9tYWluKTtcblxuICAgICAgICAgICAgICAgIGlmICh1c2VyQmFubmVkIHx8IHNlcnZlckJhbm5lZCkge1xuICAgICAgICAgICAgICAgICAgICBCb2R5VHlwZSA9IHNkay5nZXRDb21wb25lbnQoJ21lc3NhZ2VzLk1qb2xuaXJCb2R5Jyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIDxCb2R5VHlwZVxuICAgICAgICAgICAgcmVmPXt0aGlzLl9ib2R5fVxuICAgICAgICAgICAgbXhFdmVudD17dGhpcy5wcm9wcy5teEV2ZW50fVxuICAgICAgICAgICAgaGlnaGxpZ2h0cz17dGhpcy5wcm9wcy5oaWdobGlnaHRzfVxuICAgICAgICAgICAgaGlnaGxpZ2h0TGluaz17dGhpcy5wcm9wcy5oaWdobGlnaHRMaW5rfVxuICAgICAgICAgICAgc2hvd1VybFByZXZpZXc9e3RoaXMucHJvcHMuc2hvd1VybFByZXZpZXd9XG4gICAgICAgICAgICB0aWxlU2hhcGU9e3RoaXMucHJvcHMudGlsZVNoYXBlfVxuICAgICAgICAgICAgbWF4SW1hZ2VIZWlnaHQ9e3RoaXMucHJvcHMubWF4SW1hZ2VIZWlnaHR9XG4gICAgICAgICAgICByZXBsYWNpbmdFdmVudElkPXt0aGlzLnByb3BzLnJlcGxhY2luZ0V2ZW50SWR9XG4gICAgICAgICAgICBlZGl0U3RhdGU9e3RoaXMucHJvcHMuZWRpdFN0YXRlfVxuICAgICAgICAgICAgb25IZWlnaHRDaGFuZ2VkPXt0aGlzLnByb3BzLm9uSGVpZ2h0Q2hhbmdlZH1cbiAgICAgICAgICAgIG9uTWVzc2FnZUFsbG93ZWQ9e3RoaXMub25UaWxlVXBkYXRlfVxuICAgICAgICAgICAgcGVybWFsaW5rQ3JlYXRvcj17dGhpcy5wcm9wcy5wZXJtYWxpbmtDcmVhdG9yfVxuICAgICAgICAvPjtcbiAgICB9XG59XG4iXX0=