From ea90d5133cc800ae686058baf8a7c517676eba93 Mon Sep 17 00:00:00 2001 From: Arthur Belleville Date: Wed, 29 Apr 2026 15:48:27 +0200 Subject: [PATCH] feat(expo): add account deletion in settings danger zone Co-Authored-By: Claude Sonnet 4.6 (1M context) --- xtablo-expo/app/(app)/(tabs)/settings.tsx | 45 +++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/xtablo-expo/app/(app)/(tabs)/settings.tsx b/xtablo-expo/app/(app)/(tabs)/settings.tsx index 422194e..3e25467 100644 --- a/xtablo-expo/app/(app)/(tabs)/settings.tsx +++ b/xtablo-expo/app/(app)/(tabs)/settings.tsx @@ -12,6 +12,7 @@ import { } from "react-native"; import { LinearGradient } from "expo-linear-gradient"; import { useAuthStore } from "@/stores/auth"; +import { api } from "@/lib/api"; import { useUser } from "@/providers/UserProvider"; import { User, @@ -27,6 +28,7 @@ import { Globe, Lock, Heart, + Trash2, } from "lucide-react-native"; import { router } from "expo-router"; import { @@ -78,6 +80,34 @@ export default function SettingsScreen() { Linking.openURL("mailto:support@xtablo.com?subject=Support XTablo"); }; + const handleDeleteAccount = () => { + Alert.alert( + "Supprimer le compte", + "Cette action est irréversible. Votre compte et toutes vos données seront définitivement supprimés. Êtes-vous sûr de vouloir continuer ?", + [ + { text: "Annuler", style: "cancel" }, + { + text: "Supprimer mon compte", + style: "destructive", + onPress: async () => { + try { + const session = useAuthStore.getState().session; + await api.delete("/api/v1/users/me", { + headers: { Authorization: `Bearer ${session?.access_token}` }, + }); + await signOut(); + } catch { + Alert.alert( + "Erreur", + "Une erreur est survenue lors de la suppression de votre compte. Veuillez réessayer." + ); + } + }, + }, + ] + ); + }; + const handleRateApp = () => { // Replace with your actual app store URL Alert.alert( @@ -312,6 +342,21 @@ export default function SettingsScreen() { )} + {/* Danger Zone Section */} + {renderSettingsSection( + "Zone de danger", + <> + {renderSettingsItem( + , + "Supprimer le compte", + "Supprimer définitivement votre compte et vos données", + handleDeleteAccount, + undefined, + true + )} + + )} + {/* Sign Out Section */}