UNPKG

matrix-react-sdk

Version:
71 lines (68 loc) 14.4 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _react = _interopRequireDefault(require("react")); var _languageHandler = require("../../../../languageHandler"); var _AccessibleButton = _interopRequireDefault(require("../../elements/AccessibleButton")); var _SettingsSubsection = _interopRequireDefault(require("../shared/SettingsSubsection")); var _DeviceSecurityCard = _interopRequireDefault(require("./DeviceSecurityCard")); var _DeviceSecurityLearnMore = require("./DeviceSecurityLearnMore"); var _filter = require("./filter"); var _types = require("./types"); /* Copyright 2024 New Vector Ltd. Copyright 2022 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. */ const SecurityRecommendations = ({ devices, currentDeviceId, goToFilteredList }) => { const devicesArray = Object.values(devices); const unverifiedDevicesCount = (0, _filter.filterDevicesBySecurityRecommendation)(devicesArray, [_types.DeviceSecurityVariation.Unverified]) // filter out the current device // as unverfied warning and actions // will be shown in current session section .filter(device => device.device_id !== currentDeviceId).length; const inactiveDevicesCount = (0, _filter.filterDevicesBySecurityRecommendation)(devicesArray, [_types.DeviceSecurityVariation.Inactive]).length; if (!(unverifiedDevicesCount | inactiveDevicesCount)) { return null; } const inactiveAgeDays = _filter.INACTIVE_DEVICE_AGE_DAYS; return /*#__PURE__*/_react.default.createElement(_SettingsSubsection.default, { heading: (0, _languageHandler._t)("settings|sessions|security_recommendations"), description: (0, _languageHandler._t)("settings|sessions|security_recommendations_description"), "data-testid": "security-recommendations-section" }, !!unverifiedDevicesCount && /*#__PURE__*/_react.default.createElement(_DeviceSecurityCard.default, { variation: _types.DeviceSecurityVariation.Unverified, heading: (0, _languageHandler._t)("settings|sessions|unverified_sessions"), description: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, (0, _languageHandler._t)("settings|sessions|unverified_sessions_list_description"), /*#__PURE__*/_react.default.createElement(_DeviceSecurityLearnMore.DeviceSecurityLearnMore, { variation: _types.DeviceSecurityVariation.Unverified })) }, /*#__PURE__*/_react.default.createElement(_AccessibleButton.default, { kind: "link_inline", onClick: () => goToFilteredList(_types.DeviceSecurityVariation.Unverified), "data-testid": "unverified-devices-cta" }, (0, _languageHandler._t)("action|view_all") + ` (${unverifiedDevicesCount})`)), !!inactiveDevicesCount && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, !!unverifiedDevicesCount && /*#__PURE__*/_react.default.createElement("div", { className: "mx_SecurityRecommendations_spacing" }), /*#__PURE__*/_react.default.createElement(_DeviceSecurityCard.default, { variation: _types.DeviceSecurityVariation.Inactive, heading: (0, _languageHandler._t)("settings|sessions|inactive_sessions"), description: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, (0, _languageHandler._t)("settings|sessions|inactive_sessions_list_description", { inactiveAgeDays }), /*#__PURE__*/_react.default.createElement(_DeviceSecurityLearnMore.DeviceSecurityLearnMore, { variation: _types.DeviceSecurityVariation.Inactive })) }, /*#__PURE__*/_react.default.createElement(_AccessibleButton.default, { kind: "link_inline", onClick: () => goToFilteredList(_types.DeviceSecurityVariation.Inactive), "data-testid": "inactive-devices-cta" }, (0, _languageHandler._t)("action|view_all") + ` (${inactiveDevicesCount})`)))); }; var _default = exports.default = SecurityRecommendations; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9sYW5ndWFnZUhhbmRsZXIiLCJfQWNjZXNzaWJsZUJ1dHRvbiIsIl9TZXR0aW5nc1N1YnNlY3Rpb24iLCJfRGV2aWNlU2VjdXJpdHlDYXJkIiwiX0RldmljZVNlY3VyaXR5TGVhcm5Nb3JlIiwiX2ZpbHRlciIsIl90eXBlcyIsIlNlY3VyaXR5UmVjb21tZW5kYXRpb25zIiwiZGV2aWNlcyIsImN1cnJlbnREZXZpY2VJZCIsImdvVG9GaWx0ZXJlZExpc3QiLCJkZXZpY2VzQXJyYXkiLCJPYmplY3QiLCJ2YWx1ZXMiLCJ1bnZlcmlmaWVkRGV2aWNlc0NvdW50IiwiZmlsdGVyRGV2aWNlc0J5U2VjdXJpdHlSZWNvbW1lbmRhdGlvbiIsIkRldmljZVNlY3VyaXR5VmFyaWF0aW9uIiwiVW52ZXJpZmllZCIsImZpbHRlciIsImRldmljZSIsImRldmljZV9pZCIsImxlbmd0aCIsImluYWN0aXZlRGV2aWNlc0NvdW50IiwiSW5hY3RpdmUiLCJpbmFjdGl2ZUFnZURheXMiLCJJTkFDVElWRV9ERVZJQ0VfQUdFX0RBWVMiLCJkZWZhdWx0IiwiY3JlYXRlRWxlbWVudCIsImhlYWRpbmciLCJfdCIsImRlc2NyaXB0aW9uIiwidmFyaWF0aW9uIiwiRnJhZ21lbnQiLCJEZXZpY2VTZWN1cml0eUxlYXJuTW9yZSIsImtpbmQiLCJvbkNsaWNrIiwiY2xhc3NOYW1lIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvdmlld3Mvc2V0dGluZ3MvZGV2aWNlcy9TZWN1cml0eVJlY29tbWVuZGF0aW9ucy50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLypcbkNvcHlyaWdodCAyMDI0IE5ldyBWZWN0b3IgTHRkLlxuQ29weXJpZ2h0IDIwMjIgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFHUEwtMy4wLW9ubHkgT1IgR1BMLTMuMC1vbmx5XG5QbGVhc2Ugc2VlIExJQ0VOU0UgZmlsZXMgaW4gdGhlIHJlcG9zaXRvcnkgcm9vdCBmb3IgZnVsbCBkZXRhaWxzLlxuKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBfdCB9IGZyb20gXCIuLi8uLi8uLi8uLi9sYW5ndWFnZUhhbmRsZXJcIjtcbmltcG9ydCBBY2Nlc3NpYmxlQnV0dG9uIGZyb20gXCIuLi8uLi9lbGVtZW50cy9BY2Nlc3NpYmxlQnV0dG9uXCI7XG5pbXBvcnQgU2V0dGluZ3NTdWJzZWN0aW9uIGZyb20gXCIuLi9zaGFyZWQvU2V0dGluZ3NTdWJzZWN0aW9uXCI7XG5pbXBvcnQgRGV2aWNlU2VjdXJpdHlDYXJkIGZyb20gXCIuL0RldmljZVNlY3VyaXR5Q2FyZFwiO1xuaW1wb3J0IHsgRGV2aWNlU2VjdXJpdHlMZWFybk1vcmUgfSBmcm9tIFwiLi9EZXZpY2VTZWN1cml0eUxlYXJuTW9yZVwiO1xuaW1wb3J0IHsgZmlsdGVyRGV2aWNlc0J5U2VjdXJpdHlSZWNvbW1lbmRhdGlvbiwgRmlsdGVyVmFyaWF0aW9uLCBJTkFDVElWRV9ERVZJQ0VfQUdFX0RBWVMgfSBmcm9tIFwiLi9maWx0ZXJcIjtcbmltcG9ydCB7IERldmljZVNlY3VyaXR5VmFyaWF0aW9uLCBFeHRlbmRlZERldmljZSwgRGV2aWNlc0RpY3Rpb25hcnkgfSBmcm9tIFwiLi90eXBlc1wiO1xuXG5pbnRlcmZhY2UgUHJvcHMge1xuICAgIGRldmljZXM6IERldmljZXNEaWN0aW9uYXJ5O1xuICAgIGN1cnJlbnREZXZpY2VJZDogRXh0ZW5kZWREZXZpY2VbXCJkZXZpY2VfaWRcIl07XG4gICAgZ29Ub0ZpbHRlcmVkTGlzdDogKGZpbHRlcjogRmlsdGVyVmFyaWF0aW9uKSA9PiB2b2lkO1xufVxuXG5jb25zdCBTZWN1cml0eVJlY29tbWVuZGF0aW9uczogUmVhY3QuRkM8UHJvcHM+ID0gKHsgZGV2aWNlcywgY3VycmVudERldmljZUlkLCBnb1RvRmlsdGVyZWRMaXN0IH0pID0+IHtcbiAgICBjb25zdCBkZXZpY2VzQXJyYXkgPSBPYmplY3QudmFsdWVzPEV4dGVuZGVkRGV2aWNlPihkZXZpY2VzKTtcblxuICAgIGNvbnN0IHVudmVyaWZpZWREZXZpY2VzQ291bnQgPSBmaWx0ZXJEZXZpY2VzQnlTZWN1cml0eVJlY29tbWVuZGF0aW9uKGRldmljZXNBcnJheSwgW1xuICAgICAgICBEZXZpY2VTZWN1cml0eVZhcmlhdGlvbi5VbnZlcmlmaWVkLFxuICAgIF0pXG4gICAgICAgIC8vIGZpbHRlciBvdXQgdGhlIGN1cnJlbnQgZGV2aWNlXG4gICAgICAgIC8vIGFzIHVudmVyZmllZCB3YXJuaW5nIGFuZCBhY3Rpb25zXG4gICAgICAgIC8vIHdpbGwgYmUgc2hvd24gaW4gY3VycmVudCBzZXNzaW9uIHNlY3Rpb25cbiAgICAgICAgLmZpbHRlcigoZGV2aWNlKSA9PiBkZXZpY2UuZGV2aWNlX2lkICE9PSBjdXJyZW50RGV2aWNlSWQpLmxlbmd0aDtcbiAgICBjb25zdCBpbmFjdGl2ZURldmljZXNDb3VudCA9IGZpbHRlckRldmljZXNCeVNlY3VyaXR5UmVjb21tZW5kYXRpb24oZGV2aWNlc0FycmF5LCBbXG4gICAgICAgIERldmljZVNlY3VyaXR5VmFyaWF0aW9uLkluYWN0aXZlLFxuICAgIF0pLmxlbmd0aDtcblxuICAgIGlmICghKHVudmVyaWZpZWREZXZpY2VzQ291bnQgfCBpbmFjdGl2ZURldmljZXNDb3VudCkpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgaW5hY3RpdmVBZ2VEYXlzID0gSU5BQ1RJVkVfREVWSUNFX0FHRV9EQVlTO1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPFNldHRpbmdzU3Vic2VjdGlvblxuICAgICAgICAgICAgaGVhZGluZz17X3QoXCJzZXR0aW5nc3xzZXNzaW9uc3xzZWN1cml0eV9yZWNvbW1lbmRhdGlvbnNcIil9XG4gICAgICAgICAgICBkZXNjcmlwdGlvbj17X3QoXCJzZXR0aW5nc3xzZXNzaW9uc3xzZWN1cml0eV9yZWNvbW1lbmRhdGlvbnNfZGVzY3JpcHRpb25cIil9XG4gICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlY3VyaXR5LXJlY29tbWVuZGF0aW9ucy1zZWN0aW9uXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgeyEhdW52ZXJpZmllZERldmljZXNDb3VudCAmJiAoXG4gICAgICAgICAgICAgICAgPERldmljZVNlY3VyaXR5Q2FyZFxuICAgICAgICAgICAgICAgICAgICB2YXJpYXRpb249e0RldmljZVNlY3VyaXR5VmFyaWF0aW9uLlVudmVyaWZpZWR9XG4gICAgICAgICAgICAgICAgICAgIGhlYWRpbmc9e190KFwic2V0dGluZ3N8c2Vzc2lvbnN8dW52ZXJpZmllZF9zZXNzaW9uc1wiKX1cbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb249e1xuICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7X3QoXCJzZXR0aW5nc3xzZXNzaW9uc3x1bnZlcmlmaWVkX3Nlc3Npb25zX2xpc3RfZGVzY3JpcHRpb25cIil9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPERldmljZVNlY3VyaXR5TGVhcm5Nb3JlIHZhcmlhdGlvbj17RGV2aWNlU2VjdXJpdHlWYXJpYXRpb24uVW52ZXJpZmllZH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8QWNjZXNzaWJsZUJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAga2luZD1cImxpbmtfaW5saW5lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGdvVG9GaWx0ZXJlZExpc3QoRGV2aWNlU2VjdXJpdHlWYXJpYXRpb24uVW52ZXJpZmllZCl9XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cInVudmVyaWZpZWQtZGV2aWNlcy1jdGFcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7X3QoXCJhY3Rpb258dmlld19hbGxcIikgKyBgICgke3VudmVyaWZpZWREZXZpY2VzQ291bnR9KWB9XG4gICAgICAgICAgICAgICAgICAgIDwvQWNjZXNzaWJsZUJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8L0RldmljZVNlY3VyaXR5Q2FyZD5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICB7ISFpbmFjdGl2ZURldmljZXNDb3VudCAmJiAoXG4gICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgeyEhdW52ZXJpZmllZERldmljZXNDb3VudCAmJiA8ZGl2IGNsYXNzTmFtZT1cIm14X1NlY3VyaXR5UmVjb21tZW5kYXRpb25zX3NwYWNpbmdcIiAvPn1cbiAgICAgICAgICAgICAgICAgICAgPERldmljZVNlY3VyaXR5Q2FyZFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWF0aW9uPXtEZXZpY2VTZWN1cml0eVZhcmlhdGlvbi5JbmFjdGl2ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRpbmc9e190KFwic2V0dGluZ3N8c2Vzc2lvbnN8aW5hY3RpdmVfc2Vzc2lvbnNcIil9XG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbj17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge190KFwic2V0dGluZ3N8c2Vzc2lvbnN8aW5hY3RpdmVfc2Vzc2lvbnNfbGlzdF9kZXNjcmlwdGlvblwiLCB7IGluYWN0aXZlQWdlRGF5cyB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERldmljZVNlY3VyaXR5TGVhcm5Nb3JlIHZhcmlhdGlvbj17RGV2aWNlU2VjdXJpdHlWYXJpYXRpb24uSW5hY3RpdmV9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxBY2Nlc3NpYmxlQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZD1cImxpbmtfaW5saW5lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBnb1RvRmlsdGVyZWRMaXN0KERldmljZVNlY3VyaXR5VmFyaWF0aW9uLkluYWN0aXZlKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cImluYWN0aXZlLWRldmljZXMtY3RhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7X3QoXCJhY3Rpb258dmlld19hbGxcIikgKyBgICgke2luYWN0aXZlRGV2aWNlc0NvdW50fSlgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9BY2Nlc3NpYmxlQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L0RldmljZVNlY3VyaXR5Q2FyZD5cbiAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICl9XG4gICAgICAgIDwvU2V0dGluZ3NTdWJzZWN0aW9uPlxuICAgICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBTZWN1cml0eVJlY29tbWVuZGF0aW9ucztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQVFBLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFDLGdCQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxpQkFBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUcsbUJBQUEsR0FBQUosc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFJLG1CQUFBLEdBQUFMLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSyx3QkFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFB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