Skip to content

Commit a3b365e

Browse files
committed
delete user now working
1 parent b687456 commit a3b365e

File tree

1 file changed

+89
-6
lines changed

1 file changed

+89
-6
lines changed

app/src/main/java/com/example/politi_cal/screens/user_profile/UserProfileScreen.kt

Lines changed: 89 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,40 @@
11
package com.example.politi_cal.screens
22

3+
import android.widget.Toast
34
import androidx.compose.foundation.layout.*
45
import androidx.compose.foundation.lazy.LazyColumn
5-
import androidx.compose.material.ButtonDefaults
6-
import androidx.compose.material.MaterialTheme
7-
import androidx.compose.material.Text
8-
import androidx.compose.material.TextButton
9-
import androidx.compose.runtime.Composable
6+
import androidx.compose.foundation.text.KeyboardActions
7+
import androidx.compose.foundation.text.KeyboardOptions
8+
import androidx.compose.material.*
9+
import androidx.compose.runtime.*
1010
import androidx.compose.ui.Alignment
1111
import androidx.compose.ui.Modifier
1212
import androidx.compose.ui.platform.LocalContext
13+
import androidx.compose.ui.text.input.ImeAction
14+
import androidx.compose.ui.text.input.KeyboardType
15+
import androidx.compose.ui.text.input.PasswordVisualTransformation
16+
import androidx.compose.ui.text.input.VisualTransformation
1317
import androidx.compose.ui.unit.dp
1418
import androidx.navigation.NavController
1519
import com.example.politi_cal.DBObjects.UserVoteDBObj
1620
import com.example.politi_cal.Screen
1721
import com.example.politi_cal.isAdminState
1822
import com.example.politi_cal.models.User
23+
import com.example.politi_cal.userCollectionRef
24+
import com.google.firebase.auth.EmailAuthProvider
1925
import com.google.firebase.auth.FirebaseAuth
26+
import com.google.firebase.auth.ktx.auth
27+
import com.google.firebase.ktx.Firebase
2028

2129
@Composable
2230
fun UserProfileScreen(
2331
navController: NavController, auth: FirebaseAuth, user: User
2432
) {
33+
var password by remember { mutableStateOf("") }
34+
var isPasswordVisiable by remember {
35+
mutableStateOf(false)
36+
}
37+
2538
LazyColumn(content = {
2639

2740
item {
@@ -78,7 +91,12 @@ fun UserProfileScreen(
7891
onClick = {
7992
var DBobj = UserVoteDBObj(context)
8093
DBobj.deleteAllVotesByUserID(user.email.toString())
81-
navController.navigate(Screen.SwipeScreen.route)
94+
// toast all votes deleted
95+
Toast.makeText(
96+
context,
97+
"All votes deleted",
98+
Toast.LENGTH_SHORT
99+
).show()
82100

83101

84102
},
@@ -93,6 +111,71 @@ fun UserProfileScreen(
93111
) {
94112
Text(text = "Delete My Votes")
95113
}
114+
OutlinedTextField(
115+
value = password,
116+
onValueChange = {
117+
password = it
118+
},
119+
label = { Text(text = "Enter Password") },
120+
modifier = Modifier
121+
.fillMaxWidth()
122+
.padding(8.dp),
123+
singleLine = true,
124+
keyboardOptions = KeyboardOptions(
125+
keyboardType = KeyboardType.Password, imeAction = ImeAction.Done
126+
),
127+
visualTransformation = if (isPasswordVisiable) VisualTransformation.None else PasswordVisualTransformation()
128+
)
129+
// delete user button and write on him "delete user " and navigate to login screen
130+
TextButton(
131+
onClick = {
132+
val userToDeleteNow = Firebase.auth.currentUser!!
133+
// get email user
134+
val credential = EmailAuthProvider
135+
.getCredential(userToDeleteNow.email.toString(), password)
136+
userToDeleteNow.reauthenticate(credential)
137+
.addOnCompleteListener {
138+
if (it.isSuccessful) {
139+
var DBobj = UserVoteDBObj(context)
140+
DBobj.deleteAllVotesByUserID(user.email.toString())
141+
userCollectionRef.document(userToDeleteNow.email.toString())
142+
.delete()
143+
.addOnSuccessListener {
144+
userToDeleteNow.delete()
145+
.addOnSuccessListener {
146+
navController.navigate(Screen.LoginScreen.route)
147+
}
148+
.addOnFailureListener {
149+
// An error happened.
150+
}
151+
}
152+
.addOnFailureListener {
153+
// An error happened.
154+
}
155+
156+
157+
158+
userToDeleteNow.delete()
159+
.addOnCompleteListener { task ->
160+
if (task.isSuccessful) {
161+
navController.navigate(Screen.LoginScreen.route)
162+
}
163+
}
164+
}
165+
}
166+
167+
},
168+
modifier = Modifier
169+
.fillMaxWidth()
170+
.padding(8.dp),
171+
colors = ButtonDefaults.buttonColors(
172+
backgroundColor = MaterialTheme.colors.primary
173+
)) {
174+
Text(text = "Delete User")
175+
}
176+
177+
178+
96179
}
97180
}
98181
}

0 commit comments

Comments
 (0)