From 5672edc715c7396fe0241400e0f8359ff05f522a Mon Sep 17 00:00:00 2001 From: "emre.kartal" Date: Thu, 3 Aug 2023 15:15:18 +0200 Subject: [PATCH] Add function for delete User --- .../justMUSIC/lib/services/AuthService.dart | 24 +++++++++++++++++++ .../justMUSIC/lib/services/UserService.dart | 2 +- .../lib/view_model/UserViewModel.dart | 4 ++++ 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/Sources/justMUSIC/lib/services/AuthService.dart b/Sources/justMUSIC/lib/services/AuthService.dart index 39ba6c2..6e77d10 100644 --- a/Sources/justMUSIC/lib/services/AuthService.dart +++ b/Sources/justMUSIC/lib/services/AuthService.dart @@ -88,4 +88,28 @@ class AuthService { void signOut() async { await FirebaseAuth.instance.signOut(); } + + Future delete() async { + try { + User? currentUser = FirebaseAuth.instance.currentUser; + await MyApp.db + .collection("users") + .doc(currentUser?.uid) + .delete() + .then((value) => print("Firestore deleted user")) + .catchError( + (error) => print("Error deleting user from Firestore: $error")); + + await currentUser?.delete(); + await FirebaseAuth.instance.signOut(); + + } on FirebaseAuthException catch (e) { + if (e.code == 'requires-recent-login') { + throw ('Please log in again to delete your account'); + } + rethrow; + } catch (error) { + rethrow; + } + } } diff --git a/Sources/justMUSIC/lib/services/UserService.dart b/Sources/justMUSIC/lib/services/UserService.dart index b299f3d..acd3f72 100644 --- a/Sources/justMUSIC/lib/services/UserService.dart +++ b/Sources/justMUSIC/lib/services/UserService.dart @@ -1,4 +1,4 @@ -import 'package:cloud_firestore/cloud_firestore.dart'; + import 'package:cloud_firestore/cloud_firestore.dart'; import '../main.dart'; diff --git a/Sources/justMUSIC/lib/view_model/UserViewModel.dart b/Sources/justMUSIC/lib/view_model/UserViewModel.dart index b3cf791..178b522 100644 --- a/Sources/justMUSIC/lib/view_model/UserViewModel.dart +++ b/Sources/justMUSIC/lib/view_model/UserViewModel.dart @@ -112,6 +112,10 @@ class UserViewModel { authService.signOut(); } + delete() { + authService.delete(); + } + bool isFriend(String id) { return _userCurrent.followed.contains(id); }