Simplify ViewState
This commit is contained in:
parent
1468edd2f9
commit
1b95cd537b
@ -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)) }
|
||||
}
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user