diff --git a/messages/de.json b/messages/de.json index d427993a1..0fe8a7223 100644 --- a/messages/de.json +++ b/messages/de.json @@ -6928,10 +6928,12 @@ "deleteAccountCardDescription": "Löscht dein Konto inklusive Passkeys, Audit-Log und Sessions.", "deleteAccountCta": "Konto löschen", "deleteAccountConfirmTitle": "Konto endgültig löschen?", + "deleteAccountConfirmTitleGrace": "Konto löschen?", "deleteAccountConfirmDescription": "Dein Konto, alle Gesundheitsdaten, Passkeys, Sessions und Audit-Einträge werden unwiderruflich gelöscht. Du wirst danach automatisch abgemeldet. Kopien in den Sicherungen dieses Servers verfallen nach ihrer Aufbewahrungsfrist.", "deleteAccountSuccess": "Konto wurde gelöscht. Du wirst abgemeldet.", "deleteAccountFailed": "Konto konnte nicht gelöscht werden", "deleteAccountFinal": "Endgültig löschen", + "deleteAccountFinalGrace": "Konto löschen", "saved": "Gespeichert", "savingError": "Fehler beim Speichern", "about": { diff --git a/messages/en.json b/messages/en.json index dc3211fde..3f99d31fe 100644 --- a/messages/en.json +++ b/messages/en.json @@ -6928,10 +6928,12 @@ "deleteAccountCardDescription": "Deletes your account along with passkeys, audit log, and sessions.", "deleteAccountCta": "Delete account", "deleteAccountConfirmTitle": "Delete account permanently?", + "deleteAccountConfirmTitleGrace": "Delete your account?", "deleteAccountConfirmDescription": "Your account, all health data, passkeys, sessions, and audit entries will be permanently deleted. You will be signed out immediately after. Copies in this server's backups age out after their retention period.", "deleteAccountSuccess": "Account deleted. Signing you out.", "deleteAccountFailed": "Account could not be deleted", "deleteAccountFinal": "Delete permanently", + "deleteAccountFinalGrace": "Delete account", "saved": "Saved", "savingError": "Error saving", "about": { diff --git a/messages/es.json b/messages/es.json index cc3f3a967..4677c684f 100644 --- a/messages/es.json +++ b/messages/es.json @@ -6928,10 +6928,12 @@ "deleteAccountCardDescription": "Elimina tu cuenta junto con las claves de acceso, el registro de auditoría y las sesiones.", "deleteAccountCta": "Eliminar cuenta", "deleteAccountConfirmTitle": "¿Eliminar la cuenta de forma permanente?", + "deleteAccountConfirmTitleGrace": "¿Eliminar tu cuenta?", "deleteAccountConfirmDescription": "Tu cuenta, todos los datos de salud, las claves de acceso, las sesiones y las entradas de auditoría se eliminarán de forma permanente. Se cerrará tu sesión inmediatamente después. Las copias en las copias de seguridad de este servidor caducan al terminar su periodo de conservación.", "deleteAccountSuccess": "Cuenta eliminada. Cerrando tu sesión.", "deleteAccountFailed": "No se pudo eliminar la cuenta", "deleteAccountFinal": "Eliminar permanentemente", + "deleteAccountFinalGrace": "Eliminar cuenta", "saved": "Guardado", "savingError": "Error al guardar", "about": { diff --git a/messages/fr.json b/messages/fr.json index 8b8570663..76a13377a 100644 --- a/messages/fr.json +++ b/messages/fr.json @@ -6928,10 +6928,12 @@ "deleteAccountCardDescription": "Supprime votre compte ainsi que les clés d’accès, le journal d’audit et les sessions.", "deleteAccountCta": "Supprimer le compte", "deleteAccountConfirmTitle": "Supprimer définitivement le compte ?", + "deleteAccountConfirmTitleGrace": "Supprimer votre compte ?", "deleteAccountConfirmDescription": "Votre compte, toutes vos données de santé, vos clés d’accès, vos sessions et vos entrées d’audit seront définitivement supprimés. Vous serez déconnecté immédiatement après. Les copies dans les sauvegardes de ce serveur expirent à la fin de leur durée de conservation.", "deleteAccountSuccess": "Compte supprimé, déconnexion en cours.", "deleteAccountFailed": "Le compte n’a pas pu être supprimé", "deleteAccountFinal": "Supprimer définitivement", + "deleteAccountFinalGrace": "Supprimer le compte", "saved": "Enregistré", "savingError": "Erreur lors de l’enregistrement", "about": { diff --git a/messages/it.json b/messages/it.json index d67975b98..0585ad838 100644 --- a/messages/it.json +++ b/messages/it.json @@ -6928,10 +6928,12 @@ "deleteAccountCardDescription": "Elimina il tuo account insieme a passkey, registro di controllo e sessioni.", "deleteAccountCta": "Elimina account", "deleteAccountConfirmTitle": "Eliminare definitivamente l’account?", + "deleteAccountConfirmTitleGrace": "Eliminare il tuo account?", "deleteAccountConfirmDescription": "Il tuo account, tutti i dati sanitari, le passkey, le sessioni e le voci di audit verranno eliminati definitivamente. Verrai disconnesso subito dopo. Le copie nei backup di questo server scadono al termine del loro periodo di conservazione.", "deleteAccountSuccess": "Account eliminato, disconnessione in corso.", "deleteAccountFailed": "Impossibile eliminare l’account", "deleteAccountFinal": "Elimina definitivamente", + "deleteAccountFinalGrace": "Elimina account", "saved": "Salvato", "savingError": "Errore durante il salvataggio", "about": { diff --git a/messages/ko.json b/messages/ko.json index 498717494..2a2b86dd3 100644 --- a/messages/ko.json +++ b/messages/ko.json @@ -6928,10 +6928,12 @@ "deleteAccountCardDescription": "패스키, 감사 로그, 세션까지 함께 계정을 삭제해요.", "deleteAccountCta": "계정 삭제", "deleteAccountConfirmTitle": "계정을 영구히 삭제할까요?", + "deleteAccountConfirmTitleGrace": "계정을 삭제할까요?", "deleteAccountConfirmDescription": "계정과 모든 건강 데이터, 패스키, 세션, 감사 기록이 영구히 삭제돼요. 삭제 직후 로그아웃돼요. 이 서버 백업에 남은 사본은 보관 기간이 지나면 사라져요.", "deleteAccountSuccess": "계정을 삭제했어요. 로그아웃할게요.", "deleteAccountFailed": "계정을 삭제하지 못했어요", "deleteAccountFinal": "영구 삭제", + "deleteAccountFinalGrace": "계정 삭제", "saved": "저장됨", "savingError": "저장 중 오류", "about": { diff --git a/messages/nl.json b/messages/nl.json index 631128ed4..e93adec7c 100644 --- a/messages/nl.json +++ b/messages/nl.json @@ -6928,10 +6928,12 @@ "deleteAccountCardDescription": "Verwijdert je account samen met passkeys, auditlogboek en sessies.", "deleteAccountCta": "Account verwijderen", "deleteAccountConfirmTitle": "Account definitief verwijderen?", + "deleteAccountConfirmTitleGrace": "Je account verwijderen?", "deleteAccountConfirmDescription": "Je account, alle gezondheidsgegevens, passkeys, sessies en auditregistraties worden definitief verwijderd. Je wordt daarna direct uitgelogd. Kopieën in de back-ups van deze server verlopen na hun bewaartermijn.", "deleteAccountSuccess": "Account verwijderd. Je wordt uitgelogd.", "deleteAccountFailed": "Account kon niet worden verwijderd", "deleteAccountFinal": "Definitief verwijderen", + "deleteAccountFinalGrace": "Account verwijderen", "saved": "Opgeslagen", "savingError": "Fout bij opslaan", "about": { diff --git a/messages/pl.json b/messages/pl.json index 6a1e65ca1..2055df78e 100644 --- a/messages/pl.json +++ b/messages/pl.json @@ -6928,10 +6928,12 @@ "deleteAccountCardDescription": "Usuwa Twoje konto wraz z kluczami dostępu, dziennikiem audytu i sesjami.", "deleteAccountCta": "Usuń konto", "deleteAccountConfirmTitle": "Trwale usunąć konto?", + "deleteAccountConfirmTitleGrace": "Usunąć konto?", "deleteAccountConfirmDescription": "Twoje konto, wszystkie dane zdrowotne, klucze dostępu, sesje i wpisy audytu zostaną trwale usunięte. Zostaniesz wylogowany natychmiast po tym. Kopie w kopiach zapasowych tego serwera wygasają po upływie okresu przechowywania.", "deleteAccountSuccess": "Konto usunięte, trwa wylogowywanie.", "deleteAccountFailed": "Nie udało się usunąć konta", "deleteAccountFinal": "Usuń trwale", + "deleteAccountFinalGrace": "Usuń konto", "saved": "Zapisano", "savingError": "Błąd podczas zapisywania", "about": { diff --git a/messages/pt-BR.json b/messages/pt-BR.json index ab9de7e40..ae8919d20 100644 --- a/messages/pt-BR.json +++ b/messages/pt-BR.json @@ -6928,10 +6928,12 @@ "deleteAccountCardDescription": "Exclui sua conta junto com chaves de acesso, log de auditoria e sessões.", "deleteAccountCta": "Excluir conta", "deleteAccountConfirmTitle": "Excluir conta permanentemente?", + "deleteAccountConfirmTitleGrace": "Excluir sua conta?", "deleteAccountConfirmDescription": "Sua conta, todos os dados de saúde, chaves de acesso, sessões e registros de auditoria serão excluídos permanentemente. Você será desconectado imediatamente depois. As cópias nos backups deste servidor expiram depois do período de retenção.", "deleteAccountSuccess": "Conta excluída. Desconectando você.", "deleteAccountFailed": "Não foi possível excluir a conta", "deleteAccountFinal": "Excluir permanentemente", + "deleteAccountFinalGrace": "Excluir conta", "saved": "Salvo", "savingError": "Erro ao salvar", "about": { diff --git a/src/components/settings/advanced-section.tsx b/src/components/settings/advanced-section.tsx index 9b7c9e632..151b7e0df 100644 --- a/src/components/settings/advanced-section.tsx +++ b/src/components/settings/advanced-section.tsx @@ -267,9 +267,14 @@ function AccountDeleteCard() { // deleted the row); give the toast a beat to paint, then bounce to the // login page. Leave `deleting` set so the confirm button keeps its // pending state through the redirect: only an admin can undo it now. - setTimeout(() => { - loadDocument("/auth/login"); - }, 1_500); + // With a grace window the message names the erase date, so it stays + // long enough to read. + setTimeout( + () => { + loadDocument("/auth/login"); + }, + typeof scheduledPurgeAt === "string" ? 5_000 : 1_500, + ); } catch (err) { setDeleting(false); const message = recentProofErrorMessage( @@ -330,7 +335,11 @@ function AccountDeleteCard() { if (deleting) return; setConfirmOpen(open); }} - title={t("settings.deleteAccountConfirmTitle")} + title={ + graceDays > 0 + ? t("settings.deleteAccountConfirmTitleGrace") + : t("settings.deleteAccountConfirmTitle") + } body={ graceDays > 0 ? t("settings.deleteAccountConfirmDescriptionGrace", { @@ -338,7 +347,11 @@ function AccountDeleteCard() { }) : t("settings.deleteAccountConfirmDescription") } - confirmLabel={t("settings.deleteAccountFinal")} + confirmLabel={ + graceDays > 0 + ? t("settings.deleteAccountFinalGrace") + : t("settings.deleteAccountFinal") + } onConfirm={() => void handleDeleteAccount()} pending={deleting} slot="settings-account-delete"