Skip to content

Commit 5e983d0

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

File tree

7 files changed

+93
-40
lines changed

7 files changed

+93
-40
lines changed

xpeapp_android/app/src/main/java/com/xpeho/xpeapp/data/entity/user/UserEditPassword.kt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@ import com.google.gson.annotations.SerializedName
44

55
data class UserEditPassword(
66
@SerializedName("initial_password") val initialPassword: String,
7-
@SerializedName("password") val password: String,
8-
@SerializedName("password_repeat") val passwordRepeat: String,
9-
10-
7+
val password: String,
8+
@SerializedName("password_repeat")val passwordRepeat: String,
119
)

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/components/layout/SidebarItemProfile.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import androidx.compose.runtime.Composable
66
import androidx.compose.ui.Modifier
77
import androidx.compose.ui.graphics.Color
88
import androidx.compose.ui.res.painterResource
9+
import androidx.compose.ui.res.stringResource
910
import androidx.compose.ui.unit.dp
1011
import androidx.compose.ui.unit.sp
1112
import androidx.navigation.NavController
@@ -15,6 +16,7 @@ import com.xpeho.xpeapp.ui.uiState.UserInfosUiState
1516
import com.xpeho.xpeapp.ui.viewModel.user.UserInfosViewModel
1617
import com.xpeho.xpeho_ui_android.foundations.Fonts
1718
import androidx.lifecycle.viewmodel.compose.viewModel
19+
import com.xpeho.xpeapp.R
1820
import com.xpeho.xpeapp.XpeApp
1921
import com.xpeho.xpeapp.ui.viewModel.viewModelFactory
2022

@@ -80,7 +82,7 @@ fun SidebarItemProfile(
8082
}
8183
else -> {
8284
Text(
83-
text = "Loading...",
85+
text = stringResource(id = R.string.profil_page_modify_password_loading_message),
8486
fontSize = 16.sp,
8587
fontFamily = Fonts.raleway,
8688
color = Color.Gray,

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

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@ import androidx.compose.ui.semantics.semantics
77
import androidx.compose.ui.semantics.contentDescription
88
import androidx.compose.ui.unit.dp
99
import androidx.compose.runtime.Composable
10+
import androidx.compose.ui.res.stringResource
1011
import androidx.navigation.NavController
12+
import com.xpeho.xpeapp.R
1113

1214
@Composable
1315
fun ProfilePage(
@@ -19,16 +21,24 @@ fun ProfilePage(
1921
modifier = Modifier
2022
.padding(16.dp)
2123
.semantics {
22-
contentDescription = if (isChangingPassword) "ChangePasswordView" else "ProfileView"
24+
contentDescription = if (isChangingPassword)
25+
stringResource(id = R.string.profil_page_modify_password_content_description_edit_password)
26+
else stringResource(id = R.string.profil_page_modify_password_content_description_profile)
2327
},
2428
verticalArrangement = Arrangement.spacedBy(16.dp)
2529
) {
2630
if (isChangingPassword) {
2731
ProfileEditPasswordView(
28-
onComplete = { isChangingPassword = false }
29-
)
32+
onComplete = {
33+
isChangingPassword = false
34+
})
3035
} else {
31-
ProfileUserInfosView(onClickToAccessPasswordEdition = { isChangingPassword = true }, navigationController = navigationController)
36+
ProfileUserInfosView(
37+
onClickToAccessPasswordEdition = {
38+
isChangingPassword = true
39+
},
40+
navigationController = navigationController
41+
)
3242
}
3343
}
3444
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ fun ProfileUserInfosView(
8989
}
9090
else -> {
9191
Text(
92-
text = "Loading...",
92+
text = stringResource(id = R.string.profil_page_modify_password_loading_message),
9393
fontSize = 16.sp,
9494
fontFamily = Fonts.raleway,
9595
color = Color.Gray,

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() {

xpeapp_android/app/src/main/res/values/strings.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,4 +56,7 @@
5656
<string name="profil_page_modify_password_confirm">Nouveau mot de passe</string>
5757
<string name="profil_page_modify_password_success">Mot de passe modifié avec succès</string>
5858
<string name="profil_page_modify_password_error">Erreur de mot de passe</string>
59+
<string name="profil_page_modify_password_loading_message">Chargement des données…</string>
60+
<string name="profil_page_modify_password_content_description_edit_password">ModificationDuMotDePassePage</string>
61+
<string name="profil_page_modify_password_content_description_profile">PageDeProfile</string>
5962
</resources>

0 commit comments

Comments
 (0)