matrix-react-sdk
Version:
SDK for matrix.org using React
170 lines (133 loc) • 14.1 kB
JavaScript
;
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.hideToast = exports.showToast = exports.Kind = void 0;
var _Modal = _interopRequireDefault(require("../Modal"));
var sdk = _interopRequireWildcard(require("../index"));
var _languageHandler = require("../languageHandler");
var _DeviceListener = _interopRequireDefault(require("../DeviceListener"));
var _SetupEncryptionDialog = _interopRequireDefault(require("../components/views/dialogs/security/SetupEncryptionDialog"));
var _SecurityManager = require("../SecurityManager");
var _ToastStore = _interopRequireDefault(require("../stores/ToastStore"));
var _GenericToast = _interopRequireDefault(require("../components/views/toasts/GenericToast"));
var _Security = _interopRequireDefault(require("../customisations/Security"));
/*
Copyright 2020 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
const TOAST_KEY = "setupencryption";
const getTitle = (kind
/*: Kind*/
) => {
switch (kind) {
case Kind.SET_UP_ENCRYPTION:
return (0, _languageHandler._t)("Set up Secure Backup");
case Kind.UPGRADE_ENCRYPTION:
return (0, _languageHandler._t)("Encryption upgrade available");
case Kind.VERIFY_THIS_SESSION:
return (0, _languageHandler._t)("Verify this session");
}
};
const getIcon = (kind
/*: Kind*/
) => {
switch (kind) {
case Kind.SET_UP_ENCRYPTION:
case Kind.UPGRADE_ENCRYPTION:
return "secure_backup";
case Kind.VERIFY_THIS_SESSION:
return "verification_warning";
}
};
const getSetupCaption = (kind
/*: Kind*/
) => {
switch (kind) {
case Kind.SET_UP_ENCRYPTION:
return (0, _languageHandler._t)("Continue");
case Kind.UPGRADE_ENCRYPTION:
return (0, _languageHandler._t)("Upgrade");
case Kind.VERIFY_THIS_SESSION:
return (0, _languageHandler._t)("Verify");
}
};
const getDescription = (kind
/*: Kind*/
) => {
switch (kind) {
case Kind.SET_UP_ENCRYPTION:
case Kind.UPGRADE_ENCRYPTION:
return (0, _languageHandler._t)("Safeguard against losing access to encrypted messages & data");
case Kind.VERIFY_THIS_SESSION:
return (0, _languageHandler._t)("Other users may not trust it");
}
};
let Kind;
exports.Kind = Kind;
(function (Kind) {
Kind["SET_UP_ENCRYPTION"] = "set_up_encryption";
Kind["UPGRADE_ENCRYPTION"] = "upgrade_encryption";
Kind["VERIFY_THIS_SESSION"] = "verify_this_session";
})(Kind || (exports.Kind = Kind = {}));
const onReject = () => {
_DeviceListener.default.sharedInstance().dismissEncryptionSetup();
};
const showToast = (kind
/*: Kind*/
) => {
if (_Security.default.setupEncryptionNeeded?.(kind)) {
return;
}
const onAccept = async () => {
if (kind === Kind.VERIFY_THIS_SESSION) {
_Modal.default.createTrackedDialog("Verify session", "Verify session", _SetupEncryptionDialog.default, {}, null,
/* priority = */
false,
/* static = */
true);
} else {
const Spinner = sdk.getComponent("elements.Spinner");
const modal = _Modal.default.createDialog(Spinner, null, "mx_Dialog_spinner",
/* priority */
false,
/* static */
true);
try {
await (0, _SecurityManager.accessSecretStorage)();
} finally {
modal.close();
}
}
};
_ToastStore.default.sharedInstance().addOrReplaceToast({
key: TOAST_KEY,
title: getTitle(kind),
icon: getIcon(kind),
props: {
description: getDescription(kind),
acceptLabel: getSetupCaption(kind),
onAccept,
rejectLabel: (0, _languageHandler._t)("Later"),
onReject
},
component: _GenericToast.default,
priority: kind === Kind.VERIFY_THIS_SESSION ? 95 : 40
});
};
exports.showToast = showToast;
const hideToast = () => {
_ToastStore.default.sharedInstance().dismissToast(TOAST_KEY);
};
exports.hideToast = hideToast;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90b2FzdHMvU2V0dXBFbmNyeXB0aW9uVG9hc3QudHMiXSwibmFtZXMiOlsiVE9BU1RfS0VZIiwiZ2V0VGl0bGUiLCJraW5kIiwiS2luZCIsIlNFVF9VUF9FTkNSWVBUSU9OIiwiVVBHUkFERV9FTkNSWVBUSU9OIiwiVkVSSUZZX1RISVNfU0VTU0lPTiIsImdldEljb24iLCJnZXRTZXR1cENhcHRpb24iLCJnZXREZXNjcmlwdGlvbiIsIm9uUmVqZWN0IiwiRGV2aWNlTGlzdGVuZXIiLCJzaGFyZWRJbnN0YW5jZSIsImRpc21pc3NFbmNyeXB0aW9uU2V0dXAiLCJzaG93VG9hc3QiLCJTZWN1cml0eUN1c3RvbWlzYXRpb25zIiwic2V0dXBFbmNyeXB0aW9uTmVlZGVkIiwib25BY2NlcHQiLCJNb2RhbCIsImNyZWF0ZVRyYWNrZWREaWFsb2ciLCJTZXR1cEVuY3J5cHRpb25EaWFsb2ciLCJTcGlubmVyIiwic2RrIiwiZ2V0Q29tcG9uZW50IiwibW9kYWwiLCJjcmVhdGVEaWFsb2ciLCJjbG9zZSIsIlRvYXN0U3RvcmUiLCJhZGRPclJlcGxhY2VUb2FzdCIsImtleSIsInRpdGxlIiwiaWNvbiIsInByb3BzIiwiZGVzY3JpcHRpb24iLCJhY2NlcHRMYWJlbCIsInJlamVjdExhYmVsIiwiY29tcG9uZW50IiwiR2VuZXJpY1RvYXN0IiwicHJpb3JpdHkiLCJoaWRlVG9hc3QiLCJkaXNtaXNzVG9hc3QiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBZ0JBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQXhCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFZQSxNQUFNQSxTQUFTLEdBQUcsaUJBQWxCOztBQUVBLE1BQU1DLFFBQVEsR0FBRyxDQUFDQztBQUFEO0FBQUEsS0FBZ0I7QUFDN0IsVUFBUUEsSUFBUjtBQUNJLFNB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QUFDTixJQUFELENBRnpCO0FBR0hlLE1BQUFBLFFBSEc7QUFJSGtCLE1BQUFBLFdBQVcsRUFBRSx5QkFBRyxPQUFILENBSlY7QUFLSHpCLE1BQUFBO0FBTEcsS0FKbUM7QUFXMUMwQixJQUFBQSxTQUFTLEVBQUVDLHFCQVgrQjtBQVkxQ0MsSUFBQUEsUUFBUSxFQUFFcEMsSUFBSSxLQUFLQyxJQUFJLENBQUNHLG1CQUFkLEdBQW9DLEVBQXBDLEdBQXlDO0FBWlQsR0FBOUM7QUFjSCxDQXBDTTs7OztBQXNDQSxNQUFNaUMsU0FBUyxHQUFHLE1BQU07QUFDM0JaLHNCQUFXZixjQUFYLEdBQTRCNEIsWUFBNUIsQ0FBeUN4QyxTQUF6QztBQUNILENBRk0iLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuQ29weXJpZ2h0IDIwMjAgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG5odHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbmltcG9ydCBNb2RhbCBmcm9tIFwiLi4vTW9kYWxcIjtcbmltcG9ydCAqIGFzIHNkayBmcm9tIFwiLi4vaW5kZXhcIjtcbmltcG9ydCB7IF90IH0gZnJvbSBcIi4uL2xhbmd1YWdlSGFuZGxlclwiO1xuaW1wb3J0IERldmljZUxpc3RlbmVyIGZyb20gXCIuLi9EZXZpY2VMaXN0ZW5lclwiO1xuaW1wb3J0IFNldHVwRW5jcnlwdGlvbkRpYWxvZyBmcm9tIFwiLi4vY29tcG9uZW50cy92aWV3cy9kaWFsb2dzL3NlY3VyaXR5L1NldHVwRW5jcnlwdGlvbkRpYWxvZ1wiO1xuaW1wb3J0IHsgYWNjZXNzU2VjcmV0U3RvcmFnZSB9IGZyb20gXCIuLi9TZWN1cml0eU1hbmFnZXJcIjtcbmltcG9ydCBUb2FzdFN0b3JlIGZyb20gXCIuLi9zdG9yZXMvVG9hc3RTdG9yZVwiO1xuaW1wb3J0IEdlbmVyaWNUb2FzdCBmcm9tIFwiLi4vY29tcG9uZW50cy92aWV3cy90b2FzdHMvR2VuZXJpY1RvYXN0XCI7XG5pbXBvcnQgU2VjdXJpdHlDdXN0b21pc2F0aW9ucyBmcm9tIFwiLi4vY3VzdG9taXNhdGlvbnMvU2VjdXJpdHlcIjtcblxuY29uc3QgVE9BU1RfS0VZID0gXCJzZXR1cGVuY3J5cHRpb25cIjtcblxuY29uc3QgZ2V0VGl0bGUgPSAoa2luZDogS2luZCkgPT4ge1xuICAgIHN3aXRjaCAoa2luZCkge1xuICAgICAgICBjYXNlIEtpbmQuU0VUX1VQX0VOQ1JZUFRJT046XG4gICAgICAgICAgICByZXR1cm4gX3QoXCJTZXQgdXAgU2VjdXJlIEJhY2t1cFwiKTtcbiAgICAgICAgY2FzZSBLaW5kLlVQR1JBREVfRU5DUllQVElPTjpcbiAgICAgICAgICAgIHJldHVybiBfdChcIkVuY3J5cHRpb24gdXBncmFkZSBhdmFpbGFibGVcIik7XG4gICAgICAgIGNhc2UgS2luZC5WRVJJRllfVEhJU19TRVNTSU9OOlxuICAgICAgICAgICAgcmV0dXJuIF90KFwiVmVyaWZ5IHRoaXMgc2Vzc2lvblwiKTtcbiAgICB9XG59O1xuXG5jb25zdCBnZXRJY29uID0gKGtpbmQ6IEtpbmQpID0+IHtcbiAgICBzd2l0Y2ggKGtpbmQpIHtcbiAgICAgICAgY2FzZSBLaW5kLlNFVF9VUF9FTkNSWVBUSU9OOlxuICAgICAgICBjYXNlIEtpbmQuVVBHUkFERV9FTkNSWVBUSU9OOlxuICAgICAgICAgICAgcmV0dXJuIFwic2VjdXJlX2JhY2t1cFwiO1xuICAgICAgICBjYXNlIEtpbmQuVkVSSUZZX1RISVNfU0VTU0lPTjpcbiAgICAgICAgICAgIHJldHVybiBcInZlcmlmaWNhdGlvbl93YXJuaW5nXCI7XG4gICAgfVxufTtcblxuY29uc3QgZ2V0U2V0dXBDYXB0aW9uID0gKGtpbmQ6IEtpbmQpID0+IHtcbiAgICBzd2l0Y2ggKGtpbmQpIHtcbiAgICAgICAgY2FzZSBLaW5kLlNFVF9VUF9FTkNSWVBUSU9OOlxuICAgICAgICAgICAgcmV0dXJuIF90KFwiQ29udGludWVcIik7XG4gICAgICAgIGNhc2UgS2luZC5VUEdSQURFX0VOQ1JZUFRJT046XG4gICAgICAgICAgICByZXR1cm4gX3QoXCJVcGdyYWRlXCIpO1xuICAgICAgICBjYXNlIEtpbmQuVkVSSUZZX1RISVNfU0VTU0lPTjpcbiAgICAgICAgICAgIHJldHVybiBfdChcIlZlcmlmeVwiKTtcbiAgICB9XG59O1xuXG5jb25zdCBnZXREZXNjcmlwdGlvbiA9IChraW5kOiBLaW5kKSA9PiB7XG4gICAgc3dpdGNoIChraW5kKSB7XG4gICAgICAgIGNhc2UgS2luZC5TRVRfVVBfRU5DUllQVElPTjpcbiAgICAgICAgY2FzZSBLaW5kLlVQR1JBREVfRU5DUllQVElPTjpcbiAgICAgICAgICAgIHJldHVybiBfdChcIlNhZmVndWFyZCBhZ2FpbnN0IGxvc2luZyBhY2Nlc3MgdG8gZW5jcnlwdGVkIG1lc3NhZ2VzICYgZGF0YVwiKTtcbiAgICAgICAgY2FzZSBLaW5kLlZFUklGWV9USElTX1NFU1NJT046XG4gICAgICAgICAgICByZXR1cm4gX3QoXCJPdGhlciB1c2VycyBtYXkgbm90IHRydXN0IGl0XCIpO1xuICAgIH1cbn07XG5cbmV4cG9ydCBlbnVtIEtpbmQge1xuICAgIFNFVF9VUF9FTkNSWVBUSU9OID0gXCJzZXRfdXBfZW5jcnlwdGlvblwiLFxuICAgIFVQR1JBREVfRU5DUllQVElPTiA9IFwidXBncmFkZV9lbmNyeXB0aW9uXCIsXG4gICAgVkVSSUZZX1RISVNfU0VTU0lPTiA9IFwidmVyaWZ5X3RoaXNfc2Vzc2lvblwiLFxufVxuXG5jb25zdCBvblJlamVjdCA9ICgpID0+IHtcbiAgICBEZXZpY2VMaXN0ZW5lci5zaGFyZWRJbnN0YW5jZSgpLmRpc21pc3NFbmNyeXB0aW9uU2V0dXAoKTtcbn07XG5cbmV4cG9ydCBjb25zdCBzaG93VG9hc3QgPSAoa2luZDogS2luZCkgPT4ge1xuICAgIGlmIChTZWN1cml0eUN1c3RvbWlzYXRpb25zLnNldHVwRW5jcnlwdGlvbk5lZWRlZD8uKGtpbmQpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBvbkFjY2VwdCA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgaWYgKGtpbmQgPT09IEtpbmQuVkVSSUZZX1RISVNfU0VTU0lPTikge1xuICAgICAgICAgICAgTW9kYWwuY3JlYXRlVHJhY2tlZERpYWxvZyhcIlZlcmlmeSBzZXNzaW9uXCIsIFwiVmVyaWZ5IHNlc3Npb25cIiwgU2V0dXBFbmNyeXB0aW9uRGlhbG9nLFxuICAgICAgICAgICAgICAgIHt9LCBudWxsLCAvKiBwcmlvcml0eSA9ICovIGZhbHNlLCAvKiBzdGF0aWMgPSAqLyB0cnVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IFNwaW5uZXIgPSBzZGsuZ2V0Q29tcG9uZW50KFwiZWxlbWVudHMuU3Bpbm5lclwiKTtcbiAgICAgICAgICAgIGNvbnN0IG1vZGFsID0gTW9kYWwuY3JlYXRlRGlhbG9nKFxuICAgICAgICAgICAgICAgIFNwaW5uZXIsIG51bGwsIFwibXhfRGlhbG9nX3NwaW5uZXJcIiwgLyogcHJpb3JpdHkgKi8gZmFsc2UsIC8qIHN0YXRpYyAqLyB0cnVlLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgYWNjZXNzU2VjcmV0U3RvcmFnZSgpO1xuICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICBtb2RhbC5jbG9zZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcblxuICAgIFRvYXN0U3RvcmUuc2hhcmVkSW5zdGFuY2UoKS5hZGRPclJlcGxhY2VUb2FzdCh7XG4gICAgICAgIGtleTogVE9BU1RfS0VZLFxuICAgICAgICB0aXRsZTogZ2V0VGl0bGUoa2luZCksXG4gICAgICAgIGljb246IGdldEljb24oa2luZCksXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogZ2V0RGVzY3JpcHRpb24oa2luZCksXG4gICAgICAgICAgICBhY2NlcHRMYWJlbDogZ2V0U2V0dXBDYXB0aW9uKGtpbmQpLFxuICAgICAgICAgICAgb25BY2NlcHQsXG4gICAgICAgICAgICByZWplY3RMYWJlbDogX3QoXCJMYXRlclwiKSxcbiAgICAgICAgICAgIG9uUmVqZWN0LFxuICAgICAgICB9LFxuICAgICAgICBjb21wb25lbnQ6IEdlbmVyaWNUb2FzdCxcbiAgICAgICAgcHJpb3JpdHk6IGtpbmQgPT09IEtpbmQuVkVSSUZZX1RISVNfU0VTU0lPTiA/IDk1IDogNDAsXG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgaGlkZVRvYXN0ID0gKCkgPT4ge1xuICAgIFRvYXN0U3RvcmUuc2hhcmVkSW5zdGFuY2UoKS5kaXNtaXNzVG9hc3QoVE9BU1RfS0VZKTtcbn07XG4iXX0=