From 654e790a6df30bf874d2f4c04bb205b438a3a5e1 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Mon, 16 Jun 2025 13:39:43 +0200 Subject: [PATCH] Also handle text waiting to be shared in newly added top bar --- .../java/org/linphone/ui/main/MainActivity.kt | 14 ++++++-- .../fragment/ConversationsListFragment.kt | 10 ------ .../ui/main/viewmodel/MainViewModel.kt | 35 ++++++++++--------- app/src/main/res/layout/main_activity.xml | 6 ++-- ...main_activity_pending_sharing_top_bar.xml} | 8 ++--- app/src/main/res/values-fr/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + 7 files changed, 38 insertions(+), 37 deletions(-) rename app/src/main/res/layout/{main_activity_pending_file_sharing_top_bar.xml => main_activity_pending_sharing_top_bar.xml} (87%) diff --git a/app/src/main/java/org/linphone/ui/main/MainActivity.kt b/app/src/main/java/org/linphone/ui/main/MainActivity.kt index 98a393bd2..bfc169be1 100644 --- a/app/src/main/java/org/linphone/ui/main/MainActivity.kt +++ b/app/src/main/java/org/linphone/ui/main/MainActivity.kt @@ -46,7 +46,6 @@ import androidx.core.view.updatePadding import androidx.databinding.DataBindingUtil import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope -import androidx.lifecycle.observe import androidx.navigation.NavController import androidx.navigation.NavDestination import androidx.navigation.NavOptions @@ -250,9 +249,10 @@ class MainActivity : GenericActivity() { } } - viewModel.clearFilesPendingSharingEvent.observe(this) { + viewModel.clearFilesOrTextPendingSharingEvent.observe(this) { it.consume { sharedViewModel.filesToShareFromIntent.value = arrayListOf() + sharedViewModel.textToShareFromIntent.value = "" } } @@ -260,7 +260,15 @@ class MainActivity : GenericActivity() { if (list.isNotEmpty()) { viewModel.addFilesPendingSharing(list) } else { - viewModel.filesPendingSharingListCleared() + viewModel.filesOrTextPendingSharingListCleared() + } + } + + sharedViewModel.textToShareFromIntent.observe(this) { text -> + if (!text.isEmpty()) { + viewModel.addTextPendingSharing() + } else { + viewModel.filesOrTextPendingSharingListCleared() } } diff --git a/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationsListFragment.kt b/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationsListFragment.kt index 1151d128b..de13d06d1 100644 --- a/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationsListFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationsListFragment.kt @@ -36,7 +36,6 @@ import com.google.android.material.bottomsheet.BottomSheetDialogFragment import org.linphone.R import org.linphone.core.tools.Log import org.linphone.databinding.ChatListFragmentBinding -import org.linphone.ui.GenericActivity import org.linphone.ui.fileviewer.FileViewerActivity import org.linphone.ui.fileviewer.MediaViewerActivity import org.linphone.ui.main.MainActivity.Companion.ARGUMENTS_CONVERSATION_ID @@ -250,15 +249,6 @@ class ConversationsListFragment : AbstractMainFragment() { } } - sharedViewModel.textToShareFromIntent.observe(viewLifecycleOwner) { textToShare -> - if (textToShare.isNotEmpty()) { - val message = getString(R.string.conversations_text_waiting_to_be_shared_toast) - val icon = R.drawable.file_text - (requireActivity() as GenericActivity).showGreenToast(message, icon) - Log.i("$TAG Found text waiting to be shared") - } - } - sharedViewModel.updateConversationLastMessageEvent.observe(viewLifecycleOwner) { it.consume { conversationId -> val model = listViewModel.conversations.value.orEmpty().find { diff --git a/app/src/main/java/org/linphone/ui/main/viewmodel/MainViewModel.kt b/app/src/main/java/org/linphone/ui/main/viewmodel/MainViewModel.kt index 26266e87b..7135bd58f 100644 --- a/app/src/main/java/org/linphone/ui/main/viewmodel/MainViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/viewmodel/MainViewModel.kt @@ -78,11 +78,9 @@ class MainViewModel val callsStatus = MutableLiveData() - val pendingFileSharing = MutableLiveData() + val pendingFilesOrTextSharing = MutableLiveData() - val filesCountPendingSharing = MutableLiveData() - - val filesPendingSharingLabel = MutableLiveData() + val filesOrTextPendingSharingLabel = MutableLiveData() val goBackToCallEvent: MutableLiveData> by lazy { MutableLiveData>() @@ -112,7 +110,7 @@ class MainViewModel MutableLiveData>() } - val clearFilesPendingSharingEvent: MutableLiveData> by lazy { + val clearFilesOrTextPendingSharingEvent: MutableLiveData> by lazy { MutableLiveData>() } @@ -349,9 +347,8 @@ class MainViewModel maxAlertLevel.value = NONE nonDefaultAccountNotificationsCount = 0 - pendingFileSharing.value = false - filesCountPendingSharing.value = 0 - filesPendingSharingLabel.value = "" + pendingFilesOrTextSharing.value = false + filesOrTextPendingSharingLabel.value = "" enableAccountMonitoring(true) @@ -480,28 +477,32 @@ class MainViewModel val count = list.size Log.i("$TAG Adding [$count] files to pending sharing files list") if (count > 0) { - filesCountPendingSharing.value = count - filesPendingSharingLabel.value = AppUtils.getStringWithPlural( + filesOrTextPendingSharingLabel.value = AppUtils.getStringWithPlural( R.plurals.conversations_files_waiting_to_be_shared_toast, count, "$count" ) - pendingFileSharing.value = true + pendingFilesOrTextSharing.value = true } } @UiThread - fun filesPendingSharingListCleared() { - pendingFileSharing.value = false - filesCountPendingSharing.value = 0 - filesPendingSharingLabel.value = "" + fun addTextPendingSharing() { + filesOrTextPendingSharingLabel.value = AppUtils.getString(R.string.conversations_text_waiting_to_be_shared_toast) + pendingFilesOrTextSharing.value = true + } + + @UiThread + fun filesOrTextPendingSharingListCleared() { + pendingFilesOrTextSharing.value = false + filesOrTextPendingSharingLabel.value = "" Log.i("$TAG List of files pending sharing has been cleared") } @UiThread - fun cancelFileSharing() { + fun cancelFileOrTextSharing() { Log.i("$TAG Clearing list of files pending sharing") - clearFilesPendingSharingEvent.value = Event(true) + clearFilesOrTextPendingSharingEvent.value = Event(true) } @UiThread diff --git a/app/src/main/res/layout/main_activity.xml b/app/src/main/res/layout/main_activity.xml index 9b7ce23f7..3f193fca5 100644 --- a/app/src/main/res/layout/main_activity.xml +++ b/app/src/main/res/layout/main_activity.xml @@ -27,7 +27,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" - android:background="@{viewModel.showAlert ? (viewModel.maxAlertLevel >= 10 ? @drawable/color_danger_500 : @drawable/color_main_activity_top_bar) : (viewModel.pendingFileSharing ? @drawable/color_main_activity_top_bar : (viewModel.atLeastOneCall ? @drawable/color_success_500 : @drawable/color_main1_500)), default=@drawable/color_main1_500}" + android:background="@{viewModel.showAlert ? (viewModel.maxAlertLevel >= 10 ? @drawable/color_danger_500 : @drawable/color_main_activity_top_bar) : (viewModel.pendingFilesOrTextSharing ? @drawable/color_main_activity_top_bar : (viewModel.atLeastOneCall ? @drawable/color_success_500 : @drawable/color_main1_500)), default=@drawable/color_main1_500}" app:layout_constraintTop_toTopOf="parent"> diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 9fef4ace3..802c97932 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -921,4 +921,5 @@ Copier le texte dans le presse-papier Au moins un message vocal est disponible Faire un appui long pour appeler la boite vocale + Cliquer pour annuler le partage des fichiers ou du texte en attente diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index cccb21e02..4803f5ed7 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -963,6 +963,7 @@ Copy text to clipboard Voice message are available Long press to dial voicemail + Click to cancel files or text pending sharing