import {ReactElement, useContext} from "react" import {useLoaderData, useParams} from "react-router-dom" import {AxiosError} from "axios" import {useTranslation} from "react-i18next" import {useQuery} from "@tanstack/react-query" import {Grid} from "@mui/material" import {deleteAlias, getAlias} from "~/apis" import {Alias, DecryptedAlias, ServerSettings} from "~/server-types" import { AliasTypeIndicator, AuthContext, DecryptionPasswordMissingAlert, DeleteButton, EncryptionStatus, QueryResult, SimplePage, SimplePageBuilder, } from "~/components" import AliasAddress from "~/route-widgets/AliasDetailRoute/AliasAddress" import AliasNotesForm from "~/route-widgets/AliasDetailRoute/AliasNotesForm" import AliasPreferencesForm from "~/route-widgets/AliasDetailRoute/AliasPreferencesForm" import ChangeAliasActivationStatusSwitch from "~/route-widgets/AliasDetailRoute/ChangeAliasActivationStatusSwitch" import decryptAliasNotes from "~/apis/helpers/decrypt-alias-notes" export default function AliasDetailRoute(): ReactElement { const {t} = useTranslation() const serverSettings = useLoaderData() as ServerSettings const {id: aliasID} = useParams() const {_decryptUsingMasterPassword, encryptionStatus} = useContext(AuthContext) const queryKey = ["get_alias", aliasID, encryptionStatus] const query = useQuery(queryKey, async () => { const alias = await getAlias(aliasID!) if (encryptionStatus === EncryptionStatus.Available) { ;(alias as any as DecryptedAlias).notes = decryptAliasNotes( alias.encryptedNotes, _decryptUsingMasterPassword, ) } return alias }) return ( deleteAlias(aliasID!)} label={t("routes.AliasDetailRoute.actions.delete.label")} description={t("routes.AliasDetailRoute.actions.delete.description")} continueLabel={t("routes.AliasDetailRoute.actions.delete.continueAction")} navigateTo={"/aliases"} successMessage={t("relations.alias.mutations.success.aliasDeleted")} /> ) } > query={query}> {alias => ( {[ ,
{encryptionStatus === EncryptionStatus.Available ? ( ) : ( )}
, , ]}
)}
) }