UNPKG

matrix-react-sdk

Version:
112 lines (86 loc) 15.9 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 = _interopRequireDefault(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _languageHandler = require("../../../languageHandler"); var _Modal = _interopRequireDefault(require("../../../Modal")); var _replaceableComponent = require("../../../utils/replaceableComponent"); var _VerificationRequestDialog = _interopRequireDefault(require("./VerificationRequestDialog")); var _BaseDialog = _interopRequireDefault(require("./BaseDialog")); var _DialogButtons = _interopRequireDefault(require("../elements/DialogButtons")); var _MatrixClientPeg = require("../../../MatrixClientPeg"); var sdk = _interopRequireWildcard(require("../../../index")); var _dec, _class, _class2, _temp; let NewSessionReviewDialog = (_dec = (0, _replaceableComponent.replaceableComponent)("views.dialogs.NewSessionReviewDialog"), _dec(_class = (_temp = _class2 = class NewSessionReviewDialog extends _react.default.PureComponent { constructor(...args) { super(...args); (0, _defineProperty2.default)(this, "onCancelClick", () => { const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog"); _Modal.default.createTrackedDialog("Verification failed", "insecure", ErrorDialog, { headerImage: require("../../../../res/img/e2e/warning.svg"), title: (0, _languageHandler._t)("Your account is not secure"), description: /*#__PURE__*/_react.default.createElement("div", null, (0, _languageHandler._t)("One of the following may be compromised:"), /*#__PURE__*/_react.default.createElement("ul", null, /*#__PURE__*/_react.default.createElement("li", null, (0, _languageHandler._t)("Your password")), /*#__PURE__*/_react.default.createElement("li", null, (0, _languageHandler._t)("Your homeserver")), /*#__PURE__*/_react.default.createElement("li", null, (0, _languageHandler._t)("This session, or the other session")), /*#__PURE__*/_react.default.createElement("li", null, (0, _languageHandler._t)("The internet connection either session is using"))), /*#__PURE__*/_react.default.createElement("div", null, (0, _languageHandler._t)("We recommend you change your password and Security Key in Settings immediately"))), onFinished: () => this.props.onFinished(false) }); }); (0, _defineProperty2.default)(this, "onContinueClick", () => { const { userId, device } = this.props; const cli = _MatrixClientPeg.MatrixClientPeg.get(); const requestPromise = cli.requestVerification(userId, [device.deviceId]); this.props.onFinished(true); _Modal.default.createTrackedDialog('New Session Verification', 'Starting dialog', _VerificationRequestDialog.default, { verificationRequestPromise: requestPromise, member: cli.getUser(userId), onFinished: async () => { const request = await requestPromise; request.cancel(); } }); }); } render() { const { device } = this.props; const icon = /*#__PURE__*/_react.default.createElement("span", { className: "mx_NewSessionReviewDialog_headerIcon mx_E2EIcon_warning" }); const titleText = (0, _languageHandler._t)("New session"); const title = /*#__PURE__*/_react.default.createElement("h2", { className: "mx_NewSessionReviewDialog_header" }, icon, titleText); return /*#__PURE__*/_react.default.createElement(_BaseDialog.default, { title: title, onFinished: this.props.onFinished }, /*#__PURE__*/_react.default.createElement("div", { className: "mx_NewSessionReviewDialog_body" }, /*#__PURE__*/_react.default.createElement("p", null, (0, _languageHandler._t)("Use this session to verify your new one, " + "granting it access to encrypted messages:")), /*#__PURE__*/_react.default.createElement("div", { className: "mx_NewSessionReviewDialog_deviceInfo" }, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("span", { className: "mx_NewSessionReviewDialog_deviceName" }, device.getDisplayName()), " ", /*#__PURE__*/_react.default.createElement("span", { className: "mx_NewSessionReviewDialog_deviceID" }, "(", device.deviceId, ")"))), /*#__PURE__*/_react.default.createElement("p", null, (0, _languageHandler._t)("If you didn’t sign in to this session, " + "your account may be compromised.")), /*#__PURE__*/_react.default.createElement(_DialogButtons.default, { cancelButton: (0, _languageHandler._t)("This wasn't me"), cancelButtonClass: "danger", primaryButton: (0, _languageHandler._t)("Continue"), onCancel: this.onCancelClick, onPrimaryButtonClick: this.onContinueClick }))); } }, (0, _defineProperty2.default)(_class2, "propTypes", { userId: _propTypes.default.string.isRequired, device: _propTypes.default.object.isRequired, onFinished: _propTypes.default.func.isRequired }), _temp)) || _class); exports.default = NewSessionReviewDialog; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3ZpZXdzL2RpYWxvZ3MvTmV3U2Vzc2lvblJldmlld0RpYWxvZy5qcyJdLCJuYW1lcyI6WyJOZXdTZXNzaW9uUmV2aWV3RGlhbG9nIiwiUmVhY3QiLCJQdXJlQ29tcG9uZW50IiwiRXJyb3JEaWFsb2ciLCJzZGsiLCJnZXRDb21wb25lbnQiLCJNb2RhbCIsImNyZWF0ZVRyYWNrZWREaWFsb2ciLCJoZWFkZXJJbWFnZSIsInJlcXVpcmUiLCJ0aXRsZSIsImRlc2NyaXB0aW9uIiwib25GaW5pc2hlZCIsInByb3BzIiwidXNlcklkIiwiZGV2aWNlIiwiY2xpIiwiTWF0cml4Q2xpZW50UGVnIiwiZ2V0IiwicmVxdWVzdFByb21pc2UiLCJyZXF1ZXN0VmVyaWZpY2F0aW9uIiwiZGV2aWNlSWQiLCJWZXJpZmljYXRpb25SZXF1ZXN0RGlhbG9nIiwidmVyaWZpY2F0aW9uUmVxdWVzdFByb21pc2UiLCJtZW1iZXIiLCJnZXRVc2VyIiwicmVxdWVzdCIsImNhbmNlbCIsInJlbmRlciIsImljb24iLCJ0aXRsZVRleHQiLCJnZXREaXNwbGF5TmFtZSIsIm9uQ2FuY2VsQ2xpY2siLCJvbkNvbnRpbnVlQ2xpY2siLCJQcm9wVHlwZXMiLCJzdHJpbmciLCJpc1JlcXVpcmVkIiwib2JqZWN0IiwiZnVuYyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQWdCQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7OztJQUdxQkEsc0IsV0FEcEIsZ0RBQXFCLHNDQUFyQixDLG1DQUFELE1BQ3FCQSxzQkFEckIsU0FDb0RDLGVBQU1DLGFBRDFELENBQ3dFO0FBQUE7QUFBQTtBQUFBLHlEQU9wRCxNQUFNO0FBQ2xCLFlBQU1DLFdBQVcsR0FBR0MsR0FBRyxDQUFDQyxZQUFKLENBQWlCLHFCQUFqQixDQUFwQjs7QUFDQUMscUJBQU1DLG1CQUFOLENBQTBCLHFCQUExQixFQUFpRCxVQUFq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Q2ZuQixFQUFBQSxNQUFNLEVBQUVvQixtQkFBVUMsTUFBVixDQUFpQkMsVUFEVjtBQUVmckIsRUFBQUEsTUFBTSxFQUFFbUIsbUJBQVVHLE1BQVYsQ0FBaUJELFVBRlY7QUFHZnhCLEVBQUFBLFVBQVUsRUFBRXNCLG1CQUFVSSxJQUFWLENBQWVGO0FBSFosQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG5Db3B5cmlnaHQgMjAyMCBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IHsgX3QgfSBmcm9tICcuLi8uLi8uLi9sYW5ndWFnZUhhbmRsZXInO1xuaW1wb3J0IE1vZGFsIGZyb20gJy4uLy4uLy4uL01vZGFsJztcbmltcG9ydCB7IHJlcGxhY2VhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvcmVwbGFjZWFibGVDb21wb25lbnQnO1xuaW1wb3J0IFZlcmlmaWNhdGlvblJlcXVlc3REaWFsb2cgZnJvbSAnLi9WZXJpZmljYXRpb25SZXF1ZXN0RGlhbG9nJztcbmltcG9ydCBCYXNlRGlhbG9nIGZyb20gJy4vQmFzZURpYWxvZyc7XG5pbXBvcnQgRGlhbG9nQnV0dG9ucyBmcm9tICcuLi9lbGVtZW50cy9EaWFsb2dCdXR0b25zJztcbmltcG9ydCB7TWF0cml4Q2xpZW50UGVnfSBmcm9tIFwiLi4vLi4vLi4vTWF0cml4Q2xpZW50UGVnXCI7XG5pbXBvcnQgKiBhcyBzZGsgZnJvbSAnLi4vLi4vLi4vaW5kZXgnO1xuXG5AcmVwbGFjZWFibGVDb21wb25lbnQoXCJ2aWV3cy5kaWFsb2dzLk5ld1Nlc3Npb25SZXZpZXdEaWFsb2dcIilcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE5ld1Nlc3Npb25SZXZpZXdEaWFsb2cgZXh0ZW5kcyBSZWFjdC5QdXJlQ29tcG9uZW50IHtcbiAgICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgICAgICB1c2VySWQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAgICAgZGV2aWNlOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgICAgIG9uRmluaXNoZWQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgfVxuXG4gICAgb25DYW5jZWxDbGljayA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgRXJyb3JEaWFsb2cgPSBzZGsuZ2V0Q29tcG9uZW50KFwiZGlhbG9ncy5FcnJvckRpYWxvZ1wiKTtcbiAgICAgICAgTW9kYWwuY3JlYXRlVHJhY2tlZERpYWxvZyhcIlZlcmlmaWNhdGlvbiBmYWlsZWRcIiwgXCJpbnNlY3VyZVwiLCBFcnJvckRpYWxvZywge1xuICAgICAgICAgICAgaGVhZGVySW1hZ2U6IHJlcXVpcmUoXCIuLi8uLi8uLi8uLi9yZXMvaW1nL2UyZS93YXJuaW5nLnN2Z1wiKSxcbiAgICAgICAgICAgIHRpdGxlOiBfdChcIllvdXIgYWNjb3VudCBpcyBub3Qgc2VjdXJlXCIpLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IDxkaXY+XG4gICAgICAgICAgICAgICAge190KFwiT25lIG9mIHRoZSBmb2xsb3dpbmcgbWF5IGJlIGNvbXByb21pc2VkOlwiKX1cbiAgICAgICAgICAgICAgICA8dWw+XG4gICAgICAgICAgICAgICAgICAgIDxsaT57X3QoXCJZb3VyIHBhc3N3b3JkXCIpfTwvbGk+XG4gICAgICAgICAgICAgICAgICAgIDxsaT57X3QoXCJZb3VyIGhvbWVzZXJ2ZXJcIil9PC9saT5cbiAgICAgICAgICAgICAgICAgICAgPGxpPntfdChcIlRoaXMgc2Vzc2lvbiwgb3IgdGhlIG90aGVyIHNlc3Npb25cIil9PC9saT5cbiAgICAgICAgICAgICAgICAgICAgPGxpPntfdChcIlRoZSBpbnRlcm5ldCBjb25uZWN0aW9uIGVpdGhlciBzZXNzaW9uIGlzIHVzaW5nXCIpfTwvbGk+XG4gICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICB7X3QoXCJXZSByZWNvbW1lbmQgeW91IGNoYW5nZSB5b3VyIHBhc3N3b3JkIGFuZCBTZWN1cml0eSBLZXkgaW4gU2V0dGluZ3MgaW1tZWRpYXRlbHlcIil9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj4sXG4gICAgICAgICAgICBvbkZpbmlzaGVkOiAoKSA9PiB0aGlzLnByb3BzLm9uRmluaXNoZWQoZmFsc2UpLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbkNvbnRpbnVlQ2xpY2sgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgdXNlcklkLCBkZXZpY2UgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGNvbnN0IGNsaSA9IE1hdHJpeENsaWVudFBlZy5nZXQoKTtcbiAgICAgICAgY29uc3QgcmVxdWVzdFByb21pc2UgPSBjbGkucmVxdWVzdFZlcmlmaWNhdGlvbihcbiAgICAgICAgICAgIHVzZXJJZCxcbiAgICAgICAgICAgIFtkZXZpY2UuZGV2aWNlSWRdLFxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMucHJvcHMub25GaW5pc2hlZCh0cnVlKTtcbiAgICAgICAgTW9kYWwuY3JlYXRlVHJhY2tlZERpYWxvZygnTmV3IFNlc3Npb24gVmVyaWZpY2F0aW9uJywgJ1N0YXJ0aW5nIGRpYWxvZycsIFZlcmlmaWNhdGlvblJlcXVlc3REaWFsb2csIHtcbiAgICAgICAgICAgIHZlcmlmaWNhdGlvblJlcXVlc3RQcm9taXNlOiByZXF1ZXN0UHJvbWlzZSxcbiAgICAgICAgICAgIG1lbWJlcjogY2xpLmdldFVzZXIodXNlcklkKSxcbiAgICAgICAgICAgIG9uRmluaXNoZWQ6IGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXF1ZXN0ID0gYXdhaXQgcmVxdWVzdFByb21pc2U7XG4gICAgICAgICAgICAgICAgcmVxdWVzdC5jYW5jZWwoKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHJlbmRlcigpIHtcbiAgICAgICAgY29uc3QgeyBkZXZpY2UgfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgICAgY29uc3QgaWNvbiA9IDxzcGFuIGNsYXNzTmFtZT1cIm14X05ld1Nlc3Npb25SZXZpZXdEaWFsb2dfaGVhZGVySWNvbiBteF9FMkVJY29uX3dhcm5pbmdcIj48L3NwYW4+O1xuICAgICAgICBjb25zdCB0aXRsZVRleHQgPSBfdChcIk5ldyBzZXNzaW9uXCIpO1xuXG4gICAgICAgIGNvbnN0IHRpdGxlID0gPGgyIGNsYXNzTmFtZT1cIm14X05ld1Nlc3Npb25SZXZpZXdEaWFsb2dfaGVhZGVyXCI+XG4gICAgICAgICAgICB7aWNvbn1cbiAgICAgICAgICAgIHt0aXRsZVRleHR9XG4gICAgICAgIDwvaDI+O1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8QmFzZURpYWxvZ1xuICAgICAgICAgICAgICAgIHRpdGxlPXt0aXRsZX1cbiAgICAgICAgICAgICAgICBvbkZpbmlzaGVkPXt0aGlzLnByb3BzLm9uRmluaXNoZWR9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJteF9OZXdTZXNzaW9uUmV2aWV3RGlhbG9nX2JvZHlcIj5cbiAgICAgICAgICAgICAgICAgICAgPHA+e190KFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJVc2UgdGhpcyBzZXNzaW9uIHRvIHZlcmlmeSB5b3VyIG5ldyBvbmUsIFwiICtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZ3JhbnRpbmcgaXQgYWNjZXNzIHRvIGVuY3J5cHRlZCBtZXNzYWdlczpcIixcbiAgICAgICAgICAgICAgICAgICAgKX08L3A+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXhfTmV3U2Vzc2lvblJldmlld0RpYWxvZ19kZXZpY2VJbmZvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cIm14X05ld1Nlc3Npb25SZXZpZXdEaWFsb2dfZGV2aWNlTmFtZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZGV2aWNlLmdldERpc3BsYXlOYW1lKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPiA8c3BhbiBjbGFzc05hbWU9XCJteF9OZXdTZXNzaW9uUmV2aWV3RGlhbG9nX2RldmljZUlEXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7ZGV2aWNlLmRldmljZUlkfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxwPntfdChcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiSWYgeW91IGRpZG7igJl0IHNpZ24gaW4gdG8gdGhpcyBzZXNzaW9uLCBcIiArXG4gICAgICAgICAgICAgICAgICAgICAgICBcInlvdXIgYWNjb3VudCBtYXkgYmUgY29tcHJvbWlzZWQuXCIsXG4gICAgICAgICAgICAgICAgICAgICl9PC9wPlxuICAgICAgICAgICAgICAgICAgICA8RGlhbG9nQnV0dG9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FuY2VsQnV0dG9uPXtfdChcIlRoaXMgd2Fzbid0IG1lXCIpfVxuICAgICAgICAgICAgICAgICAgICAgICAgY2FuY2VsQnV0dG9uQ2xhc3M9XCJkYW5nZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcHJpbWFyeUJ1dHRvbj17X3QoXCJDb250aW51ZVwiKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2FuY2VsPXt0aGlzLm9uQ2FuY2VsQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgICAgICBvblByaW1hcnlCdXR0b25DbGljaz17dGhpcy5vbkNvbnRpbnVlQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L0Jhc2VEaWFsb2c+XG4gICAgICAgICk7XG4gICAgfVxufVxuIl19