Wait until detail chat room fragment is ready before opening the sliding pane
This commit is contained in:
parent
a66b638f22
commit
7f6078737c
4 changed files with 20 additions and 1 deletions
|
@ -298,7 +298,6 @@ internal fun MasterChatRoomsFragment.navigateToChatRoom(
|
|||
args,
|
||||
computeSlidingPaneNavOptions(slidingPane, popUpToFragmentId, true)
|
||||
)
|
||||
if (!slidingPane.isOpen) slidingPane.openPane()
|
||||
}
|
||||
|
||||
internal fun MasterChatRoomsFragment.navigateToChatRoomCreation(
|
||||
|
|
|
@ -33,6 +33,7 @@ import android.view.View
|
|||
import androidx.appcompat.view.menu.MenuBuilder
|
||||
import androidx.appcompat.view.menu.MenuPopupHelper
|
||||
import androidx.core.content.FileProvider
|
||||
import androidx.core.view.doOnPreDraw
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.navigation.fragment.findNavController
|
||||
|
@ -102,6 +103,11 @@ class DetailChatRoomFragment : MasterFragment<ChatRoomDetailFragmentBinding, Cha
|
|||
}
|
||||
binding.sharedMainViewModel = sharedViewModel
|
||||
|
||||
view.doOnPreDraw {
|
||||
// Notifies fragment is ready to be drawn
|
||||
sharedViewModel.chatRoomFragmentOpenedEvent.value = Event(true)
|
||||
}
|
||||
|
||||
val localSipUri = arguments?.getString("LocalSipUri")
|
||||
val remoteSipUri = arguments?.getString("RemoteSipUri")
|
||||
|
||||
|
|
|
@ -92,6 +92,16 @@ class MasterChatRoomsFragment : MasterFragment<ChatRoomMasterFragmentBinding, Ch
|
|||
|
||||
view.doOnPreDraw { sharedViewModel.canSlidingPaneBeClosed.value = binding.slidingPane.isSlideable }
|
||||
|
||||
// Chat room loading can take some time, so wait until it is ready before opening the pane
|
||||
sharedViewModel.chatRoomFragmentOpenedEvent.observe(
|
||||
viewLifecycleOwner,
|
||||
{
|
||||
it.consume {
|
||||
binding.slidingPane.openPane()
|
||||
}
|
||||
}
|
||||
)
|
||||
|
||||
sharedViewModel.closeSlidingPaneEvent.observe(
|
||||
viewLifecycleOwner,
|
||||
{
|
||||
|
|
|
@ -39,6 +39,10 @@ class SharedMainViewModel : ViewModel() {
|
|||
|
||||
/* Chat */
|
||||
|
||||
val chatRoomFragmentOpenedEvent: MutableLiveData<Event<Boolean>> by lazy {
|
||||
MutableLiveData<Event<Boolean>>()
|
||||
}
|
||||
|
||||
val selectedChatRoom = MutableLiveData<ChatRoom>()
|
||||
var destructionPendingChatRoom: ChatRoom? = null
|
||||
|
||||
|
|
Loading…
Reference in a new issue