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,
|
args,
|
||||||
computeSlidingPaneNavOptions(slidingPane, popUpToFragmentId, true)
|
computeSlidingPaneNavOptions(slidingPane, popUpToFragmentId, true)
|
||||||
)
|
)
|
||||||
if (!slidingPane.isOpen) slidingPane.openPane()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
internal fun MasterChatRoomsFragment.navigateToChatRoomCreation(
|
internal fun MasterChatRoomsFragment.navigateToChatRoomCreation(
|
||||||
|
|
|
@ -33,6 +33,7 @@ import android.view.View
|
||||||
import androidx.appcompat.view.menu.MenuBuilder
|
import androidx.appcompat.view.menu.MenuBuilder
|
||||||
import androidx.appcompat.view.menu.MenuPopupHelper
|
import androidx.appcompat.view.menu.MenuPopupHelper
|
||||||
import androidx.core.content.FileProvider
|
import androidx.core.content.FileProvider
|
||||||
|
import androidx.core.view.doOnPreDraw
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import androidx.lifecycle.lifecycleScope
|
import androidx.lifecycle.lifecycleScope
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.navigation.fragment.findNavController
|
||||||
|
@ -102,6 +103,11 @@ class DetailChatRoomFragment : MasterFragment<ChatRoomDetailFragmentBinding, Cha
|
||||||
}
|
}
|
||||||
binding.sharedMainViewModel = sharedViewModel
|
binding.sharedMainViewModel = sharedViewModel
|
||||||
|
|
||||||
|
view.doOnPreDraw {
|
||||||
|
// Notifies fragment is ready to be drawn
|
||||||
|
sharedViewModel.chatRoomFragmentOpenedEvent.value = Event(true)
|
||||||
|
}
|
||||||
|
|
||||||
val localSipUri = arguments?.getString("LocalSipUri")
|
val localSipUri = arguments?.getString("LocalSipUri")
|
||||||
val remoteSipUri = arguments?.getString("RemoteSipUri")
|
val remoteSipUri = arguments?.getString("RemoteSipUri")
|
||||||
|
|
||||||
|
|
|
@ -92,6 +92,16 @@ class MasterChatRoomsFragment : MasterFragment<ChatRoomMasterFragmentBinding, Ch
|
||||||
|
|
||||||
view.doOnPreDraw { sharedViewModel.canSlidingPaneBeClosed.value = binding.slidingPane.isSlideable }
|
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(
|
sharedViewModel.closeSlidingPaneEvent.observe(
|
||||||
viewLifecycleOwner,
|
viewLifecycleOwner,
|
||||||
{
|
{
|
||||||
|
|
|
@ -39,6 +39,10 @@ class SharedMainViewModel : ViewModel() {
|
||||||
|
|
||||||
/* Chat */
|
/* Chat */
|
||||||
|
|
||||||
|
val chatRoomFragmentOpenedEvent: MutableLiveData<Event<Boolean>> by lazy {
|
||||||
|
MutableLiveData<Event<Boolean>>()
|
||||||
|
}
|
||||||
|
|
||||||
val selectedChatRoom = MutableLiveData<ChatRoom>()
|
val selectedChatRoom = MutableLiveData<ChatRoom>()
|
||||||
var destructionPendingChatRoom: ChatRoom? = null
|
var destructionPendingChatRoom: ChatRoom? = null
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue