Skip to content
Snippets Groups Projects
Commit 6a9325d9 authored by Taras's avatar Taras
Browse files

Show confirmation and handle restart on Ignored users screen

parent 1cb5bbaf
No related branches found
No related tags found
No related merge requests found
......@@ -9,6 +9,9 @@ import org.futo.circles.R
import org.futo.circles.core.base.fragment.BaseFullscreenDialogFragment
import org.futo.circles.core.extensions.observeData
import org.futo.circles.core.extensions.observeResponse
import org.futo.circles.core.extensions.showSuccess
import org.futo.circles.core.extensions.showUnIgnoreConfirmationDialog
import org.futo.circles.core.utils.LauncherActivityUtils
import org.futo.circles.core.view.EmptyTabPlaceholderView
import org.futo.circles.databinding.DialogFragmentIgnoredUsersBinding
import org.futo.circles.feature.ignored.list.IgnoredUsersAdapter
......@@ -25,7 +28,11 @@ class IgnoredUsersDialogFragment :
private val usersAdapter by lazy {
IgnoredUsersAdapter(
onUnIgnore = { userId -> viewModel.unIgnoreUser(userId) }
onUnIgnore = { userId ->
showUnIgnoreConfirmationDialog {
viewModel.unIgnoreUser(userId, it)
}
}
)
}
......@@ -49,7 +56,15 @@ class IgnoredUsersDialogFragment :
viewModel.ignoredUsersLiveData.observeData(this) {
usersAdapter.submitList(it)
}
viewModel.unIgnoreUserLiveData.observeResponse(this)
viewModel.unIgnoreUserLiveData.observeResponse(this,
success = { shouldRestart ->
context?.let { showSuccess(it.getString(org.futo.circles.core.R.string.user_unignored)) }
if (shouldRestart) {
activity?.let {
LauncherActivityUtils.clearSessionAndRestart(it, it.intent)
}
}
})
}
}
......@@ -6,9 +6,9 @@ import dagger.hilt.android.lifecycle.HiltViewModel
import org.futo.circles.core.base.SingleEventLiveData
import org.futo.circles.core.extensions.Response
import org.futo.circles.core.extensions.launchBg
import org.futo.circles.core.feature.user.UserOptionsDataSource
import org.futo.circles.core.mapping.toCirclesUserSummary
import org.futo.circles.core.provider.MatrixSessionProvider
import org.futo.circles.core.feature.user.UserOptionsDataSource
import javax.inject.Inject
@HiltViewModel
......@@ -16,16 +16,18 @@ class IgnoredUsersViewModel @Inject constructor(
private val userOptionsDataSource: UserOptionsDataSource
) : ViewModel() {
val unIgnoreUserLiveData = SingleEventLiveData<Response<Unit?>>()
val unIgnoreUserLiveData = SingleEventLiveData<Response<Boolean>>()
val ignoredUsersLiveData =
MatrixSessionProvider.getSessionOrThrow().userService().getIgnoredUsersLive()
.map { it.map { it.toCirclesUserSummary() } }
fun unIgnoreUser(userId: String) {
fun unIgnoreUser(userId: String, shouldRestart: Boolean) {
launchBg {
val result = userOptionsDataSource.unIgnoreSender(userId)
unIgnoreUserLiveData.postValue(result)
when (val result = userOptionsDataSource.unIgnoreSender(userId)) {
is Response.Error -> unIgnoreUserLiveData.postValue(result)
is Response.Success -> unIgnoreUserLiveData.postValue(Response.Success(shouldRestart))
}
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment