Skip to content

Commit 7705667

Browse files
committed
feat(android_sidebar): refine the code
1 parent b257551 commit 7705667

File tree

3 files changed

+79
-33
lines changed

3 files changed

+79
-33
lines changed

xpeapp_android/app/src/main/java/com/xpeho/xpeapp/data/service/WordpressRepository.kt

Lines changed: 45 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -206,30 +206,61 @@ class WordpressRepository(
206206
suspend fun updatePassword(
207207
editPassword: UserEditPassword
208208
): UpdatePasswordResult {
209+
var updatePasswordResult: UpdatePasswordResult = UpdatePasswordResult.NetworkError
210+
209211
handleServiceExceptions(
210212
tryBody = {
211213
val result = api.updatePassword(editPassword)
212-
when (result.code()) {
213-
NO_CONTENT -> return UpdatePasswordResult.Success
214-
INTERNAL_SERVER_ERROR -> result.errorBody()?.string()?.let {
215-
if (it.contains("incorrect_password")) {
216-
Log.d("WordpressRepository: updatePasswordIncorrectInitialPassword", "Incorrect initial password")
217-
return UpdatePasswordResult.IncorrectInitialPassword
218-
}
219-
if (it.contains("password_mismatch")) {
220-
Log.d("WordpressRepository: updatePasswordPasswordMismatch", "Password mismatch")
221-
return UpdatePasswordResult.PasswordMismatch
214+
updatePasswordResult = when (result.code()) {
215+
NO_CONTENT -> UpdatePasswordResult.Success
216+
INTERNAL_SERVER_ERROR -> {
217+
val errorBody = result.errorBody()?.string()
218+
when {
219+
errorBody?.contains("incorrect_password") == true -> {
220+
Log.d(
221+
"WordpressRepository: updatePasswordIncorrectInitialPassword",
222+
"Incorrect initial password"
223+
)
224+
UpdatePasswordResult.IncorrectInitialPassword
225+
}
226+
227+
errorBody?.contains("password_mismatch") == true -> {
228+
Log.d(
229+
"WordpressRepository: updatePasswordPasswordMismatch",
230+
"Password mismatch"
231+
)
232+
UpdatePasswordResult.PasswordMismatch
233+
}
234+
235+
else -> {
236+
Log.e(
237+
"WordpressRepository: updatePasswordUnknownError",
238+
"Unknown error: ${result.code()}"
239+
)
240+
UpdatePasswordResult.NetworkError
241+
}
222242
}
223243
}
244+
245+
else -> {
246+
Log.e(
247+
"WordpressRepository: updatePasswordUnknownError",
248+
"Unknown error: ${result.code()}"
249+
)
250+
UpdatePasswordResult.NetworkError
251+
}
224252
}
225-
Log.e("WordpressRepository: updatePasswordUnknownError", "Unknown error: ${result.code()}")
226-
return UpdatePasswordResult.NetworkError
227253
},
228254
catchBody = {
229-
Log.e("WordpressRepository: updatePasswordNetworkError", "Network error: ${it.message}")
230-
return UpdatePasswordResult.NetworkError
255+
Log.e(
256+
"WordpressRepository: updatePasswordNetworkError",
257+
"Network error: ${it.message}"
258+
)
259+
updatePasswordResult = UpdatePasswordResult.NetworkError
231260
}
232261
)
262+
263+
return updatePasswordResult
233264
}
234265

235266
// Exceptions handling

xpeapp_android/app/src/main/java/com/xpeho/xpeapp/ui/page/user/ProfilePage.kt

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,16 @@ fun ProfilePage(
2525
) {
2626
if (isChangingPassword) {
2727
ProfileEditPasswordView(
28-
onComplete = { isChangingPassword = false }
29-
)
28+
onComplete = {
29+
isChangingPassword = false
30+
})
3031
} else {
31-
ProfileUserInfosView(onClickToAccessPasswordEdition = { isChangingPassword = true }, navigationController = navigationController)
32+
ProfileUserInfosView(
33+
onClickToAccessPasswordEdition = {
34+
isChangingPassword = true
35+
},
36+
navigationController = navigationController
37+
)
3238
}
3339
}
3440
}

xpeapp_android/app/src/main/java/com/xpeho/xpeapp/ui/viewModel/user/UserInfosViewModel.kt

Lines changed: 25 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import com.xpeho.xpeapp.ui.uiState.PasswordUpdateUiState
1515
import com.xpeho.xpeapp.ui.uiState.UserInfosUiState
1616
import kotlinx.coroutines.launch
1717

18-
class UserInfosViewModel (
18+
class UserInfosViewModel(
1919
private val wordpressRepo: WordpressRepository,
2020
private val authManager: AuthenticationManager
2121
) : ViewModel() {
@@ -35,7 +35,8 @@ class UserInfosViewModel (
3535

3636
val result = wordpressRepo.fetchUserInfos()
3737
if (result == null) {
38-
UserInfosUiState.ERROR("Oups, il y a eu un problème dans le chargement des informations utilisateur")
38+
UserInfosUiState.ERROR("Oups, il y a eu un problème dans " +
39+
"le chargement des informations utilisateur")
3940
} else {
4041
UserInfosUiState.SUCCESS(result)
4142
}
@@ -46,22 +47,30 @@ class UserInfosViewModel (
4647
}
4748

4849
fun updatePassword(editPassword: UserEditPassword) {
49-
passwordUpdateState = PasswordUpdateUiState.LOADING
50-
viewModelScope.launch {
51-
try {
52-
val result = wordpressRepo.updatePassword(editPassword)
53-
passwordUpdateState = when (result) {
54-
is UpdatePasswordResult.Success -> PasswordUpdateUiState.SUCCESS
55-
is UpdatePasswordResult.IncorrectInitialPassword -> PasswordUpdateUiState.ERROR("Le mot de passe initial est incorrect.")
56-
is UpdatePasswordResult.PasswordMismatch -> PasswordUpdateUiState.ERROR("Les mots de passe ne correspondent pas.")
57-
else -> PasswordUpdateUiState.ERROR("La mise à jour du mot de passe a échoué.")
58-
}
59-
Log.d("UserInfosVIewmodle", "updatePassword: $passwordUpdateState")
60-
} catch (e: Exception) {
61-
passwordUpdateState = PasswordUpdateUiState.ERROR("Oups, il y a eu un problème dans la mise à jour du mot de passe")
50+
passwordUpdateState = PasswordUpdateUiState.LOADING
51+
viewModelScope.launch {
52+
try {
53+
val result = wordpressRepo.updatePassword(editPassword)
54+
passwordUpdateState = when (result) {
55+
is UpdatePasswordResult.Success -> PasswordUpdateUiState.SUCCESS
56+
is UpdatePasswordResult.IncorrectInitialPassword ->
57+
PasswordUpdateUiState.ERROR("Le mot de passe initial est incorrect.")
58+
59+
is UpdatePasswordResult.PasswordMismatch ->
60+
PasswordUpdateUiState.ERROR("Les mots de passe ne correspondent pas.")
61+
62+
else ->
63+
PasswordUpdateUiState.ERROR("La mise à jour du mot de passe a échoué.")
64+
}
65+
Log.d("UserInfosViewModel", "updatePassword: $passwordUpdateState")
66+
} catch (e: Exception) {
67+
Log.e("UserInfosViewModel", "Exception during password update", e)
68+
passwordUpdateState = PasswordUpdateUiState.ERROR(
69+
"Oups, il y a eu un problème dans la mise à jour du mot de passe"
70+
)
71+
}
6272
}
6373
}
64-
}
6574

6675

6776
fun resetPasswordUpdateState() {

0 commit comments

Comments
 (0)