Add retry support on Room Alias screen

This commit is contained in:
Benoit Marty 2021-07-06 11:05:11 +02:00 committed by Benoit Marty
parent 5b149c8a34
commit ca9f5161d1
5 changed files with 22 additions and 1 deletions

1
changelog.d/3635.feature Normal file
View File

@ -0,0 +1 @@
Add retry support in room addresses screen

View File

@ -36,4 +36,7 @@ sealed class RoomAliasAction : VectorViewModelAction {
object ToggleAddLocalAliasForm : RoomAliasAction() object ToggleAddLocalAliasForm : RoomAliasAction()
data class SetNewLocalAliasLocalPart(val aliasLocalPart: String) : RoomAliasAction() data class SetNewLocalAliasLocalPart(val aliasLocalPart: String) : RoomAliasAction()
object AddLocalAlias : RoomAliasAction() object AddLocalAlias : RoomAliasAction()
// Retry to fetch data in error
object Retry : RoomAliasAction()
} }

View File

@ -57,6 +57,7 @@ class RoomAliasController @Inject constructor(
fun setNewLocalAliasLocalPart(aliasLocalPart: String) fun setNewLocalAliasLocalPart(aliasLocalPart: String)
fun addLocalAlias() fun addLocalAlias()
fun openAliasDetail(alias: String) fun openAliasDetail(alias: String)
fun retry()
} }
var callback: Callback? = null var callback: Callback? = null
@ -102,6 +103,7 @@ class RoomAliasController @Inject constructor(
id("rd_error") id("rd_error")
text(host.stringProvider.getString(R.string.room_alias_publish_to_directory_error, text(host.stringProvider.getString(R.string.room_alias_publish_to_directory_error,
host.errorFormatter.toHumanReadable(data.roomDirectoryVisibility.error))) host.errorFormatter.toHumanReadable(data.roomDirectoryVisibility.error)))
listener { host.callback?.retry() }
} }
} }
} }
@ -224,6 +226,7 @@ class RoomAliasController @Inject constructor(
errorWithRetryItem { errorWithRetryItem {
id("alt_error") id("alt_error")
text(host.errorFormatter.toHumanReadable(localAliases.error)) text(host.errorFormatter.toHumanReadable(localAliases.error))
listener { host.callback?.retry() }
} }
} }
} }

View File

@ -181,6 +181,10 @@ class RoomAliasFragment @Inject constructor(
.show(childFragmentManager, "ROOM_ALIAS_ACTIONS") .show(childFragmentManager, "ROOM_ALIAS_ACTIONS")
} }
override fun retry() {
viewModel.handle(RoomAliasAction.Retry)
}
private fun removeLocalAlias(alias: String) { private fun removeLocalAlias(alias: String) {
MaterialAlertDialogBuilder(requireContext(), R.style.ThemeOverlay_Vector_MaterialAlertDialog_Destructive) MaterialAlertDialogBuilder(requireContext(), R.style.ThemeOverlay_Vector_MaterialAlertDialog_Destructive)
.setTitle(R.string.dialog_title_confirmation) .setTitle(R.string.dialog_title_confirmation)

View File

@ -25,8 +25,8 @@ import com.airbnb.mvrx.Success
import com.airbnb.mvrx.Uninitialized import com.airbnb.mvrx.Uninitialized
import com.airbnb.mvrx.ViewModelContext import com.airbnb.mvrx.ViewModelContext
import dagger.assisted.Assisted import dagger.assisted.Assisted
import dagger.assisted.AssistedInject
import dagger.assisted.AssistedFactory import dagger.assisted.AssistedFactory
import dagger.assisted.AssistedInject
import im.vector.app.core.extensions.exhaustive import im.vector.app.core.extensions.exhaustive
import im.vector.app.core.platform.VectorViewModel import im.vector.app.core.platform.VectorViewModel
import im.vector.app.features.powerlevel.PowerLevelsObservableFactory import im.vector.app.features.powerlevel.PowerLevelsObservableFactory
@ -198,9 +198,19 @@ class RoomAliasViewModel @AssistedInject constructor(@Assisted initialState: Roo
RoomAliasAction.AddLocalAlias -> handleAddLocalAlias() RoomAliasAction.AddLocalAlias -> handleAddLocalAlias()
is RoomAliasAction.RemoveLocalAlias -> handleRemoveLocalAlias(action) is RoomAliasAction.RemoveLocalAlias -> handleRemoveLocalAlias(action)
is RoomAliasAction.PublishAlias -> handlePublishAlias(action) is RoomAliasAction.PublishAlias -> handlePublishAlias(action)
RoomAliasAction.Retry -> handleRetry()
}.exhaustive }.exhaustive
} }
private fun handleRetry() = withState { state ->
if (state.localAliases is Fail) {
fetchRoomAlias()
}
if (state.roomDirectoryVisibility is Fail) {
fetchRoomDirectoryVisibility()
}
}
private fun handleSetRoomDirectoryVisibility(action: RoomAliasAction.SetRoomDirectoryVisibility) { private fun handleSetRoomDirectoryVisibility(action: RoomAliasAction.SetRoomDirectoryVisibility) {
postLoading(true) postLoading(true)
viewModelScope.launch { viewModelScope.launch {