Fix regression when closing the screen to create a DM from the toolbar. Rework this part a bit.
This commit is contained in:
parent
aae6e20f9c
commit
944b447d93
@ -49,6 +49,7 @@ class CallTransferPagerAdapter(
|
|||||||
fragment.arguments = UserListFragmentArgs(
|
fragment.arguments = UserListFragmentArgs(
|
||||||
title = "",
|
title = "",
|
||||||
menuResId = -1,
|
menuResId = -1,
|
||||||
|
submitMenuItemId = -1,
|
||||||
singleSelection = true,
|
singleSelection = true,
|
||||||
showInviteActions = false,
|
showInviteActions = false,
|
||||||
showToolbar = false,
|
showToolbar = false,
|
||||||
|
@ -81,7 +81,7 @@ class CreateDirectRoomActivity : SimpleFragmentActivity() {
|
|||||||
when (action) {
|
when (action) {
|
||||||
UserListSharedAction.Close -> finish()
|
UserListSharedAction.Close -> finish()
|
||||||
UserListSharedAction.GoBack -> onBackPressed()
|
UserListSharedAction.GoBack -> onBackPressed()
|
||||||
is UserListSharedAction.OnMenuItemSelected -> onMenuItemSelected(action)
|
is UserListSharedAction.OnMenuItemSubmitClick -> handleOnMenuItemSubmitClick(action)
|
||||||
UserListSharedAction.OpenPhoneBook -> openPhoneBook()
|
UserListSharedAction.OpenPhoneBook -> openPhoneBook()
|
||||||
UserListSharedAction.AddByQrCode -> openAddByQrCode()
|
UserListSharedAction.AddByQrCode -> openAddByQrCode()
|
||||||
}
|
}
|
||||||
@ -93,7 +93,8 @@ class CreateDirectRoomActivity : SimpleFragmentActivity() {
|
|||||||
UserListFragment::class.java,
|
UserListFragment::class.java,
|
||||||
UserListFragmentArgs(
|
UserListFragmentArgs(
|
||||||
title = getString(R.string.fab_menu_create_chat),
|
title = getString(R.string.fab_menu_create_chat),
|
||||||
menuResId = R.menu.vector_create_direct_room
|
menuResId = R.menu.vector_create_direct_room,
|
||||||
|
submitMenuItemId = R.id.action_create_direct_room,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@ -159,10 +160,8 @@ class CreateDirectRoomActivity : SimpleFragmentActivity() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun onMenuItemSelected(action: UserListSharedAction.OnMenuItemSelected) {
|
private fun handleOnMenuItemSubmitClick(action: UserListSharedAction.OnMenuItemSubmitClick) {
|
||||||
if (action.itemId == R.id.action_create_direct_room) {
|
viewModel.handle(CreateDirectRoomAction.CreateRoomAndInviteSelectedUsers(action.selections))
|
||||||
viewModel.handle(CreateDirectRoomAction.CreateRoomAndInviteSelectedUsers(action.selections))
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun renderCreateAndInviteState(state: Async<String>) {
|
private fun renderCreateAndInviteState(state: Async<String>) {
|
||||||
|
@ -71,7 +71,7 @@ class InviteUsersToRoomActivity : SimpleFragmentActivity() {
|
|||||||
when (sharedAction) {
|
when (sharedAction) {
|
||||||
UserListSharedAction.Close -> finish()
|
UserListSharedAction.Close -> finish()
|
||||||
UserListSharedAction.GoBack -> onBackPressed()
|
UserListSharedAction.GoBack -> onBackPressed()
|
||||||
is UserListSharedAction.OnMenuItemSelected -> onMenuItemSelected(sharedAction)
|
is UserListSharedAction.OnMenuItemSubmitClick -> handleOnMenuItemSubmitClick(sharedAction)
|
||||||
UserListSharedAction.OpenPhoneBook -> openPhoneBook()
|
UserListSharedAction.OpenPhoneBook -> openPhoneBook()
|
||||||
// not exhaustive because it's a sharedAction
|
// not exhaustive because it's a sharedAction
|
||||||
else -> Unit
|
else -> Unit
|
||||||
@ -85,6 +85,7 @@ class InviteUsersToRoomActivity : SimpleFragmentActivity() {
|
|||||||
UserListFragmentArgs(
|
UserListFragmentArgs(
|
||||||
title = getString(R.string.invite_users_to_room_title),
|
title = getString(R.string.invite_users_to_room_title),
|
||||||
menuResId = R.menu.vector_invite_users_to_room,
|
menuResId = R.menu.vector_invite_users_to_room,
|
||||||
|
submitMenuItemId = R.id.action_invite_users_to_room_invite,
|
||||||
excludedUserIds = viewModel.getUserIdsOfRoomMembers(),
|
excludedUserIds = viewModel.getUserIdsOfRoomMembers(),
|
||||||
showInviteActions = false
|
showInviteActions = false
|
||||||
)
|
)
|
||||||
@ -94,10 +95,8 @@ class InviteUsersToRoomActivity : SimpleFragmentActivity() {
|
|||||||
viewModel.observeViewEvents { renderInviteEvents(it) }
|
viewModel.observeViewEvents { renderInviteEvents(it) }
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun onMenuItemSelected(action: UserListSharedAction.OnMenuItemSelected) {
|
private fun handleOnMenuItemSubmitClick(action: UserListSharedAction.OnMenuItemSubmitClick) {
|
||||||
if (action.itemId == R.id.action_invite_users_to_room_invite) {
|
viewModel.handle(InviteUsersToRoomAction.InviteSelectedUsers(action.selections))
|
||||||
viewModel.handle(InviteUsersToRoomAction.InviteSelectedUsers(action.selections))
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun openPhoneBook() {
|
private fun openPhoneBook() {
|
||||||
|
@ -23,7 +23,6 @@ import android.view.MenuItem
|
|||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import android.widget.ScrollView
|
import android.widget.ScrollView
|
||||||
import androidx.core.view.forEach
|
|
||||||
import androidx.core.view.isVisible
|
import androidx.core.view.isVisible
|
||||||
import androidx.lifecycle.lifecycleScope
|
import androidx.lifecycle.lifecycleScope
|
||||||
import com.airbnb.mvrx.activityViewModel
|
import com.airbnb.mvrx.activityViewModel
|
||||||
@ -114,19 +113,23 @@ class UserListFragment @Inject constructor(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun handlePrepareMenu(menu: Menu) {
|
override fun handlePrepareMenu(menu: Menu) {
|
||||||
|
if (args.submitMenuItemId == -1) return
|
||||||
withState(viewModel) {
|
withState(viewModel) {
|
||||||
val showMenuItem = it.pendingSelections.isNotEmpty()
|
val showMenuItem = it.pendingSelections.isNotEmpty()
|
||||||
menu.forEach { menuItem ->
|
menu.findItem(args.submitMenuItemId).isVisible = showMenuItem
|
||||||
menuItem.isVisible = showMenuItem
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun handleMenuItemSelected(item: MenuItem): Boolean {
|
override fun handleMenuItemSelected(item: MenuItem): Boolean {
|
||||||
withState(viewModel) {
|
return when (item.itemId) {
|
||||||
sharedActionViewModel.post(UserListSharedAction.OnMenuItemSelected(item.itemId, it.pendingSelections))
|
args.submitMenuItemId -> {
|
||||||
|
withState(viewModel) {
|
||||||
|
sharedActionViewModel.post(UserListSharedAction.OnMenuItemSubmitClick(it.pendingSelections))
|
||||||
|
}
|
||||||
|
true
|
||||||
|
}
|
||||||
|
else -> false
|
||||||
}
|
}
|
||||||
return true
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun setupRecyclerView() {
|
private fun setupRecyclerView() {
|
||||||
|
@ -23,6 +23,7 @@ import kotlinx.parcelize.Parcelize
|
|||||||
data class UserListFragmentArgs(
|
data class UserListFragmentArgs(
|
||||||
val title: String,
|
val title: String,
|
||||||
val menuResId: Int,
|
val menuResId: Int,
|
||||||
|
val submitMenuItemId: Int,
|
||||||
val excludedUserIds: Set<String>? = null,
|
val excludedUserIds: Set<String>? = null,
|
||||||
val singleSelection: Boolean = false,
|
val singleSelection: Boolean = false,
|
||||||
val showInviteActions: Boolean = true,
|
val showInviteActions: Boolean = true,
|
||||||
|
@ -21,7 +21,7 @@ import im.vector.app.core.platform.VectorSharedAction
|
|||||||
sealed class UserListSharedAction : VectorSharedAction {
|
sealed class UserListSharedAction : VectorSharedAction {
|
||||||
object Close : UserListSharedAction()
|
object Close : UserListSharedAction()
|
||||||
object GoBack : UserListSharedAction()
|
object GoBack : UserListSharedAction()
|
||||||
data class OnMenuItemSelected(val itemId: Int, val selections: Set<PendingSelection>) : UserListSharedAction()
|
data class OnMenuItemSubmitClick(val selections: Set<PendingSelection>) : UserListSharedAction()
|
||||||
object OpenPhoneBook : UserListSharedAction()
|
object OpenPhoneBook : UserListSharedAction()
|
||||||
object AddByQrCode : UserListSharedAction()
|
object AddByQrCode : UserListSharedAction()
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user