diff --git a/app/src/main/java/be/ugent/sel/studeez/StudeezApp.kt b/app/src/main/java/be/ugent/sel/studeez/StudeezApp.kt
index 29f0761..3f1e371 100644
--- a/app/src/main/java/be/ugent/sel/studeez/StudeezApp.kt
+++ b/app/src/main/java/be/ugent/sel/studeez/StudeezApp.kt
@@ -118,6 +118,6 @@ fun NavGraphBuilder.studeezGraph(appState: StudeezAppstate) {
// Edit screens
composable(StudeezDestinations.EDIT_PROFILE_SCREEN) {
- EditProfileScreen(goBack)
+ EditProfileScreen(goBack, openAndPopUp)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/be/ugent/sel/studeez/common/composable/TextFieldComposable.kt b/app/src/main/java/be/ugent/sel/studeez/common/composable/TextFieldComposable.kt
index 93c0463..2c0b450 100644
--- a/app/src/main/java/be/ugent/sel/studeez/common/composable/TextFieldComposable.kt
+++ b/app/src/main/java/be/ugent/sel/studeez/common/composable/TextFieldComposable.kt
@@ -1,7 +1,6 @@
package be.ugent.sel.studeez.common.composable
import androidx.annotation.StringRes
-import androidx.compose.foundation.text.KeyboardActions
import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.material.Icon
import androidx.compose.material.IconButton
@@ -12,17 +11,15 @@ import androidx.compose.material.icons.filled.Email
import androidx.compose.material.icons.filled.Lock
import androidx.compose.material.icons.filled.Person
import androidx.compose.runtime.*
-import be.ugent.sel.studeez.R.string as AppText
-import be.ugent.sel.studeez.R.drawable as AppIcon
import androidx.compose.ui.Modifier
-import androidx.compose.ui.input.key.Key
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
-import androidx.compose.ui.text.input.ImeAction
import androidx.compose.ui.text.input.KeyboardType
import androidx.compose.ui.text.input.PasswordVisualTransformation
import androidx.compose.ui.text.input.VisualTransformation
import be.ugent.sel.studeez.common.ext.fieldModifier
+import be.ugent.sel.studeez.R.drawable as AppIcon
+import be.ugent.sel.studeez.R.string as AppText
@Composable
fun BasicField(
diff --git a/app/src/main/java/be/ugent/sel/studeez/domain/AccountDAO.kt b/app/src/main/java/be/ugent/sel/studeez/domain/AccountDAO.kt
index 96ecb74..c813ec6 100644
--- a/app/src/main/java/be/ugent/sel/studeez/domain/AccountDAO.kt
+++ b/app/src/main/java/be/ugent/sel/studeez/domain/AccountDAO.kt
@@ -29,5 +29,6 @@ interface AccountDAO {
suspend fun sendRecoveryEmail(email: String)
suspend fun signUpWithEmailAndPassword(email: String, password: String)
suspend fun deleteAccount()
+
suspend fun signOut()
}
diff --git a/app/src/main/java/be/ugent/sel/studeez/domain/UserDAO.kt b/app/src/main/java/be/ugent/sel/studeez/domain/UserDAO.kt
index 8b6f357..b96cf17 100644
--- a/app/src/main/java/be/ugent/sel/studeez/domain/UserDAO.kt
+++ b/app/src/main/java/be/ugent/sel/studeez/domain/UserDAO.kt
@@ -4,4 +4,10 @@ interface UserDAO {
suspend fun getUsername(): String?
suspend fun save(newUsername: String)
+
+ /**
+ * Delete all references to this user in the database. Similar to the deleteCascade in
+ * relational databases.
+ */
+ suspend fun deleteUserReferences()
}
\ No newline at end of file
diff --git a/app/src/main/java/be/ugent/sel/studeez/domain/implementation/FirebaseUserDAO.kt b/app/src/main/java/be/ugent/sel/studeez/domain/implementation/FirebaseUserDAO.kt
index 8ac779b..3158b88 100644
--- a/app/src/main/java/be/ugent/sel/studeez/domain/implementation/FirebaseUserDAO.kt
+++ b/app/src/main/java/be/ugent/sel/studeez/domain/implementation/FirebaseUserDAO.kt
@@ -1,19 +1,13 @@
package be.ugent.sel.studeez.domain.implementation
-import androidx.compose.runtime.rememberCoroutineScope
+import be.ugent.sel.studeez.R
+import be.ugent.sel.studeez.common.snackbar.SnackbarManager
import be.ugent.sel.studeez.domain.AccountDAO
import be.ugent.sel.studeez.domain.UserDAO
import com.google.firebase.firestore.DocumentReference
import com.google.firebase.firestore.FirebaseFirestore
-import kotlinx.coroutines.CoroutineScope
-import kotlinx.coroutines.channels.awaitClose
-import kotlinx.coroutines.coroutineScope
-import kotlinx.coroutines.flow.Flow
-import kotlinx.coroutines.flow.callbackFlow
-import kotlinx.coroutines.flow.flow
import kotlinx.coroutines.tasks.await
import javax.inject.Inject
-import kotlin.coroutines.coroutineContext
class FirebaseUserDAO @Inject constructor(
private val firestore: FirebaseFirestore,
@@ -34,4 +28,10 @@ class FirebaseUserDAO @Inject constructor(
companion object {
private const val USER_COLLECTION = "users"
}
+
+ override suspend fun deleteUserReferences() {
+ currentUserDocument().delete()
+ .addOnSuccessListener { SnackbarManager.showMessage(R.string.success) }
+ .addOnFailureListener { SnackbarManager.showMessage(R.string.generic_error) }
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/be/ugent/sel/studeez/screens/profile/ProfileEditScreen.kt b/app/src/main/java/be/ugent/sel/studeez/screens/profile/ProfileEditScreen.kt
index 38fa4cf..eb12ac7 100644
--- a/app/src/main/java/be/ugent/sel/studeez/screens/profile/ProfileEditScreen.kt
+++ b/app/src/main/java/be/ugent/sel/studeez/screens/profile/ProfileEditScreen.kt
@@ -17,6 +17,7 @@ import be.ugent.sel.studeez.ui.theme.StudeezTheme
@Composable
fun EditProfileScreen(
goBack: () -> Unit,
+ openAndPopUp: (String, String) -> Unit,
viewModel: ProfileEditViewModel = hiltViewModel()
) {
val uiState by viewModel.uiState
@@ -36,7 +37,7 @@ fun EditProfileScreen(
viewModel.onSaveClick()
}
BasicTextButton(text = R.string.delete_profile, Modifier.textButton()) {
- viewModel.onDeleteClick()
+ viewModel.onDeleteClick(openAndPopUp)
}
}
}
@@ -47,7 +48,8 @@ fun EditProfileScreen(
fun EditProfileScreenComposable() {
StudeezTheme {
EditProfileScreen (
- {}
+ {},
+ {_, _ -> {}}
)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/be/ugent/sel/studeez/screens/profile/ProfileEditViewModel.kt b/app/src/main/java/be/ugent/sel/studeez/screens/profile/ProfileEditViewModel.kt
index 6a31516..cb270be 100644
--- a/app/src/main/java/be/ugent/sel/studeez/screens/profile/ProfileEditViewModel.kt
+++ b/app/src/main/java/be/ugent/sel/studeez/screens/profile/ProfileEditViewModel.kt
@@ -6,6 +6,7 @@ import be.ugent.sel.studeez.common.snackbar.SnackbarManager
import be.ugent.sel.studeez.domain.AccountDAO
import be.ugent.sel.studeez.domain.LogService
import be.ugent.sel.studeez.domain.UserDAO
+import be.ugent.sel.studeez.navigation.StudeezDestinations
import be.ugent.sel.studeez.screens.StudeezViewModel
import dagger.hilt.android.lifecycle.HiltViewModel
import javax.inject.Inject
@@ -33,13 +34,15 @@ class ProfileEditViewModel @Inject constructor(
fun onSaveClick() {
launchCatching {
userDAO.save(uiState.value.username)
- SnackbarManager.showMessage(R.string.save_success)
+ SnackbarManager.showMessage(R.string.success)
}
}
- fun onDeleteClick() {
+ fun onDeleteClick(openAndPopUp: (String, String) -> Unit) {
launchCatching {
- accountDAO.deleteAccount()
+ userDAO.deleteUserReferences() // Delete references
+ accountDAO.deleteAccount() // Delete authentication
}
+ openAndPopUp(StudeezDestinations.SIGN_UP_SCREEN, StudeezDestinations.EDIT_PROFILE_SCREEN)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/be/ugent/sel/studeez/screens/sign_up/SignUpViewModel.kt b/app/src/main/java/be/ugent/sel/studeez/screens/sign_up/SignUpViewModel.kt
index dacb7db..91dde13 100644
--- a/app/src/main/java/be/ugent/sel/studeez/screens/sign_up/SignUpViewModel.kt
+++ b/app/src/main/java/be/ugent/sel/studeez/screens/sign_up/SignUpViewModel.kt
@@ -13,11 +13,8 @@ import be.ugent.sel.studeez.navigation.StudeezDestinations.LOGIN_SCREEN
import be.ugent.sel.studeez.navigation.StudeezDestinations.SIGN_UP_SCREEN
import be.ugent.sel.studeez.screens.StudeezViewModel
import dagger.hilt.android.lifecycle.HiltViewModel
-import kotlinx.coroutines.flow.FlowCollector
-import kotlinx.coroutines.flow.first
-import kotlinx.coroutines.flow.take
-import be.ugent.sel.studeez.R.string as AppText
import javax.inject.Inject
+import be.ugent.sel.studeez.R.string as AppText
@HiltViewModel
class SignUpViewModel @Inject constructor(
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 41083e7..0f3f21b 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -5,16 +5,17 @@
Email
Password
Repeat password
- Go back
Menu
Confirm
Save
Cancel
+ Go back
+ Next
- Saved successfully!
+ Success!
Try again
Something wrong happened. Please try again.
Please insert a valid email.