Add delete account feature to mobile app
- DELETE /api/auth/account/ API call in AuthApi + APILayer - authProvider field on User model for email vs social auth detection - DeleteAccountDialog with password (email) or "type DELETE" (social) confirmation - Red "Delete Account" card on ProfileScreen - Navigation wired in App.kt (clears data, returns to login) - 10 i18n strings in strings.xml - ViewModel unit tests for delete account state
This commit is contained in:
@@ -58,6 +58,9 @@ class AuthViewModel : ViewModel() {
|
||||
private val _googleSignInState = MutableStateFlow<ApiResult<GoogleSignInResponse>>(ApiResult.Idle)
|
||||
val googleSignInState: StateFlow<ApiResult<GoogleSignInResponse>> = _googleSignInState
|
||||
|
||||
private val _deleteAccountState = MutableStateFlow<ApiResult<Unit>>(ApiResult.Idle)
|
||||
val deleteAccountState: StateFlow<ApiResult<Unit>> = _deleteAccountState
|
||||
|
||||
fun login(username: String, password: String) {
|
||||
viewModelScope.launch {
|
||||
_loginState.value = ApiResult.Loading
|
||||
@@ -271,4 +274,20 @@ class AuthViewModel : ViewModel() {
|
||||
APILayer.logout()
|
||||
}
|
||||
}
|
||||
|
||||
fun deleteAccount(password: String?, confirmation: String?) {
|
||||
viewModelScope.launch {
|
||||
_deleteAccountState.value = ApiResult.Loading
|
||||
val result = APILayer.deleteAccount(password = password, confirmation = confirmation)
|
||||
_deleteAccountState.value = when (result) {
|
||||
is ApiResult.Success -> ApiResult.Success(result.data)
|
||||
is ApiResult.Error -> result
|
||||
else -> ApiResult.Error("Unknown error")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun resetDeleteAccountState() {
|
||||
_deleteAccountState.value = ApiResult.Idle
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user