Simplify ViewState

This commit is contained in:
Benoit Marty 2022-04-14 15:11:46 +02:00
parent 1468edd2f9
commit 1b95cd537b
3 changed files with 4 additions and 28 deletions

View File

@ -16,10 +16,7 @@
package im.vector.app.features.settings.ignored
import com.airbnb.mvrx.Fail
import com.airbnb.mvrx.Loading
import com.airbnb.mvrx.MavericksViewModelFactory
import com.airbnb.mvrx.Success
import dagger.assisted.Assisted
import dagger.assisted.AssistedFactory
import dagger.assisted.AssistedInject
@ -63,19 +60,10 @@ class IgnoredUsersViewModel @AssistedInject constructor(
}
private fun handleUnIgnore(action: IgnoredUsersAction.UnIgnore) {
setState {
copy(
unIgnoreRequest = Loading()
)
}
setState { copy(isLoading = true) }
viewModelScope.launch {
val result = runCatching { session.unIgnoreUserIds(listOf(action.userId)) }
setState {
copy(
unIgnoreRequest = result.fold(::Success, ::Fail)
)
}
setState { copy(isLoading = false) }
result.onFailure { _viewEvents.post(IgnoredUsersViewEvents.Failure(it)) }
}
}

View File

@ -16,12 +16,10 @@
package im.vector.app.features.settings.ignored
import com.airbnb.mvrx.Async
import com.airbnb.mvrx.MavericksState
import com.airbnb.mvrx.Uninitialized
import org.matrix.android.sdk.api.session.user.model.User
data class IgnoredUsersViewState(
val ignoredUsers: List<User> = emptyList(),
val unIgnoreRequest: Async<Unit> = Uninitialized
val isLoading: Boolean = false
) : MavericksState

View File

@ -22,8 +22,6 @@ import android.view.View
import android.view.ViewGroup
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.isVisible
import com.airbnb.mvrx.Async
import com.airbnb.mvrx.Loading
import com.airbnb.mvrx.fragmentViewModel
import com.airbnb.mvrx.withState
import com.google.android.material.dialog.MaterialAlertDialogBuilder
@ -95,14 +93,6 @@ class VectorSettingsIgnoredUsersFragment @Inject constructor(
override fun invalidate() = withState(viewModel) { state ->
ignoredUsersController.update(state)
handleUnIgnoreRequestStatus(state.unIgnoreRequest)
}
private fun handleUnIgnoreRequestStatus(unIgnoreRequest: Async<Unit>) {
views.waitingView.root.isVisible = when (unIgnoreRequest) {
is Loading -> true
else -> false
}
views.waitingView.root.isVisible = state.isLoading
}
}