matrix-react-sdk
Version:
SDK for matrix.org using React
98 lines (95 loc) • 11.8 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _react = _interopRequireDefault(require("react"));
var _matrix = require("matrix-js-sdk/src/matrix");
var _languageHandler = require("../../../languageHandler");
var _ConfirmRedactDialog = _interopRequireDefault(require("./ConfirmRedactDialog"));
var _ErrorDialog = _interopRequireDefault(require("./ErrorDialog"));
var _BaseDialog = _interopRequireDefault(require("./BaseDialog"));
var _Spinner = _interopRequireDefault(require("../elements/Spinner"));
/*
Copyright 2024 New Vector Ltd.
Copyright 2019 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.
*/
/*
* A dialog for confirming a redaction.
* Also shows a spinner (and possible error) while the redaction is ongoing,
* and only closes the dialog when the redaction is done or failed.
*
* This is done to prevent the edit history dialog racing with the redaction:
* if this dialog closes and the MessageEditHistoryDialog is shown again,
* it will fetch the relations again, which will race with the ongoing /redact request.
* which will cause the edit to appear unredacted.
*
* To avoid this, we keep the dialog open as long as /redact is in progress.
*/
class ConfirmAndWaitRedactDialog extends _react.default.PureComponent {
constructor(props) {
super(props);
(0, _defineProperty2.default)(this, "onParentFinished", async proceed => {
if (proceed) {
this.setState({
isRedacting: true
});
try {
await this.props.redact();
this.props.onFinished(true);
} catch (error) {
let code;
if (error instanceof _matrix.MatrixError) {
code = error.errcode;
} else if (error instanceof _matrix.HTTPError) {
code = error.httpStatus;
}
if (typeof code !== "undefined") {
this.setState({
redactionErrorCode: code
});
} else {
this.props.onFinished(true);
}
}
} else {
this.props.onFinished(false);
}
});
this.state = {
isRedacting: false,
redactionErrorCode: null
};
}
render() {
if (this.state.isRedacting) {
if (this.state.redactionErrorCode) {
const code = this.state.redactionErrorCode;
return /*#__PURE__*/_react.default.createElement(_ErrorDialog.default, {
onFinished: this.props.onFinished,
title: (0, _languageHandler._t)("common|error"),
description: (0, _languageHandler._t)("redact|error", {
code
})
});
} else {
return /*#__PURE__*/_react.default.createElement(_BaseDialog.default, {
onFinished: this.props.onFinished,
hasCancel: false,
title: (0, _languageHandler._t)("redact|ongoing")
}, /*#__PURE__*/_react.default.createElement(_Spinner.default, null));
}
} else {
return /*#__PURE__*/_react.default.createElement(_ConfirmRedactDialog.default, {
event: this.props.event,
onFinished: this.onParentFinished
});
}
}
}
exports.default = ConfirmAndWaitRedactDialog;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9tYXRyaXgiLCJfbGFuZ3VhZ2VIYW5kbGVyIiwiX0NvbmZpcm1SZWRhY3REaWFsb2ciLCJfRXJyb3JEaWFsb2ciLCJfQmFzZURpYWxvZyIsIl9TcGlubmVyIiwiQ29uZmlybUFuZFdhaXRSZWRhY3REaWFsb2ciLCJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwiX2RlZmluZVByb3BlcnR5MiIsImRlZmF1bHQiLCJwcm9jZWVkIiwic2V0U3RhdGUiLCJpc1JlZGFjdGluZyIsInJlZGFjdCIsIm9uRmluaXNoZWQiLCJlcnJvciIsImNvZGUiLCJNYXRyaXhFcnJvciIsImVycmNvZGUiLCJIVFRQRXJyb3IiLCJodHRwU3RhdHVzIiwicmVkYWN0aW9uRXJyb3JDb2RlIiwic3RhdGUiLCJyZW5kZXIiLCJjcmVhdGVFbGVtZW50IiwidGl0bGUiLCJfdCIsImRlc2NyaXB0aW9uIiwiaGFzQ2FuY2VsIiwiZXZlbnQiLCJvblBhcmVudEZpbmlzaGVkIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3ZpZXdzL2RpYWxvZ3MvQ29uZmlybUFuZFdhaXRSZWRhY3REaWFsb2cudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qXG5Db3B5cmlnaHQgMjAyNCBOZXcgVmVjdG9yIEx0ZC5cbkNvcHlyaWdodCAyMDE5IFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cblNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBR1BMLTMuMC1vbmx5IE9SIEdQTC0zLjAtb25seVxuUGxlYXNlIHNlZSBMSUNFTlNFIGZpbGVzIGluIHRoZSByZXBvc2l0b3J5IHJvb3QgZm9yIGZ1bGwgZGV0YWlscy5cbiovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IE1hdHJpeEV2ZW50LCBIVFRQRXJyb3IsIE1hdHJpeEVycm9yIH0gZnJvbSBcIm1hdHJpeC1qcy1zZGsvc3JjL21hdHJpeFwiO1xuXG5pbXBvcnQgeyBfdCB9IGZyb20gXCIuLi8uLi8uLi9sYW5ndWFnZUhhbmRsZXJcIjtcbmltcG9ydCBDb25maXJtUmVkYWN0RGlhbG9nIGZyb20gXCIuL0NvbmZpcm1SZWRhY3REaWFsb2dcIjtcbmltcG9ydCBFcnJvckRpYWxvZyBmcm9tIFwiLi9FcnJvckRpYWxvZ1wiO1xuaW1wb3J0IEJhc2VEaWFsb2cgZnJvbSBcIi4vQmFzZURpYWxvZ1wiO1xuaW1wb3J0IFNwaW5uZXIgZnJvbSBcIi4uL2VsZW1lbnRzL1NwaW5uZXJcIjtcblxuaW50ZXJmYWNlIElQcm9wcyB7XG4gICAgZXZlbnQ6IE1hdHJpeEV2ZW50O1xuICAgIHJlZGFjdDogKCkgPT4gUHJvbWlzZTx2b2lkPjtcbiAgICBvbkZpbmlzaGVkOiAoc3VjY2Vzcz86IGJvb2xlYW4pID0+IHZvaWQ7XG59XG5cbmludGVyZmFjZSBJU3RhdGUge1xuICAgIGlzUmVkYWN0aW5nOiBib29sZWFuO1xuICAgIHJlZGFjdGlvbkVycm9yQ29kZTogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbDtcbn1cblxuLypcbiAqIEEgZGlhbG9nIGZvciBjb25maXJtaW5nIGEgcmVkYWN0aW9uLlxuICogQWxzbyBzaG93cyBhIHNwaW5uZXIgKGFuZCBwb3NzaWJsZSBlcnJvcikgd2hpbGUgdGhlIHJlZGFjdGlvbiBpcyBvbmdvaW5nLFxuICogYW5kIG9ubHkgY2xvc2VzIHRoZSBkaWFsb2cgd2hlbiB0aGUgcmVkYWN0aW9uIGlzIGRvbmUgb3IgZmFpbGVkLlxuICpcbiAqIFRoaXMgaXMgZG9uZSB0byBwcmV2ZW50IHRoZSBlZGl0IGhpc3RvcnkgZGlhbG9nIHJhY2luZyB3aXRoIHRoZSByZWRhY3Rpb246XG4gKiBpZiB0aGlzIGRpYWxvZyBjbG9zZXMgYW5kIHRoZSBNZXNzYWdlRWRpdEhpc3RvcnlEaWFsb2cgaXMgc2hvd24gYWdhaW4sXG4gKiBpdCB3aWxsIGZldGNoIHRoZSByZWxhdGlvbnMgYWdhaW4sIHdoaWNoIHdpbGwgcmFjZSB3aXRoIHRoZSBvbmdvaW5nIC9yZWRhY3QgcmVxdWVzdC5cbiAqIHdoaWNoIHdpbGwgY2F1c2UgdGhlIGVkaXQgdG8gYXBwZWFyIHVucmVkYWN0ZWQuXG4gKlxuICogVG8gYXZvaWQgdGhpcywgd2Uga2VlcCB0aGUgZGlhbG9nIG9wZW4gYXMgbG9uZyBhcyAvcmVkYWN0IGlzIGluIHByb2dyZXNzLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb25maXJtQW5kV2FpdFJlZGFjdERpYWxvZyBleHRlbmRzIFJlYWN0LlB1cmVDb21wb25lbnQ8SVByb3BzLCBJU3RhdGU+IHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IocHJvcHM6IElQcm9wcykge1xuICAgICAgICBzdXBlcihwcm9wcyk7XG4gICAgICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICAgICAgICBpc1JlZGFjdGluZzogZmFsc2UsXG4gICAgICAgICAgICByZWRhY3Rpb25FcnJvckNvZGU6IG51bGwsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHVibGljIG9uUGFyZW50RmluaXNoZWQgPSBhc3luYyAocHJvY2VlZD86IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgICAgaWYgKHByb2NlZWQpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBpc1JlZGFjdGluZzogdHJ1ZSB9KTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5wcm9wcy5yZWRhY3QoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uRmluaXNoZWQodHJ1ZSk7XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIGxldCBjb2RlOiBzdHJpbmcgfCBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgTWF0cml4RXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgY29kZSA9IGVycm9yLmVycmNvZGU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChlcnJvciBpbnN0YW5jZW9mIEhUVFBFcnJvcikge1xuICAgICAgICAgICAgICAgICAgICBjb2RlID0gZXJyb3IuaHR0cFN0YXR1cztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGNvZGUgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IHJlZGFjdGlvbkVycm9yQ29kZTogY29kZSB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uRmluaXNoZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkZpbmlzaGVkKGZhbHNlKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBwdWJsaWMgcmVuZGVyKCk6IFJlYWN0LlJlYWN0Tm9kZSB7XG4gICAgICAgIGlmICh0aGlzLnN0YXRlLmlzUmVkYWN0aW5nKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5zdGF0ZS5yZWRhY3Rpb25FcnJvckNvZGUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb2RlID0gdGhpcy5zdGF0ZS5yZWRhY3Rpb25FcnJvckNvZGU7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgPEVycm9yRGlhbG9nXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkZpbmlzaGVkPXt0aGlzLnByb3BzLm9uRmluaXNoZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17X3QoXCJjb21tb258ZXJyb3JcIil9XG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbj17X3QoXCJyZWRhY3R8ZXJyb3JcIiwgeyBjb2RlIH0pfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIDxCYXNlRGlhbG9nIG9uRmluaXNoZWQ9e3RoaXMucHJvcHMub25GaW5pc2hlZH0gaGFzQ2FuY2VsPXtmYWxzZX0gdGl0bGU9e190KFwicmVkYWN0fG9uZ29pbmdcIil9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPFNwaW5uZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9CYXNlRGlhbG9nPlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gPENvbmZpcm1SZWRhY3REaWFsb2cgZXZlbnQ9e3RoaXMucHJvcHMuZXZlbnR9IG9uRmluaXNoZWQ9e3RoaXMub25QYXJlbnRGaW5pc2hlZH0gLz47XG4gICAgICAgIH1cbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBUUEsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRCxPQUFBO0FBRUEsSUFBQUUsZ0JBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLG9CQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSSxZQUFBLEdBQUFMLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSyxXQUFBLEdBQUFOLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBTSxRQUFBLEdBQUFQLHNCQUFBLENBQUFDLE9BQUE7QUFmQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFzQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2UsTUFBTU8sMEJBQTBCLFNBQVNDLGNBQUssQ0FBQ0MsYUFBYSxDQUFpQjtFQUNqRkMsV0FBV0EsQ0FBQ0MsS0FBYSxFQUFF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