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 ...@@ -9,6 +9,9 @@ import org.futo.circles.R
import org.futo.circles.core.base.fragment.BaseFullscreenDialogFragment import org.futo.circles.core.base.fragment.BaseFullscreenDialogFragment
import org.futo.circles.core.extensions.observeData import org.futo.circles.core.extensions.observeData
import org.futo.circles.core.extensions.observeResponse 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.core.view.EmptyTabPlaceholderView
import org.futo.circles.databinding.DialogFragmentIgnoredUsersBinding import org.futo.circles.databinding.DialogFragmentIgnoredUsersBinding
import org.futo.circles.feature.ignored.list.IgnoredUsersAdapter import org.futo.circles.feature.ignored.list.IgnoredUsersAdapter
...@@ -25,7 +28,11 @@ class IgnoredUsersDialogFragment : ...@@ -25,7 +28,11 @@ class IgnoredUsersDialogFragment :
private val usersAdapter by lazy { private val usersAdapter by lazy {
IgnoredUsersAdapter( IgnoredUsersAdapter(
onUnIgnore = { userId -> viewModel.unIgnoreUser(userId) } onUnIgnore = { userId ->
showUnIgnoreConfirmationDialog {
viewModel.unIgnoreUser(userId, it)
}
}
) )
} }
...@@ -49,7 +56,15 @@ class IgnoredUsersDialogFragment : ...@@ -49,7 +56,15 @@ class IgnoredUsersDialogFragment :
viewModel.ignoredUsersLiveData.observeData(this) { viewModel.ignoredUsersLiveData.observeData(this) {
usersAdapter.submitList(it) 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 ...@@ -6,9 +6,9 @@ import dagger.hilt.android.lifecycle.HiltViewModel
import org.futo.circles.core.base.SingleEventLiveData import org.futo.circles.core.base.SingleEventLiveData
import org.futo.circles.core.extensions.Response import org.futo.circles.core.extensions.Response
import org.futo.circles.core.extensions.launchBg 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.mapping.toCirclesUserSummary
import org.futo.circles.core.provider.MatrixSessionProvider import org.futo.circles.core.provider.MatrixSessionProvider
import org.futo.circles.core.feature.user.UserOptionsDataSource
import javax.inject.Inject import javax.inject.Inject
@HiltViewModel @HiltViewModel
...@@ -16,16 +16,18 @@ class IgnoredUsersViewModel @Inject constructor( ...@@ -16,16 +16,18 @@ class IgnoredUsersViewModel @Inject constructor(
private val userOptionsDataSource: UserOptionsDataSource private val userOptionsDataSource: UserOptionsDataSource
) : ViewModel() { ) : ViewModel() {
val unIgnoreUserLiveData = SingleEventLiveData<Response<Unit?>>() val unIgnoreUserLiveData = SingleEventLiveData<Response<Boolean>>()
val ignoredUsersLiveData = val ignoredUsersLiveData =
MatrixSessionProvider.getSessionOrThrow().userService().getIgnoredUsersLive() MatrixSessionProvider.getSessionOrThrow().userService().getIgnoredUsersLive()
.map { it.map { it.toCirclesUserSummary() } } .map { it.map { it.toCirclesUserSummary() } }
fun unIgnoreUser(userId: String) { fun unIgnoreUser(userId: String, shouldRestart: Boolean) {
launchBg { launchBg {
val result = userOptionsDataSource.unIgnoreSender(userId) when (val result = userOptionsDataSource.unIgnoreSender(userId)) {
unIgnoreUserLiveData.postValue(result) 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