Adds space switching functionality
This commit is contained in:
parent
4ee5b90f82
commit
89f69a1062
@ -24,6 +24,7 @@ import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.core.view.isVisible
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import com.airbnb.mvrx.activityViewModel
|
||||
import com.airbnb.mvrx.fragmentViewModel
|
||||
import com.airbnb.mvrx.withState
|
||||
@ -55,6 +56,7 @@ import im.vector.app.features.settings.VectorSettingsActivity.Companion.EXTRA_DI
|
||||
import im.vector.app.features.themes.ThemeUtils
|
||||
import im.vector.app.features.workers.signout.BannerState
|
||||
import im.vector.app.features.workers.signout.ServerBackupStatusViewModel
|
||||
import kotlinx.coroutines.launch
|
||||
import org.matrix.android.sdk.api.session.crypto.model.DeviceInfo
|
||||
import org.matrix.android.sdk.api.session.group.model.GroupSummary
|
||||
import org.matrix.android.sdk.api.session.room.model.RoomSummary
|
||||
@ -196,6 +198,17 @@ class HomeDetailFragment @Inject constructor(
|
||||
currentCallsViewPresenter.updateCall(callManager.getCurrentCall(), callManager.getCalls())
|
||||
invalidateOptionsMenu()
|
||||
}
|
||||
|
||||
observeSharedActions()
|
||||
}
|
||||
|
||||
private fun observeSharedActions() = lifecycleScope.launch {
|
||||
sharedActionViewModel.stream().collect { action ->
|
||||
when(action) {
|
||||
is HomeActivitySharedAction.OpenGroup -> toggleModalVisibility()
|
||||
else -> Unit
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun toggleModalVisibility() {
|
||||
@ -468,7 +481,8 @@ class HomeDetailFragment @Inject constructor(
|
||||
it.syncState,
|
||||
it.incrementalSyncStatus,
|
||||
it.pushCounter,
|
||||
vectorPreferences.developerShowDebugInfo())
|
||||
vectorPreferences.developerShowDebugInfo()
|
||||
)
|
||||
|
||||
hasUnreadRooms = it.hasUnreadMessages
|
||||
}
|
||||
|
@ -28,6 +28,8 @@ class SpaceListAdapter(
|
||||
private val avatarRenderer: AvatarRenderer,
|
||||
) : RecyclerView.Adapter<SpaceListAdapter.ViewHolder>() {
|
||||
|
||||
private var onItemClickListener: ((RoomSummary) -> Unit)? = null
|
||||
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
|
||||
val itemView = ItemModalSpaceBinding.inflate(LayoutInflater.from(parent.context), parent, false)
|
||||
return ViewHolder(itemView)
|
||||
@ -45,11 +47,16 @@ class SpaceListAdapter(
|
||||
notifyDataSetChanged()
|
||||
}
|
||||
|
||||
fun setOnSpaceClickListener(onClick: (space: RoomSummary) -> Unit) {
|
||||
this.onItemClickListener = onClick
|
||||
}
|
||||
|
||||
inner class ViewHolder(private val binding: ItemModalSpaceBinding) : RecyclerView.ViewHolder(binding.root) {
|
||||
|
||||
fun bind(space: RoomSummary) {
|
||||
avatarRenderer.render(space.toMatrixItem(), binding.avatar)
|
||||
binding.name.text = space.name
|
||||
binding.root.setOnClickListener { onItemClickListener?.invoke(space) }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -20,22 +20,20 @@ import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.LinearLayout
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import com.airbnb.mvrx.fragmentViewModel
|
||||
import com.airbnb.mvrx.withState
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
import im.vector.app.core.platform.VectorBaseFragment
|
||||
import im.vector.app.databinding.FragmentSpaceListModalBinding
|
||||
import im.vector.app.features.spaces.SpaceListAction
|
||||
import im.vector.app.features.spaces.SpaceListViewModel
|
||||
import im.vector.app.features.spaces.SpaceSummaryController
|
||||
import javax.inject.Inject
|
||||
|
||||
@AndroidEntryPoint
|
||||
class SpaceListModalFragment : VectorBaseFragment<FragmentSpaceListModalBinding>() {
|
||||
|
||||
@Inject
|
||||
lateinit var spaceModalController: SpaceSummaryController
|
||||
private lateinit var sharedActionViewModel: HomeSharedActionViewModel
|
||||
|
||||
@Inject
|
||||
lateinit var avatarRenderer: AvatarRenderer
|
||||
@ -51,12 +49,18 @@ class SpaceListModalFragment : VectorBaseFragment<FragmentSpaceListModalBinding>
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
sharedActionViewModel = activityViewModelProvider.get(HomeSharedActionViewModel::class.java)
|
||||
setupRecyclerView()
|
||||
}
|
||||
|
||||
private fun setupRecyclerView() {
|
||||
binding.roomList.layoutManager = LinearLayoutManager(context)
|
||||
binding.roomList.adapter = SpaceListAdapter(mutableListOf(), avatarRenderer)
|
||||
binding.roomList.adapter = SpaceListAdapter(mutableListOf(), avatarRenderer).apply {
|
||||
setOnSpaceClickListener { spaceSummary ->
|
||||
viewModel.handle(SpaceListAction.SelectSpace(spaceSummary))
|
||||
sharedActionViewModel.post(HomeActivitySharedAction.OpenGroup(false))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun invalidate() {
|
||||
|
Loading…
Reference in New Issue
Block a user