matrix-react-sdk
Version:
SDK for matrix.org using React
136 lines (106 loc) • 17 kB
JavaScript
"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=