From 3239a075fbaed1e2ee53886076ccb2474abcc9b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20Schw=C3=B6rer?= Date: Sun, 13 Apr 2025 16:32:59 +0200 Subject: [PATCH] Implement user-deletion --- flutter/lib/api/api_client.dart | 10 ++++++++++ flutter/lib/pages/account/account.dart | 17 ++++++++++++++++- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/flutter/lib/api/api_client.dart b/flutter/lib/api/api_client.dart index a2e0d58..cc474a9 100644 --- a/flutter/lib/api/api_client.dart +++ b/flutter/lib/api/api_client.dart @@ -179,6 +179,16 @@ class APIClient { ); } + static Future deleteUser(TokenSource auth, String uid) async { + return await _request( + name: 'deleteUser', + method: 'DELETE', + relURL: 'users/$uid', + fn: User.fromJson, + authToken: auth.getToken(), + ); + } + static Future addClient(TokenSource auth, String fcmToken, String agentModel, String agentVersion, String? name, String clientType) async { return await _request( name: 'addClient', diff --git a/flutter/lib/pages/account/account.dart b/flutter/lib/pages/account/account.dart index 4f23ee0..7e9def0 100644 --- a/flutter/lib/pages/account/account.dart +++ b/flutter/lib/pages/account/account.dart @@ -503,7 +503,22 @@ class _AccountRootPageState extends State { } void _deleteAccount() async { - // TODO + final acc = AppAuth(); + if (!acc.isAuth()) return; + + try { + await APIClient.deleteUser(acc, acc.userID!); + + Toaster.info('Logout', 'Successfully logged out'); + + acc.clear(); + await acc.save(); + + //TODO clear messages/channels/etc in open views + } catch (exc, trace) { + Toaster.error("Error", 'Failed to delete user'); + ApplicationLog.error('Failed to delete user: ' + exc.toString(), trace: trace); + } } void _changeUsername() async {