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 🐛: Bugfix 🐛:
- - Fix issue when updating the avatar of a room
Translations 🗣: Translations 🗣:
- -

View File

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