Added RC flag to allow disabling add contact feature

This commit is contained in:
Sylvain Berfini 2025-12-17 10:31:17 +01:00
parent 965b159139
commit d299b0b129
13 changed files with 38 additions and 5 deletions

View file

@ -32,4 +32,7 @@
<entry name="media_encryption">srtp</entry>
<entry name="media_encryption_mandatory" overwrite="true">0</entry>
</section>
<section name="ui">
<entry name="automatically_show_dialpad" overwrite="true">1</entry>
</section>
</config>

View file

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

View file

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

View file

@ -82,6 +82,8 @@ class ConversationInfoViewModel
val friendAvailable = MutableLiveData<Boolean>()
val disableAddContact = MutableLiveData<Boolean>()
val groupLeftEvent: MutableLiveData<Event<Boolean>> by lazy {
MutableLiveData<Event<Boolean>>()
}
@ -194,6 +196,7 @@ class ConversationInfoViewModel
init {
expandParticipants.value = true
showPeerSipUri.value = false
disableAddContact.value = corePreferences.disableAddContact
coreContext.postOnCoreThread {
hideSipAddresses.postValue(corePreferences.hideSipAddresses)

View file

@ -71,6 +71,8 @@ class ContactsListViewModel
val showResultsLimitReached = MutableLiveData<Boolean>()
val disableAddContact = MutableLiveData<Boolean>()
val vCardTerminatedEvent: MutableLiveData<Event<Pair<String, File>>> by lazy {
MutableLiveData<Event<Pair<String, File>>>()
}
@ -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

View file

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

View file

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

View file

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

View file

@ -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 &amp;&amp; !viewModel.friendAvailable ? View.VISIBLE : View.GONE, default=gone}"
android:visibility="@{!viewModel.isGroup &amp;&amp; !viewModel.friendAvailable &amp;&amp; !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"

View file

@ -32,6 +32,9 @@
<variable
name="isMeAdmin"
type="Boolean" />
<variable
name="disableAddContact"
type="Boolean" />
</data>
<androidx.constraintlayout.widget.ConstraintLayout
@ -62,7 +65,7 @@
android:onClick="@{addToContactsClickListener}"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:visibility="@{isParticipantContact ? View.GONE : View.VISIBLE, default=gone}"
android:visibility="@{isParticipantContact || disableAddContact ? View.GONE : View.VISIBLE, default=gone}"
android:text="@string/conversation_info_menu_add_to_contacts"
android:drawableStart="@drawable/user_plus"
app:layout_constraintHorizontal_bias="0"

View file

@ -209,6 +209,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"

View file

@ -19,6 +19,9 @@
<variable
name="contactExists"
type="Boolean" />
<variable
name="disableAddContact"
type="Boolean" />
</data>
<androidx.constraintlayout.widget.ConstraintLayout
@ -29,7 +32,7 @@
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/add_to_contact"
android:onClick="@{addToContactsListener}"
android:visibility="@{contactExists ? View.GONE : View.VISIBLE}"
android:visibility="@{contactExists || disableAddContact ? View.GONE : View.VISIBLE}"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="@string/menu_add_address_to_contacts"

View file

@ -23,6 +23,9 @@
<variable
name="isConferenceCallLog"
type="Boolean" />
<variable
name="disableAddContact"
type="Boolean" />
</data>
<androidx.constraintlayout.widget.ConstraintLayout
@ -36,7 +39,7 @@
style="@style/popup_menu_item"
android:id="@+id/add_to_contact"
android:onClick="@{addToContactsListener}"
android:visibility="@{contactExists || isConferenceCallLog ? View.GONE : View.VISIBLE, default=gone}"
android:visibility="@{contactExists || isConferenceCallLog || disableAddContact ? View.GONE : View.VISIBLE, default=gone}"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="@string/menu_add_address_to_contacts"