matrix-react-sdk
Version:
SDK for matrix.org using React
150 lines (124 loc) • 16.8 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 sdk = _interopRequireWildcard(require("../../../index"));
var _languageHandler = require("../../../languageHandler");
var _propTypes = _interopRequireDefault(require("prop-types"));
var _event = require("matrix-js-sdk/src/models/event");
var _MatrixClientPeg = require("../../../MatrixClientPeg");
var _SdkConfig = _interopRequireDefault(require("../../../SdkConfig"));
var _Markdown = _interopRequireDefault(require("../../../Markdown"));
var _replaceableComponent = require("../../../utils/replaceableComponent");
var _dec, _class, _class2, _temp;
let ReportEventDialog = (
/*
* A dialog for reporting an event.
*/
_dec = (0, _replaceableComponent.replaceableComponent)("views.dialogs.ReportEventDialog"), _dec(_class = (_temp = _class2 = class ReportEventDialog extends _react.PureComponent {
constructor(props) {
super(props);
(0, _defineProperty2.default)(this, "_onReasonChange", ({
target: {
value: reason
}
}) => {
this.setState({
reason
});
});
(0, _defineProperty2.default)(this, "_onCancel", () => {
this.props.onFinished(false);
});
(0, _defineProperty2.default)(this, "_onSubmit", async () => {
if (!this.state.reason || !this.state.reason.trim()) {
this.setState({
err: (0, _languageHandler._t)("Please fill why you're reporting.")
});
return;
}
this.setState({
busy: true,
err: null
});
try {
const ev = this.props.mxEvent;
await _MatrixClientPeg.MatrixClientPeg.get().reportEvent(ev.getRoomId(), ev.getId(), -100, this.state.reason.trim());
this.props.onFinished(true);
} catch (e) {
this.setState({
busy: false,
err: e.message
});
}
});
this.state = {
reason: "",
busy: false,
err: null
};
}
render() {
const BaseDialog = sdk.getComponent('views.dialogs.BaseDialog');
const DialogButtons = sdk.getComponent('views.elements.DialogButtons');
const Loader = sdk.getComponent('elements.Spinner');
const Field = sdk.getComponent('elements.Field');
let error = null;
if (this.state.err) {
error = /*#__PURE__*/_react.default.createElement("div", {
className: "error"
}, this.state.err);
}
let progress = null;
if (this.state.busy) {
progress = /*#__PURE__*/_react.default.createElement("div", {
className: "progress"
}, /*#__PURE__*/_react.default.createElement(Loader, null));
}
const adminMessageMD = _SdkConfig.default.get().reportEvent && _SdkConfig.default.get().reportEvent.adminMessageMD;
let adminMessage;
if (adminMessageMD) {
const html = new _Markdown.default(adminMessageMD).toHTML({
externalLinks: true
});
adminMessage = /*#__PURE__*/_react.default.createElement("p", {
dangerouslySetInnerHTML: {
__html: html
}
});
}
return /*#__PURE__*/_react.default.createElement(BaseDialog, {
className: "mx_BugReportDialog",
onFinished: this.props.onFinished,
title: (0, _languageHandler._t)('Report Content to Your Homeserver Administrator'),
contentId: "mx_ReportEventDialog"
}, /*#__PURE__*/_react.default.createElement("div", {
className: "mx_ReportEventDialog",
id: "mx_ReportEventDialog"
}, /*#__PURE__*/_react.default.createElement("p", null, (0, _languageHandler._t)("Reporting this message will send its unique 'event ID' to the administrator of " + "your homeserver. If messages in this room are encrypted, your homeserver " + "administrator will not be able to read the message text or view any files or images.")), adminMessage, /*#__PURE__*/_react.default.createElement(Field, {
className: "mx_ReportEventDialog_reason",
element: "textarea",
label: (0, _languageHandler._t)("Reason"),
rows: 5,
onChange: this._onReasonChange,
value: this.state.reason,
disabled: this.state.busy
}), progress, error), /*#__PURE__*/_react.default.createElement(DialogButtons, {
primaryButton: (0, _languageHandler._t)("Send report"),
onPrimaryButtonClick: this._onSubmit,
focus: true,
onCancel: this._onCancel,
disabled: this.state.busy
}));
}
}, (0, _defineProperty2.default)(_class2, "propTypes", {
mxEvent: _propTypes.default.instanceOf(_event.MatrixEvent).isRequired,
onFinished: _propTypes.default.func.isRequired
}), _temp)) || _class);
exports.default = ReportEventDialog;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3ZpZXdzL2RpYWxvZ3MvUmVwb3J0RXZlbnREaWFsb2cuanMiXSwibmFtZXMiOlsiUmVwb3J0RXZlbnREaWFsb2ciLCJQdXJlQ29tcG9uZW50IiwiY29uc3RydWN0b3IiLCJwcm9wcyIsInRhcmdldCIsInZhbHVlIiwicmVhc29uIiwic2V0U3RhdGUiLCJvbkZpbmlzaGVkIiwic3RhdGUiLCJ0cmltIiwiZXJyIiwiYnVzeSIsImV2IiwibXhFdmVudCIsIk1hdHJpeENsaWVudFBlZyIsImdldCIsInJlcG9ydEV2ZW50IiwiZ2V0Um9vbUlkIiwiZ2V0SWQiLCJlIiwibWVzc2FnZSIsInJlbmRlciIsIkJhc2VEaWFsb2ciLCJzZGsiLCJnZXRDb21wb25lbnQiLCJEaWFsb2dCdXR0b25zIiwiTG9hZGVyIiwiRmllbGQiLCJlcnJvciIsInByb2dyZXNzIiwiYWRtaW5NZXNzYWdlTUQiLCJTZGtDb25maWciLCJhZG1pbk1lc3NhZ2UiLCJodG1sIiwiTWFya2Rvd24iLCJ0b0hUTUwiLCJleHRlcm5hbExpbmtzIiwiX19odG1sIiwiX29uUmVhc29uQ2hhbmdlIiwiX29uU3VibWl0IiwiX29uQ2FuY2VsIiwiUHJvcFR5cGVzIiwiaW5zdGFuY2VPZiIsIk1hdHJpeEV2ZW50IiwiaXNSZXF1aXJlZCIsImZ1bmMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFnQkE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7SUFNcUJBLGlCO0FBSnJCO0FBQ0E7QUFDQTtPQUNDLGdEQUFxQixpQ0FBckIsQyxtQ0FBRCxNQUNxQkEsaUJBRHJCLFNBQytDQyxvQkFEL0MsQ0FDNkQ7QUFNekRDLEVBQUFBLFdBQVcsQ0FBQ0MsS0FBRCxFQUFRO0FBQ2YsVUFBTUEsS0FBTjtBQURlLDJEQVVELENBQUM7QUFBQ0MsTUFBQUEsTUFBTSxFQUFFO0FBQUNDLFFBQUFBLEtBQUssRUFBRUM7QUFBUjtB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dXJjZXNDb250ZW50IjpbIi8qXG5Db3B5cmlnaHQgMjAxOSBNaWNoYWVsIFRlbGF0eW5za2kgPDd0M2NoZ3V5QGdtYWlsLmNvbT5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG5pbXBvcnQgUmVhY3QsIHtQdXJlQ29tcG9uZW50fSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgKiBhcyBzZGsgZnJvbSAnLi4vLi4vLi4vaW5kZXgnO1xuaW1wb3J0IHsgX3QgfSBmcm9tICcuLi8uLi8uLi9sYW5ndWFnZUhhbmRsZXInO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtNYXRyaXhFdmVudH0gZnJvbSBcIm1hdHJpeC1qcy1zZGsvc3JjL21vZGVscy9ldmVudFwiO1xuaW1wb3J0IHtNYXRyaXhDbGllbnRQZWd9IGZyb20gXCIuLi8uLi8uLi9NYXRyaXhDbGllbnRQZWdcIjtcbmltcG9ydCBTZGtDb25maWcgZnJvbSAnLi4vLi4vLi4vU2RrQ29uZmlnJztcbmltcG9ydCBNYXJrZG93biBmcm9tICcuLi8uLi8uLi9NYXJrZG93bic7XG5pbXBvcnQge3JlcGxhY2VhYmxlQ29tcG9uZW50fSBmcm9tIFwiLi4vLi4vLi4vdXRpbHMvcmVwbGFjZWFibGVDb21wb25lbnRcIjtcblxuLypcbiAqIEEgZGlhbG9nIGZvciByZXBvcnRpbmcgYW4gZXZlbnQuXG4gKi9cbkByZXBsYWNlYWJsZUNvbXBvbmVudChcInZpZXdzLmRpYWxvZ3MuUmVwb3J0RXZlbnREaWFsb2dcIilcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJlcG9ydEV2ZW50RGlhbG9nIGV4dGVuZHMgUHVyZUNvbXBvbmVudCB7XG4gICAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICAgICAgbXhFdmVudDogUHJvcFR5cGVzLmluc3RhbmNlT2YoTWF0cml4RXZlbnQpLmlzUmVxdWlyZWQsXG4gICAgICAgIG9uRmluaXNoZWQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgfTtcblxuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgICAgIHN1cGVyKHByb3BzKTtcblxuICAgICAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgICAgICAgcmVhc29uOiBcIlwiLFxuICAgICAgICAgICAgYnVzeTogZmFsc2UsXG4gICAgICAgICAgICBlcnI6IG51bGwsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgX29uUmVhc29uQ2hhbmdlID0gKHt0YXJnZXQ6IHt2YWx1ZTogcmVhc29ufX0pID0+IHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IHJlYXNvbiB9KTtcbiAgICB9O1xuXG4gICAgX29uQ2FuY2VsID0gKCkgPT4ge1xuICAgICAgICB0aGlzLnByb3BzLm9uRmluaXNoZWQoZmFsc2UpO1xuICAgIH07XG5cbiAgICBfb25TdWJtaXQgPSBhc3luYyAoKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5zdGF0ZS5yZWFzb24gfHwgIXRoaXMuc3RhdGUucmVhc29uLnRyaW0oKSkge1xuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAgICAgZXJyOiBfdChcIlBsZWFzZSBmaWxsIHdoeSB5b3UncmUgcmVwb3J0aW5nLlwiKSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICBidXN5OiB0cnVlLFxuICAgICAgICAgICAgZXJyOiBudWxsLFxuICAgICAgICB9KTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgZXYgPSB0aGlzLnByb3BzLm14RXZlbnQ7XG4gICAgICAgICAgICBhd2FpdCBNYXRyaXhDbGllbnRQZWcuZ2V0KCkucmVwb3J0RXZlbnQoZXYuZ2V0Um9vbUlkKCksIGV2LmdldElkKCksIC0xMDAsIHRoaXMuc3RhdGUucmVhc29uLnRyaW0oKSk7XG4gICAgICAgICAgICB0aGlzLnByb3BzLm9uRmluaXNoZWQodHJ1ZSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgICAgIGJ1c3k6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGVycjogZS5tZXNzYWdlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgcmVuZGVyKCkge1xuICAgICAgICBjb25zdCBCYXNlRGlhbG9nID0gc2RrLmdldENvbXBvbmVudCgndmlld3MuZGlhbG9ncy5CYXNlRGlhbG9nJyk7XG4gICAgICAgIGNvbnN0IERpYWxvZ0J1dHRvbnMgPSBzZGsuZ2V0Q29tcG9uZW50KCd2aWV3cy5lbGVtZW50cy5EaWFsb2dCdXR0b25zJyk7XG4gICAgICAgIGNvbnN0IExvYWRlciA9IHNkay5nZXRDb21wb25lbnQoJ2VsZW1lbnRzLlNwaW5uZXInKTtcbiAgICAgICAgY29uc3QgRmllbGQgPSBzZGsuZ2V0Q29tcG9uZW50KCdlbGVtZW50cy5GaWVsZCcpO1xuXG4gICAgICAgIGxldCBlcnJvciA9IG51bGw7XG4gICAgICAgIGlmICh0aGlzLnN0YXRlLmVycikge1xuICAgICAgICAgICAgZXJyb3IgPSA8ZGl2IGNsYXNzTmFtZT1cImVycm9yXCI+XG4gICAgICAgICAgICAgICAge3RoaXMuc3RhdGUuZXJyfVxuICAgICAgICAgICAgPC9kaXY+O1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHByb2dyZXNzID0gbnVsbDtcbiAgICAgICAgaWYgKHRoaXMuc3RhdGUuYnVzeSkge1xuICAgICAgICAgICAgcHJvZ3Jlc3MgPSAoXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwcm9ncmVzc1wiPlxuICAgICAgICAgICAgICAgICAgICA8TG9hZGVyIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYWRtaW5NZXNzYWdlTUQgPVxuICAgICAgICAgICAgU2RrQ29uZmlnLmdldCgpLnJlcG9ydEV2ZW50ICYmXG4gICAgICAgICAgICBTZGtDb25maWcuZ2V0KCkucmVwb3J0RXZlbnQuYWRtaW5NZXNzYWdlTUQ7XG4gICAgICAgIGxldCBhZG1pbk1lc3NhZ2U7XG4gICAgICAgIGlmIChhZG1pbk1lc3NhZ2VNRCkge1xuICAgICAgICAgICAgY29uc3QgaHRtbCA9IG5ldyBNYXJrZG93bihhZG1pbk1lc3NhZ2VNRCkudG9IVE1MKHsgZXh0ZXJuYWxMaW5rczogdHJ1ZSB9KTtcbiAgICAgICAgICAgIGFkbWluTWVzc2FnZSA9IDxwIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MPXt7IF9faHRtbDogaHRtbCB9fSAvPjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8QmFzZURpYWxvZ1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm14X0J1Z1JlcG9ydERpYWxvZ1wiXG4gICAgICAgICAgICAgICAgb25GaW5pc2hlZD17dGhpcy5wcm9wcy5vbkZpbmlzaGVkfVxuICAgICAgICAgICAgICAgIHRpdGxlPXtfdCgnUmVwb3J0IENvbnRlbnQgdG8gWW91ciBIb21lc2VydmVyIEFkbWluaXN0cmF0b3InKX1cbiAgICAgICAgICAgICAgICBjb250ZW50SWQ9J214X1JlcG9ydEV2ZW50RGlhbG9nJ1xuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXhfUmVwb3J0RXZlbnREaWFsb2dcIiBpZD1cIm14X1JlcG9ydEV2ZW50RGlhbG9nXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF90KFwiUmVwb3J0aW5nIHRoaXMgbWVzc2FnZSB3aWxsIHNlbmQgaXRzIHVuaXF1ZSAnZXZlbnQgSUQnIHRvIHRoZSBhZG1pbmlzdHJhdG9yIG9mIFwiICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ5b3VyIGhvbWVzZXJ2ZXIuIElmIG1lc3NhZ2VzIGluIHRoaXMgcm9vbSBhcmUgZW5jcnlwdGVkLCB5b3VyIGhvbWVzZXJ2ZXIgXCIgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImFkbWluaXN0cmF0b3Igd2lsbCBub3QgYmUgYWJsZSB0byByZWFkIHRoZSBtZXNzYWdlIHRleHQgb3IgdmlldyBhbnkgZmlsZXMgb3IgaW1hZ2VzLlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgIHthZG1pbk1lc3NhZ2V9XG4gICAgICAgICAgICAgICAgICAgIDxGaWVsZFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibXhfUmVwb3J0RXZlbnREaWFsb2dfcmVhc29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQ9XCJ0ZXh0YXJlYVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17X3QoXCJSZWFzb25cIil9XG4gICAgICAgICAgICAgICAgICAgICAgICByb3dzPXs1fVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e3RoaXMuX29uUmVhc29uQ2hhbmdlfVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3RoaXMuc3RhdGUucmVhc29ufVxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e3RoaXMuc3RhdGUuYnVzeX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAge3Byb2dyZXNzfVxuICAgICAgICAgICAgICAgICAgICB7ZXJyb3J9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPERpYWxvZ0J1dHRvbnNcbiAgICAgICAgICAgICAgICAgICAgcHJpbWFyeUJ1dHRvbj17X3QoXCJTZW5kIHJlcG9ydFwiKX1cbiAgICAgICAgICAgICAgICAgICAgb25QcmltYXJ5QnV0dG9uQ2xpY2s9e3RoaXMuX29uU3VibWl0fVxuICAgICAgICAgICAgICAgICAgICBmb2N1cz17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgb25DYW5jZWw9e3RoaXMuX29uQ2FuY2VsfVxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17dGhpcy5zdGF0ZS5idXN5fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L0Jhc2VEaWFsb2c+XG4gICAgICAgICk7XG4gICAgfVxufVxuIl19