From a96940b94a7e535177b76ca49cf65622aa9ad0dd Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Wed, 13 Nov 2024 16:55:48 +0100 Subject: [PATCH] Fixed conversation subject not pre-filled when scheduling meeting --- .../ui/main/chat/fragment/ConversationInfoFragment.kt | 8 +++++--- .../main/chat/viewmodel/ConversationInfoViewModel.kt | 10 ++++++---- .../ui/main/meetings/fragment/MeetingsListFragment.kt | 7 +++++-- .../main/meetings/fragment/ScheduleMeetingFragment.kt | 3 +++ .../linphone/ui/main/viewmodel/SharedMainViewModel.kt | 4 ++-- app/src/main/res/navigation/main_nav_graph.xml | 5 +++++ 6 files changed, 26 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationInfoFragment.kt b/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationInfoFragment.kt index f25a4acf1..a4c7dff9d 100644 --- a/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationInfoFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationInfoFragment.kt @@ -169,11 +169,13 @@ class ConversationInfoFragment : SlidingPaneChildFragment() { } viewModel.goToScheduleMeetingEvent.observe(viewLifecycleOwner) { - it.consume { participants -> + it.consume { pair -> + val subject = pair.first + val participants = pair.second Log.i( - "$TAG Forward participants list of size [${participants.size}] to schedule meeting fragment" + "$TAG Forward subject [$subject] and participants list of size [${participants.size}] to schedule meeting fragment" ) - sharedViewModel.goToScheduleMeetingEvent.postValue(Event(participants)) + sharedViewModel.goToScheduleMeetingEvent.postValue(Event(pair)) sharedViewModel.navigateToMeetingsEvent.postValue(Event(true)) } } diff --git a/app/src/main/java/org/linphone/ui/main/chat/viewmodel/ConversationInfoViewModel.kt b/app/src/main/java/org/linphone/ui/main/chat/viewmodel/ConversationInfoViewModel.kt index 42d849986..d8b816dd7 100644 --- a/app/src/main/java/org/linphone/ui/main/chat/viewmodel/ConversationInfoViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/chat/viewmodel/ConversationInfoViewModel.kt @@ -92,8 +92,8 @@ class ConversationInfoViewModel @UiThread constructor() : AbstractConversationVi MutableLiveData>>() } - val goToScheduleMeetingEvent: MutableLiveData>> by lazy { - MutableLiveData>>() + val goToScheduleMeetingEvent: MutableLiveData>>> by lazy { + MutableLiveData>>>() } private val chatRoomListener = object : ChatRoomListenerStub() { @@ -269,14 +269,16 @@ class ConversationInfoViewModel @UiThread constructor() : AbstractConversationVi val participantsList = arrayListOf() for (participant in chatRoom.participants) { participantsList.add(participant.address.asStringUriOnly()) - goToScheduleMeetingEvent.postValue(Event(participantsList)) } + goToScheduleMeetingEvent.postValue( + Event(Pair(chatRoom.subject.orEmpty(), participantsList)) + ) } else { val firstParticipant = chatRoom.participants.firstOrNull() val address = firstParticipant?.address if (address != null) { val participantsList = arrayListOf(address.asStringUriOnly()) - goToScheduleMeetingEvent.postValue(Event(participantsList)) + goToScheduleMeetingEvent.postValue(Event(Pair("", participantsList))) } else { Log.e("$TAG Failed to find participant to call!") } diff --git a/app/src/main/java/org/linphone/ui/main/meetings/fragment/MeetingsListFragment.kt b/app/src/main/java/org/linphone/ui/main/meetings/fragment/MeetingsListFragment.kt index 7b95219d1..1b3c07408 100644 --- a/app/src/main/java/org/linphone/ui/main/meetings/fragment/MeetingsListFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/meetings/fragment/MeetingsListFragment.kt @@ -229,14 +229,17 @@ class MeetingsListFragment : AbstractMainFragment() { } sharedViewModel.goToScheduleMeetingEvent.observe(viewLifecycleOwner) { - it.consume { participants -> + it.consume { pair -> if (findNavController().currentDestination?.id == R.id.meetingsListFragment) { + val subject = pair.first + val participants = pair.second val participantsArray = participants.toTypedArray() Log.i( - "$TAG Going to schedule meeting fragment with pre-populated participants array of size [${participantsArray.size}]" + "$TAG Going to schedule meeting fragment with pre-populated subject [$subject] and participants array of size [${participantsArray.size}]" ) val action = MeetingsListFragmentDirections.actionMeetingsListFragmentToScheduleMeetingFragment( + subject, participantsArray ) findNavController().navigate(action) diff --git a/app/src/main/java/org/linphone/ui/main/meetings/fragment/ScheduleMeetingFragment.kt b/app/src/main/java/org/linphone/ui/main/meetings/fragment/ScheduleMeetingFragment.kt index d543510c6..db35c0643 100644 --- a/app/src/main/java/org/linphone/ui/main/meetings/fragment/ScheduleMeetingFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/meetings/fragment/ScheduleMeetingFragment.kt @@ -88,6 +88,9 @@ class ScheduleMeetingFragment : GenericMainFragment() { binding.viewModel = viewModel observeToastEvents(viewModel) + val subject = args.subject + viewModel.subject.value = subject + val participants = args.participants if (!participants.isNullOrEmpty()) { Log.i("$TAG Found pre-populated array of participants of size [${participants.size}]") diff --git a/app/src/main/java/org/linphone/ui/main/viewmodel/SharedMainViewModel.kt b/app/src/main/java/org/linphone/ui/main/viewmodel/SharedMainViewModel.kt index 75201784e..f1a3dacf3 100644 --- a/app/src/main/java/org/linphone/ui/main/viewmodel/SharedMainViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/viewmodel/SharedMainViewModel.kt @@ -171,8 +171,8 @@ class SharedMainViewModel @UiThread constructor() : ViewModel() { MutableLiveData>() } - val goToScheduleMeetingEvent: MutableLiveData>> by lazy { - MutableLiveData>>() + val goToScheduleMeetingEvent: MutableLiveData>>> by lazy { + MutableLiveData>>>() } /* Recordings related */ diff --git a/app/src/main/res/navigation/main_nav_graph.xml b/app/src/main/res/navigation/main_nav_graph.xml index 82d636ce8..5d223456c 100644 --- a/app/src/main/res/navigation/main_nav_graph.xml +++ b/app/src/main/res/navigation/main_nav_graph.xml @@ -337,6 +337,11 @@ app:exitAnim="@anim/slide_out_left" app:popEnterAnim="@anim/slide_in_left" app:popExitAnim="@anim/slide_out_right" /> +