matrix-react-sdk
Version:
SDK for matrix.org using React
60 lines (58 loc) • 6.96 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.TransactionStatus = exports.EchoTransaction = void 0;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _Whenable = require("../../utils/Whenable");
/*
Copyright 2024 New Vector Ltd.
Copyright 2020 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.
*/
let TransactionStatus = exports.TransactionStatus = /*#__PURE__*/function (TransactionStatus) {
TransactionStatus[TransactionStatus["Pending"] = 0] = "Pending";
TransactionStatus[TransactionStatus["Success"] = 1] = "Success";
TransactionStatus[TransactionStatus["Error"] = 2] = "Error";
return TransactionStatus;
}({});
class EchoTransaction extends _Whenable.Whenable {
constructor(auditName, runFn) {
super();
(0, _defineProperty2.default)(this, "_status", TransactionStatus.Pending);
(0, _defineProperty2.default)(this, "didFail", false);
(0, _defineProperty2.default)(this, "startTime", new Date());
this.auditName = auditName;
this.runFn = runFn;
}
get didPreviouslyFail() {
return this.didFail;
}
get status() {
return this._status;
}
run() {
if (this.status === TransactionStatus.Success) {
throw new Error("Cannot re-run a successful echo transaction");
}
this.setStatus(TransactionStatus.Pending);
this.runFn().then(() => this.setStatus(TransactionStatus.Success)).catch(() => this.setStatus(TransactionStatus.Error));
}
cancel() {
// Success basically means "done"
this.setStatus(TransactionStatus.Success);
}
setStatus(status) {
this._status = status;
if (status === TransactionStatus.Error) {
this.didFail = true;
} else if (status === TransactionStatus.Success) {
this.didFail = false;
}
this.notifyCondition(status);
}
}
exports.EchoTransaction = EchoTransaction;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfV2hlbmFibGUiLCJyZXF1aXJlIiwiVHJhbnNhY3Rpb25TdGF0dXMiLCJleHBvcnRzIiwiRWNob1RyYW5zYWN0aW9uIiwiV2hlbmFibGUiLCJjb25zdHJ1Y3RvciIsImF1ZGl0TmFtZSIsInJ1bkZuIiwiX2RlZmluZVByb3BlcnR5MiIsImRlZmF1bHQiLCJQZW5kaW5nIiwiRGF0ZSIsImRpZFByZXZpb3VzbHlGYWlsIiwiZGlkRmFpbCIsInN0YXR1cyIsIl9zdGF0dXMiLCJydW4iLCJTdWNjZXNzIiwiRXJyb3IiLCJzZXRTdGF0dXMiLCJ0aGVuIiwiY2F0Y2giLCJjYW5jZWwiLCJub3RpZnlDb25kaXRpb24iXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc3RvcmVzL2xvY2FsLWVjaG8vRWNob1RyYW5zYWN0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qXG5Db3B5cmlnaHQgMjAyNCBOZXcgVmVjdG9yIEx0ZC5cbkNvcHlyaWdodCAyMDIwIFRoZSBNYXRyaXgub3JnIEZvdW5kYXRpb24gQy5JLkMuXG5cblNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBR1BMLTMuMC1vbmx5IE9SIEdQTC0zLjAtb25seVxuUGxlYXNlIHNlZSBMSUNFTlNFIGZpbGVzIGluIHRoZSByZXBvc2l0b3J5IHJvb3QgZm9yIGZ1bGwgZGV0YWlscy5cbiovXG5cbmltcG9ydCB7IFdoZW5hYmxlIH0gZnJvbSBcIi4uLy4uL3V0aWxzL1doZW5hYmxlXCI7XG5cbmV4cG9ydCB0eXBlIFJ1bkZuID0gKCkgPT4gUHJvbWlzZTx2b2lkPjtcblxuZXhwb3J0IGVudW0gVHJhbnNhY3Rpb25TdGF0dXMge1xuICAgIFBlbmRpbmcsXG4gICAgU3VjY2VzcyxcbiAgICBFcnJvcixcbn1cblxuZXhwb3J0IGNsYXNzIEVjaG9UcmFuc2FjdGlvbiBleHRlbmRzIFdoZW5hYmxlPFRyYW5zYWN0aW9uU3RhdHVzPiB7XG4gICAgcHJpdmF0ZSBfc3RhdHVzID0gVHJhbnNhY3Rpb25TdGF0dXMuUGVuZGluZztcbiAgICBwcml2YXRlIGRpZEZhaWwgPSBmYWxzZTtcblxuICAgIHB1YmxpYyByZWFkb25seSBzdGFydFRpbWUgPSBuZXcgRGF0ZSgpO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgYXVkaXROYW1lOiBzdHJpbmcsXG4gICAgICAgIHB1YmxpYyBydW5GbjogUnVuRm4sXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkaWRQcmV2aW91c2x5RmFpbCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlkRmFpbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHN0YXR1cygpOiBUcmFuc2FjdGlvblN0YXR1cyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zdGF0dXM7XG4gICAgfVxuXG4gICAgcHVibGljIHJ1bigpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc3RhdHVzID09PSBUcmFuc2FjdGlvblN0YXR1cy5TdWNjZXNzKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgcmUtcnVuIGEgc3VjY2Vzc2Z1bCBlY2hvIHRyYW5zYWN0aW9uXCIpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0U3RhdHVzKFRyYW5zYWN0aW9uU3RhdHVzLlBlbmRpbmcpO1xuICAgICAgICB0aGlzLnJ1bkZuKClcbiAgICAgICAgICAgIC50aGVuKCgpID0+IHRoaXMuc2V0U3RhdHVzKFRyYW5zYWN0aW9uU3RhdHVzLlN1Y2Nlc3MpKVxuICAgICAgICAgICAgLmNhdGNoKCgpID0+IHRoaXMuc2V0U3RhdHVzKFRyYW5zYWN0aW9uU3RhdHVzLkVycm9yKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGNhbmNlbCgpOiB2b2lkIHtcbiAgICAgICAgLy8gU3VjY2VzcyBiYXNpY2FsbHkgbWVhbnMgXCJkb25lXCJcbiAgICAgICAgdGhpcy5zZXRTdGF0dXMoVHJhbnNhY3Rpb25TdGF0dXMuU3VjY2Vzcyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRTdGF0dXMoc3RhdHVzOiBUcmFuc2FjdGlvblN0YXR1cyk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdGF0dXMgPSBzdGF0dXM7XG4gICAgICAgIGlmIChzdGF0dXMgPT09IFRyYW5zYWN0aW9uU3RhdHVzLkVycm9yKSB7XG4gICAgICAgICAgICB0aGlzLmRpZEZhaWwgPSB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKHN0YXR1cyA9PT0gVHJhbnNhY3Rpb25TdGF0dXMuU3VjY2Vzcykge1xuICAgICAgICAgICAgdGhpcy5kaWRGYWlsID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ub3RpZnlDb25kaXRpb24oc3RhdHVzKTtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBUUEsSUFBQUEsU0FBQSxHQUFBQyxPQUFBO0FBUkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFOQSxJQVlZQyxpQkFBaUIsR0FBQUMsT0FBQSxDQUFBRCxpQkFBQSwwQkFBakJBLGlCQUFpQjtFQUFqQkEsaUJBQWlCLENBQWpCQSxpQkFBaUI7RUFBakJBLGlCQUFpQixDQUFqQkEsaUJBQWlCO0VBQWpCQSxpQkFBaUIsQ0FBakJBLGlCQUFpQjtFQUFBLE9BQWpCQSxpQkFBaUI7QUFBQTtBQU10QixNQUFNRSxlQUFlLFNBQVNDLGtCQUFRLENBQW9CO0VBTXREQyxXQUFXQSxDQUNFQyxTQUFpQixFQUMxQkMsS0FBWSxFQUNyQjtJQUNFLEtBQUssQ0FBQyxDQUFDO0lBQUMsSUFBQUMsZ0JBQUEsQ0FBQUMsT0FBQSxtQkFUTVIsaUJBQWlCLENBQUNTLE9BQU87SUFBQSxJQUFBRixnQkFBQSxDQUFBQyxPQUFBLG1CQUN6QixLQUFLO0lBQUEsSUFBQUQsZ0JBQUEsQ0FBQUMsT0FBQSxxQkFFSyxJQUFJRSxJQUFJLENBQUMsQ0FBQztJQUFBLEtBR2xCTCxTQUFpQixHQUFqQkEsU0FBaUI7SUFBQSxLQUMxQkMsS0FBWSxHQUFaQSxLQUFZO0VBR3ZCO0VBRUEsSUFBV0ssaUJBQWlCQSxDQUFBLEVBQVk7SUFDcEMsT0FBTyxJQUFJLENBQUNDLE9BQU87RUFDdkI7RUFFQSxJQUFXQyxNQUFNQSxDQUFBLEVBQXNCO0lBQ25DLE9BQU8sSUFBSSxDQUFDQyxPQUFPO0VBQ3ZCO0VBRU9DLEdBQUdBLENBQUEsRUFBUztJQUNmLElBQUksSUFBSSxDQUFDRixNQUFNLEtBQUtiLGlCQUFpQixDQUFDZ0IsT0FBTyxFQUFFO01BQzNDLE1BQU0sSUFBSUMsS0FBSyxDQUFDLDZDQUE2QyxDQUFDO0lBQ2xFO0lBQ0EsSUFBSSxDQUFDQyxTQUFTLENBQUNsQixpQkFBaUIsQ0FBQ1MsT0FBTyxDQUFDO0lBQ3pDLElBQUksQ0FBQ0gsS0FBSyxDQUFDLENBQUMsQ0FDUGEsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDRCxTQUFTLENBQUNsQixpQkFBaUIsQ0FBQ2dCLE9BQU8sQ0FBQyxDQUFDLENBQ3JESSxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUNGLFNBQVMsQ0FBQ2xCLGlCQUFpQixDQUFDaUIsS0FBSyxDQUFDLENBQUM7RUFDN0Q7RUFFT0ksTUFBTUEsQ0FBQSxFQUFTO0lBQ2xCO0lBQ0EsSUFBSSxDQUFDSCxTQUFTLENBQUNsQixpQkFBaUIsQ0FBQ2dCLE9BQU8sQ0FBQztFQUM3QztFQUVRRSxTQUFTQSxDQUFDTCxNQUF5QixFQUFRO0lBQy9DLElBQUksQ0FBQ0MsT0FBTyxHQUFHRCxNQUFNO0lBQ3JCLElBQUlBLE1BQU0sS0FBS2IsaUJBQWlCLENBQUNpQixLQUFLLEVBQUU7TUFDcEMsSUFBSSxDQUFDTCxPQUFPLEdBQUcsSUFBSTtJQUN2QixDQUFDLE1BQU0sSUFBSUMsTUFBTSxLQUFLYixpQkFBaUIsQ0FBQ2dCLE9BQU8sRUFBRTtNQUM3QyxJQUFJLENBQUNKLE9BQU8sR0FBRyxLQUFLO0lBQ3hCO0lBQ0EsSUFBSSxDQUFDVSxlQUFlLENBQUNULE1BQU0sQ0FBQztFQUNoQztBQUNKO0FBQUNaLE9BQUEsQ0FBQUMsZUFBQSxHQUFBQSxlQUFBIiwiaWdub3JlTGlzdCI6W119