/* 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. */ import React from "react"; import { _t } from "../../../../languageHandler"; import AccessibleButton from "../../elements/AccessibleButton"; import SettingsSubsection from "../shared/SettingsSubsection"; import DeviceSecurityCard from "./DeviceSecurityCard"; import { DeviceSecurityLearnMore } from "./DeviceSecurityLearnMore"; import { filterDevicesBySecurityRecommendation, FilterVariation, INACTIVE_DEVICE_AGE_DAYS } from "./filter"; import { DeviceSecurityVariation, ExtendedDevice, DevicesDictionary } from "./types"; interface Props { devices: DevicesDictionary; currentDeviceId: ExtendedDevice["device_id"]; goToFilteredList: (filter: FilterVariation) => void; } const SecurityRecommendations: React.FC = ({ devices, currentDeviceId, goToFilteredList }) => { const devicesArray = Object.values(devices); const unverifiedDevicesCount = filterDevicesBySecurityRecommendation(devicesArray, [ 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 = filterDevicesBySecurityRecommendation(devicesArray, [ DeviceSecurityVariation.Inactive, ]).length; if (!(unverifiedDevicesCount | inactiveDevicesCount)) { return null; } const inactiveAgeDays = INACTIVE_DEVICE_AGE_DAYS; return ( {!!unverifiedDevicesCount && ( {_t("settings|sessions|unverified_sessions_list_description")} } > goToFilteredList(DeviceSecurityVariation.Unverified)} data-testid="unverified-devices-cta" > {_t("action|view_all") + ` (${unverifiedDevicesCount})`} )} {!!inactiveDevicesCount && ( <> {!!unverifiedDevicesCount &&
} {_t("settings|sessions|inactive_sessions_list_description", { inactiveAgeDays })} } > goToFilteredList(DeviceSecurityVariation.Inactive)} data-testid="inactive-devices-cta" > {_t("action|view_all") + ` (${inactiveDevicesCount})`} )} ); }; export default SecurityRecommendations;