Wait until detail chat room fragment is ready before opening the sliding pane

This commit is contained in:
Sylvain Berfini 2021-09-06 11:59:44 +02:00
parent a66b638f22
commit 7f6078737c
4 changed files with 20 additions and 1 deletions

View file

@ -298,7 +298,6 @@ internal fun MasterChatRoomsFragment.navigateToChatRoom(
args,
computeSlidingPaneNavOptions(slidingPane, popUpToFragmentId, true)
)
if (!slidingPane.isOpen) slidingPane.openPane()
}
internal fun MasterChatRoomsFragment.navigateToChatRoomCreation(

View file

@ -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")

View file

@ -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,
{

View file

@ -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