From d299b0b12912fd5dccebff5782b58a44ce80c9a2 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Wed, 17 Dec 2025 10:31:17 +0100 Subject: [PATCH] Added RC flag to allow disabling add contact feature --- app/src/main/assets/assistant_third_party_default_values | 3 +++ app/src/main/java/org/linphone/core/CorePreferences.kt | 7 +++++++ .../ui/main/chat/fragment/ConversationInfoFragment.kt | 2 ++ .../ui/main/chat/viewmodel/ConversationInfoViewModel.kt | 3 +++ .../ui/main/contacts/viewmodel/ContactsListViewModel.kt | 3 +++ .../linphone/ui/main/history/fragment/HistoryFragment.kt | 2 ++ .../ui/main/history/fragment/HistoryMenuDialogFragment.kt | 2 ++ app/src/main/res/layout-land/contacts_list_fragment.xml | 1 + app/src/main/res/layout/chat_info_fragment.xml | 4 ++-- .../main/res/layout/chat_participant_admin_popup_menu.xml | 5 ++++- app/src/main/res/layout/contacts_list_fragment.xml | 1 + app/src/main/res/layout/history_list_long_press_menu.xml | 5 ++++- app/src/main/res/layout/history_popup_menu.xml | 5 ++++- 13 files changed, 38 insertions(+), 5 deletions(-) diff --git a/app/src/main/assets/assistant_third_party_default_values b/app/src/main/assets/assistant_third_party_default_values index d19b3f504..511252548 100644 --- a/app/src/main/assets/assistant_third_party_default_values +++ b/app/src/main/assets/assistant_third_party_default_values @@ -32,4 +32,7 @@ srtp 0 +
+ 1 +
diff --git a/app/src/main/java/org/linphone/core/CorePreferences.kt b/app/src/main/java/org/linphone/core/CorePreferences.kt index 51437bbbe..60291e329 100644 --- a/app/src/main/java/org/linphone/core/CorePreferences.kt +++ b/app/src/main/java/org/linphone/core/CorePreferences.kt @@ -264,6 +264,13 @@ class CorePreferences config.setString("app", "friend_list_to_store_newly_created_contacts", value) } + @get:AnyThread @set:WorkerThread + var disableAddContact: Boolean + get() = config.getBool("ui", "disable_add_contact", false) + set(value) { + config.setBool("ui", "disable_add_contact", value) + } + // Voice recordings related @get:AnyThread @set:WorkerThread 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 e804acabd..5f31052e3 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 @@ -34,6 +34,7 @@ import androidx.lifecycle.ViewModelProvider import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.navArgs import androidx.recyclerview.widget.LinearLayoutManager +import org.linphone.LinphoneApplication.Companion.corePreferences import org.linphone.R import org.linphone.core.tools.Log import org.linphone.databinding.ChatInfoFragmentBinding @@ -367,6 +368,7 @@ class ConversationInfoFragment : SlidingPaneChildFragment() { popupView.isMeAdmin = participantModel.isMyselfAdmin val friendRefKey = participantModel.refKey popupView.isParticipantContact = participantModel.friendAvailable + popupView.disableAddContact = corePreferences.disableAddContact popupView.setRemoveParticipantClickListener { Log.i("$TAG Trying to remove participant [$address]") 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 4ac6aadd0..ee5f4cfbc 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 @@ -82,6 +82,8 @@ class ConversationInfoViewModel val friendAvailable = MutableLiveData() + val disableAddContact = MutableLiveData() + val groupLeftEvent: MutableLiveData> by lazy { MutableLiveData>() } @@ -194,6 +196,7 @@ class ConversationInfoViewModel init { expandParticipants.value = true showPeerSipUri.value = false + disableAddContact.value = corePreferences.disableAddContact coreContext.postOnCoreThread { hideSipAddresses.postValue(corePreferences.hideSipAddresses) diff --git a/app/src/main/java/org/linphone/ui/main/contacts/viewmodel/ContactsListViewModel.kt b/app/src/main/java/org/linphone/ui/main/contacts/viewmodel/ContactsListViewModel.kt index 1eb63eb9f..0e6004bb5 100644 --- a/app/src/main/java/org/linphone/ui/main/contacts/viewmodel/ContactsListViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/contacts/viewmodel/ContactsListViewModel.kt @@ -71,6 +71,8 @@ class ContactsListViewModel val showResultsLimitReached = MutableLiveData() + val disableAddContact = MutableLiveData() + val vCardTerminatedEvent: MutableLiveData>> by lazy { MutableLiveData>>() } @@ -150,6 +152,7 @@ class ContactsListViewModel fetchInProgress.value = true showFavourites.value = corePreferences.showFavoriteContacts showFilter.value = !corePreferences.hidePhoneNumbers && !corePreferences.hideSipAddresses + disableAddContact.value = corePreferences.disableAddContact coreContext.postOnCoreThread { core -> domainFilter = corePreferences.contactsFilter diff --git a/app/src/main/java/org/linphone/ui/main/history/fragment/HistoryFragment.kt b/app/src/main/java/org/linphone/ui/main/history/fragment/HistoryFragment.kt index 4fad50448..a289020d6 100644 --- a/app/src/main/java/org/linphone/ui/main/history/fragment/HistoryFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/history/fragment/HistoryFragment.kt @@ -34,6 +34,7 @@ import androidx.lifecycle.ViewModelProvider import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.navArgs import androidx.recyclerview.widget.LinearLayoutManager +import org.linphone.LinphoneApplication.Companion.corePreferences import org.linphone.R import org.linphone.core.tools.Log import org.linphone.databinding.HistoryFragmentBinding @@ -216,6 +217,7 @@ class HistoryFragment : SlidingPaneChildFragment() { popupView.contactExists = viewModel.callLogModel.value?.friendExists == true popupView.isConferenceCallLog = viewModel.isConferenceCallLog.value == true + popupView.disableAddContact = corePreferences.disableAddContact popupView.setAddToContactsListener { sharedViewModel.sipAddressToAddToNewContact = viewModel.callLogModel.value?.displayedAddress.orEmpty() diff --git a/app/src/main/java/org/linphone/ui/main/history/fragment/HistoryMenuDialogFragment.kt b/app/src/main/java/org/linphone/ui/main/history/fragment/HistoryMenuDialogFragment.kt index cab571da4..15ee5d5a5 100644 --- a/app/src/main/java/org/linphone/ui/main/history/fragment/HistoryMenuDialogFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/history/fragment/HistoryMenuDialogFragment.kt @@ -29,6 +29,7 @@ import androidx.annotation.UiThread import com.google.android.material.bottomsheet.BottomSheetBehavior import com.google.android.material.bottomsheet.BottomSheetDialog import com.google.android.material.bottomsheet.BottomSheetDialogFragment +import org.linphone.LinphoneApplication.Companion.corePreferences import org.linphone.databinding.HistoryListLongPressMenuBinding @UiThread @@ -69,6 +70,7 @@ class HistoryMenuDialogFragment( ): View { val view = HistoryListLongPressMenuBinding.inflate(layoutInflater) view.contactExists = contactExists + view.disableAddContact = corePreferences.disableAddContact view.setCopyNumberClickListener { onCopyNumberOrAddressToClipboard?.invoke() diff --git a/app/src/main/res/layout-land/contacts_list_fragment.xml b/app/src/main/res/layout-land/contacts_list_fragment.xml index b63594359..b84fc34d9 100644 --- a/app/src/main/res/layout-land/contacts_list_fragment.xml +++ b/app/src/main/res/layout-land/contacts_list_fragment.xml @@ -201,6 +201,7 @@ android:layout_margin="16dp" android:src="@drawable/user_plus" android:contentDescription="@string/content_description_contact_create" + android:visibility="@{viewModel.disableAddContact ? View.GONE : View.VISIBLE}" app:tint="?attr/color_on_main" app:backgroundTint="?attr/color_main1_500" app:shapeAppearanceOverlay="@style/rounded" diff --git a/app/src/main/res/layout/chat_info_fragment.xml b/app/src/main/res/layout/chat_info_fragment.xml index f7272d0c9..40c35a519 100644 --- a/app/src/main/res/layout/chat_info_fragment.xml +++ b/app/src/main/res/layout/chat_info_fragment.xml @@ -469,7 +469,7 @@ android:drawableStart="@drawable/user_plus" android:onClick="@{addToContactsClickListener}" android:text="@string/conversation_info_menu_add_to_contacts" - android:visibility="@{!viewModel.isGroup && !viewModel.friendAvailable ? View.VISIBLE : View.GONE, default=gone}" + android:visibility="@{!viewModel.isGroup && !viewModel.friendAvailable && !viewModel.disableAddContact ? View.VISIBLE : View.GONE, default=gone}" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/action_see_contact" /> @@ -481,7 +481,7 @@ android:layout_height="wrap_content" android:layout_marginStart="16dp" android:layout_marginEnd="16dp" - android:background="@{!viewModel.isGroup ? @drawable/action_background_middle : @drawable/action_background_top, default=@drawable/action_background_top}" + android:background="@{viewModel.disableAddContact ? @drawable/action_background_top : !viewModel.isGroup ? @drawable/action_background_middle : @drawable/action_background_top, default=@drawable/action_background_top}" android:drawableStart="@drawable/clock_countdown" android:onClick="@{configureEphemeralMessagesClickListener}" android:text="@string/conversation_action_configure_ephemeral_messages" diff --git a/app/src/main/res/layout/chat_participant_admin_popup_menu.xml b/app/src/main/res/layout/chat_participant_admin_popup_menu.xml index 19a04b647..dc1bb5a28 100644 --- a/app/src/main/res/layout/chat_participant_admin_popup_menu.xml +++ b/app/src/main/res/layout/chat_participant_admin_popup_menu.xml @@ -32,6 +32,9 @@ + + +