Fix issue on setting avatar on a room.

We deleted the just added avatar because `withState {}` is asynchronous
This commit is contained in:
Benoit Marty 2020-11-05 16:09:04 +01:00
parent 5c7a5fab94
commit de39a17247
2 changed files with 16 additions and 14 deletions

View File

@ -8,7 +8,7 @@ Improvements 🙌:
-
Bugfix 🐛:
-
- Fix issue when updating the avatar of a room
Translations 🗣:
-

View File

@ -153,20 +153,20 @@ class RoomSettingsViewModel @AssistedInject constructor(@Assisted initialState:
}
private fun handleSetAvatarAction(action: RoomSettingsAction.SetAvatarAction) {
deletePendingAvatar()
setState { copy(avatarAction = action.avatarAction) }
}
private fun deletePendingAvatar() {
// Maybe delete the pending avatar
withState {
(it.avatarAction as? RoomSettingsViewState.AvatarAction.UpdateAvatar)
?.let { tryOrNull { it.newAvatarUri.toFile().delete() } }
setState {
deletePendingAvatar(this)
copy(avatarAction = action.avatarAction)
}
}
private fun deletePendingAvatar(state: RoomSettingsViewState) {
// Maybe delete the pending avatar
(state.avatarAction as? RoomSettingsViewState.AvatarAction.UpdateAvatar)
?.let { tryOrNull { it.newAvatarUri.toFile().delete() } }
}
private fun cancel() {
deletePendingAvatar()
withState { deletePendingAvatar(it) }
_viewEvents.post(RoomSettingsViewEvents.GoBack)
}
@ -180,7 +180,7 @@ class RoomSettingsViewModel @AssistedInject constructor(@Assisted initialState:
when (val avatarAction = state.avatarAction) {
RoomSettingsViewState.AvatarAction.None -> Unit
RoomSettingsViewState.AvatarAction.DeleteAvatar -> {
RoomSettingsViewState.AvatarAction.DeleteAvatar -> {
operationList.add(room.rx().deleteAvatar())
}
is RoomSettingsViewState.AvatarAction.UpdateAvatar -> {
@ -209,8 +209,10 @@ class RoomSettingsViewModel @AssistedInject constructor(@Assisted initialState:
.subscribe(
{
postLoading(false)
setState { copy(newHistoryVisibility = null) }
deletePendingAvatar()
setState {
deletePendingAvatar(this)
copy(newHistoryVisibility = null)
}
_viewEvents.post(RoomSettingsViewEvents.Success)
},
{