diff --git a/js/services/auth.js b/js/services/auth.js
index 66a6e2c..ad656b9 100644
--- a/js/services/auth.js
+++ b/js/services/auth.js
@@ -149,6 +149,30 @@ class AuthService {
this.notifyListeners()
}
+ /**
+ * Clears all local data (tokens, keys, caches, preferences)
+ */
+ async clearAllData() {
+ await this.logout()
+ cryptoService.destroyKeyPair()
+
+ const keysToRemove = []
+ for (let i = 0; i < localStorage.length; i++) {
+ const key = localStorage.key(i)
+ if (key && key.startsWith('dgray_')) keysToRemove.push(key)
+ }
+ keysToRemove.forEach(k => localStorage.removeItem(k))
+
+ localStorage.removeItem('searchFilters')
+ localStorage.removeItem('locale')
+ localStorage.removeItem('theme')
+
+ for (let i = sessionStorage.length - 1; i >= 0; i--) {
+ const key = sessionStorage.key(i)
+ if (key && key.startsWith('dgray_')) sessionStorage.removeItem(key)
+ }
+ }
+
/**
* Reset preferences to defaults on logout
*/
diff --git a/js/services/crypto.js b/js/services/crypto.js
index a99fe26..82ba6fa 100644
--- a/js/services/crypto.js
+++ b/js/services/crypto.js
@@ -140,6 +140,12 @@ class CryptoService {
this.keyPair = null
}
+ destroyKeyPair() {
+ this.keyPair = null
+ localStorage.removeItem(STORAGE_KEY)
+ localStorage.removeItem(SALT_KEY)
+ }
+
getPublicKey() {
if (!this.keyPair) return null
return this.naclUtil.encodeBase64(this.keyPair.publicKey)
diff --git a/locales/de.json b/locales/de.json
index 2d076d2..0d3918f 100644
--- a/locales/de.json
+++ b/locales/de.json
@@ -278,7 +278,11 @@
"searchCleared": "Suchverlauf gelöscht",
"about": "Über",
"currency": "Währung",
- "currencyChanged": "Währung geändert"
+ "currencyChanged": "Währung geändert",
+ "deleteAllData": "Alle lokalen Daten löschen",
+ "deleteAllDataHint": "Entfernt alle gespeicherten Daten aus diesem Browser, einschließlich Verschlüsselungsschlüssel, Favoriten und Einstellungen. Chat-Verläufe können nicht wiederhergestellt werden.",
+ "deleteAll": "Alles löschen",
+ "confirmDeleteAll": "Alle lokalen Daten löschen? Verschlüsselungsschlüssel gehen verloren und Chat-Nachrichten können nicht wiederhergestellt werden."
},
"notifications": {
"title": "Benachrichtigungen",
diff --git a/locales/en.json b/locales/en.json
index 1a91a88..b773ea9 100644
--- a/locales/en.json
+++ b/locales/en.json
@@ -278,7 +278,11 @@
"searchCleared": "Search history deleted",
"about": "About",
"currency": "Currency",
- "currencyChanged": "Currency changed"
+ "currencyChanged": "Currency changed",
+ "deleteAllData": "Delete all local data",
+ "deleteAllDataHint": "Removes all saved data from this browser including encryption keys, favorites, and preferences. Chat history cannot be recovered.",
+ "deleteAll": "Delete all",
+ "confirmDeleteAll": "Delete all local data? Encryption keys will be lost and chat messages cannot be recovered."
},
"notifications": {
"title": "Notifications",
diff --git a/locales/es.json b/locales/es.json
index 861117e..865e756 100644
--- a/locales/es.json
+++ b/locales/es.json
@@ -278,7 +278,11 @@
"searchCleared": "Historial de búsqueda eliminado",
"about": "Acerca de",
"currency": "Moneda",
- "currencyChanged": "Moneda cambiada"
+ "currencyChanged": "Moneda cambiada",
+ "deleteAllData": "Eliminar todos los datos locales",
+ "deleteAllDataHint": "Elimina todos los datos guardados de este navegador, incluidas las claves de cifrado, favoritos y preferencias. El historial de chat no se puede recuperar.",
+ "deleteAll": "Eliminar todo",
+ "confirmDeleteAll": "¿Eliminar todos los datos locales? Las claves de cifrado se perderán y los mensajes no se podrán recuperar."
},
"notifications": {
"title": "Notificaciones",
diff --git a/locales/fr.json b/locales/fr.json
index c0bf23b..b99a499 100644
--- a/locales/fr.json
+++ b/locales/fr.json
@@ -278,7 +278,11 @@
"searchCleared": "Historique de recherche supprimé",
"about": "À propos",
"currency": "Devise",
- "currencyChanged": "Devise modifiée"
+ "currencyChanged": "Devise modifiée",
+ "deleteAllData": "Supprimer toutes les données locales",
+ "deleteAllDataHint": "Supprime toutes les données enregistrées de ce navigateur, y compris les clés de chiffrement, les favoris et les préférences. L'historique des conversations ne peut pas être récupéré.",
+ "deleteAll": "Tout supprimer",
+ "confirmDeleteAll": "Supprimer toutes les données locales ? Les clés de chiffrement seront perdues et les messages ne pourront pas être récupérés."
},
"notifications": {
"title": "Notifications",
diff --git a/locales/it.json b/locales/it.json
index 4bb9006..6ec4b98 100644
--- a/locales/it.json
+++ b/locales/it.json
@@ -278,7 +278,11 @@
"searchCleared": "Cronologia ricerche eliminata",
"about": "Informazioni",
"currency": "Valuta",
- "currencyChanged": "Valuta cambiata"
+ "currencyChanged": "Valuta cambiata",
+ "deleteAllData": "Elimina tutti i dati locali",
+ "deleteAllDataHint": "Rimuove tutti i dati salvati da questo browser, incluse le chiavi di crittografia, i preferiti e le impostazioni. La cronologia delle chat non può essere recuperata.",
+ "deleteAll": "Elimina tutto",
+ "confirmDeleteAll": "Eliminare tutti i dati locali? Le chiavi di crittografia andranno perse e i messaggi non potranno essere recuperati."
},
"notifications": {
"title": "Notifiche",
diff --git a/locales/pt.json b/locales/pt.json
index 6110bd0..407a1d0 100644
--- a/locales/pt.json
+++ b/locales/pt.json
@@ -278,7 +278,11 @@
"searchCleared": "Histórico de busca excluído",
"about": "Sobre",
"currency": "Moeda",
- "currencyChanged": "Moeda alterada"
+ "currencyChanged": "Moeda alterada",
+ "deleteAllData": "Excluir todos os dados locais",
+ "deleteAllDataHint": "Remove todos os dados salvos deste navegador, incluindo chaves de criptografia, favoritos e preferências. O histórico de conversas não pode ser recuperado.",
+ "deleteAll": "Excluir tudo",
+ "confirmDeleteAll": "Excluir todos os dados locais? As chaves de criptografia serão perdidas e as mensagens não poderão ser recuperadas."
},
"notifications": {
"title": "Notificações",
diff --git a/locales/ru.json b/locales/ru.json
index a80810e..2a60ea3 100644
--- a/locales/ru.json
+++ b/locales/ru.json
@@ -278,7 +278,11 @@
"searchCleared": "История поиска удалена",
"about": "О приложении",
"currency": "Валюта",
- "currencyChanged": "Валюта изменена"
+ "currencyChanged": "Валюта изменена",
+ "deleteAllData": "Удалить все локальные данные",
+ "deleteAllDataHint": "Удаляет все сохранённые данные из этого браузера, включая ключи шифрования, избранное и настройки. История чата не может быть восстановлена.",
+ "deleteAll": "Удалить всё",
+ "confirmDeleteAll": "Удалить все локальные данные? Ключи шифрования будут утеряны, а сообщения чата невозможно будет восстановить."
},
"notifications": {
"title": "Уведомления",