be3778bef0
* Add key storage toggle to Encryption settings
* Keys in the acceptable order
* Fix some tests
* Fix import
* Fix toast showing condition
* Fix import order
* Fix playwright tests
* Fix bits lost in merge
* Add key storage delete confirm screen
* Fix hardcoded Element string
* Fix type imports
* Fix tests
* Tests for key storage delete panel
* Fix test
* Type import
* Test for the view model
* Fix type import
* Actually fix type imports
* Test updating
* Add playwright test & clarify slightly confusing comment
* Show the advnced section whatever the state of key storage
* Update screenshots
* Copy css to its own file
* Add missing doc & merge loading states
* Add tsdoc & loading alt text to spinner
* Turn comments into proper tsdoc
* Switch to TypedEventEmitter and remove unnecessary loading state
* Add screenshot
* Use higher level interface
* Merge the two hooks in EncryptionUserSettingsTab
* Remove unused import
* Don't check key backup enabled state separately
as we don't need it for all the screens
* Update snapshot
* Use fixed recovery key function
* Amalgamate duplicated CSS files
* Have "key storage disabled" as a separate state
* Update snapshot
* Fix... bad merge?
* Add backup enabled mock to more tests
* More snapshots
* Use defer util
* Update to use EncryptionCardButtons
* Update snapshots
* Use EncryptionCardEmphasisedContent
* Update snapshots
* Update snapshot
* Try screenshot from CI playwright
* Try playwright screenshots again
* More screenshots
* Rename to match files
* Test that 4S secrets are deleted
* Make description clearer
* Fix typo & move related states together
* Add comment
* More comments
* Fix hook docs
* restoreAllMocks
* Update snapshot
because pulling in upstream has caused IDs to shift
* Switch icon
as apparenty the error icon has changed
* Update snapshot
* Missing copyright
* Re-order states
and also sort out indenting
* Remove phantom space
* Clarify 'button'
* Clarify docs more
* Explain thinking behind updating
* Switch to getActiveBackupVersion
which checks that key backup is happining on this device, which is
consistent with EX.
* Add use of Key Storage Panel
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Change key storage panel to be consistent
ie. using getActiveBackupVersion(), and add comment
* Add tsdoc
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Use BACKUP_DISABLED_ACCOUNT_DATA_KEY in more places
* Expand doc
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Undo random yarn lock change
* Use aggregate method for disabling key storage
in https://github.com/matrix-org/matrix-js-sdk/pull/4742
* Fix tests
* Use key backup status event to update
* Comment formatting
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Fix comment & put check inside if statement
* Add comment
* Prettier
* Fix comment
* Update snapshot
Which has gained nowrap due to 917d53a56f
---------
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
80 lines
3.2 KiB
TypeScript
80 lines
3.2 KiB
TypeScript
/*
|
|
* Copyright 2025 New Vector Ltd.
|
|
*
|
|
* SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial
|
|
* Please see LICENSE files in the repository root for full details.
|
|
*/
|
|
|
|
import { Breadcrumb, Button, VisualList, VisualListItem } from "@vector-im/compound-web";
|
|
import CrossIcon from "@vector-im/compound-design-tokens/assets/web/icons/close";
|
|
import ErrorIcon from "@vector-im/compound-design-tokens/assets/web/icons/error-solid";
|
|
import React, { useCallback, useState } from "react";
|
|
|
|
import { _t } from "../../../../languageHandler";
|
|
import { EncryptionCard } from "./EncryptionCard";
|
|
import { useKeyStoragePanelViewModel } from "../../../viewmodels/settings/encryption/KeyStoragePanelViewModel";
|
|
import SdkConfig from "../../../../SdkConfig";
|
|
import { EncryptionCardButtons } from "./EncryptionCardButtons";
|
|
import { EncryptionCardEmphasisedContent } from "./EncryptionCardEmphasisedContent";
|
|
|
|
interface Props {
|
|
/**
|
|
* Called when the user either cancels the operation or key storage has been disabled
|
|
*/
|
|
onFinish: () => void;
|
|
}
|
|
|
|
/**
|
|
* Confirms that the user really wants to turn off and delete their key storage. Part of the "Encryption" settings tab.
|
|
*/
|
|
export function DeleteKeyStoragePanel({ onFinish }: Props): JSX.Element {
|
|
const { setEnabled } = useKeyStoragePanelViewModel();
|
|
const [busy, setBusy] = useState(false);
|
|
|
|
const onDeleteClick = useCallback(async () => {
|
|
setBusy(true);
|
|
try {
|
|
await setEnabled(false);
|
|
} finally {
|
|
setBusy(false);
|
|
}
|
|
onFinish();
|
|
}, [setEnabled, onFinish]);
|
|
|
|
return (
|
|
<>
|
|
<Breadcrumb
|
|
backLabel={_t("action|back")}
|
|
onBackClick={onFinish}
|
|
pages={[_t("settings|encryption|title"), _t("settings|encryption|delete_key_storage|breadcrumb_page")]}
|
|
onPageClick={onFinish}
|
|
/>
|
|
<EncryptionCard
|
|
Icon={ErrorIcon}
|
|
destructive={true}
|
|
title={_t("settings|encryption|delete_key_storage|title")}
|
|
>
|
|
<EncryptionCardEmphasisedContent>
|
|
{_t("settings|encryption|delete_key_storage|description")}
|
|
<VisualList>
|
|
<VisualListItem Icon={CrossIcon} destructive={true}>
|
|
{_t("settings|encryption|delete_key_storage|list_first")}
|
|
</VisualListItem>
|
|
<VisualListItem Icon={CrossIcon} destructive={true}>
|
|
{_t("settings|encryption|delete_key_storage|list_second", { brand: SdkConfig.get().brand })}
|
|
</VisualListItem>
|
|
</VisualList>
|
|
</EncryptionCardEmphasisedContent>
|
|
<EncryptionCardButtons>
|
|
<Button destructive={true} onClick={onDeleteClick} disabled={busy}>
|
|
{_t("settings|encryption|delete_key_storage|confirm")}
|
|
</Button>
|
|
<Button kind="tertiary" onClick={onFinish}>
|
|
{_t("action|cancel")}
|
|
</Button>
|
|
</EncryptionCardButtons>
|
|
</EncryptionCard>
|
|
</>
|
|
);
|
|
}
|