Added a setting to prevent native addressbook integration

This commit is contained in:
Sylvain Berfini 2022-09-20 16:24:30 +02:00
parent b426bd567f
commit 05718aa749
11 changed files with 50 additions and 21 deletions

View file

@ -25,6 +25,7 @@ import android.view.View
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager
import org.linphone.LinphoneApplication.Companion.coreContext
import org.linphone.LinphoneApplication.Companion.corePreferences
import org.linphone.R
import org.linphone.activities.main.MainActivity
import org.linphone.activities.main.chat.viewmodels.ChatRoomCreationViewModel
@ -148,9 +149,11 @@ class ChatRoomCreationFragment : SecureFragment<ChatRoomCreationFragmentBinding>
}
}
if (!PermissionHelper.get().hasReadContactsPermission()) {
Log.i("[Chat Room Creation] Asking for READ_CONTACTS permission")
requestPermissions(arrayOf(android.Manifest.permission.READ_CONTACTS), 0)
if (corePreferences.enableNativeAddressBookIntegration) {
if (!PermissionHelper.get().hasReadContactsPermission()) {
Log.i("[Chat Room Creation] Asking for READ_CONTACTS permission")
requestPermissions(arrayOf(android.Manifest.permission.READ_CONTACTS), 0)
}
}
}

View file

@ -368,6 +368,12 @@ class MasterChatRoomsFragment : MasterFragment<ChatRoomMasterFragmentBinding, Ch
}
}
override fun onResume() {
super.onResume()
listViewModel.groupChatAvailable.value = LinphoneUtils.isGroupChatAvailable()
}
override fun deleteItems(indexesOfItemToDelete: ArrayList<Int>) {
val list = ArrayList<ChatRoom>()
var closeSlidingPane = false

View file

@ -39,7 +39,7 @@ class ChatRoomsListViewModel : MessageNotifierViewModel() {
val forwardPending = MutableLiveData<Boolean>()
val groupChatAvailable: Boolean = LinphoneUtils.isGroupChatAvailable()
val groupChatAvailable = MutableLiveData<Boolean>()
val chatRoomIndexUpdatedEvent: MutableLiveData<Event<Int>> by lazy {
MutableLiveData<Event<Int>>()
@ -97,6 +97,7 @@ class ChatRoomsListViewModel : MessageNotifierViewModel() {
private var chatRoomsToDeleteCount = 0
init {
groupChatAvailable.value = LinphoneUtils.isGroupChatAvailable()
updateChatRooms()
coreContext.core.addListener(listener)
coreContext.contactsManager.addListener(contactsListener)

View file

@ -25,6 +25,7 @@ import android.view.View
import androidx.navigation.navGraphViewModels
import androidx.recyclerview.widget.LinearLayoutManager
import org.linphone.LinphoneApplication.Companion.coreContext
import org.linphone.LinphoneApplication.Companion.corePreferences
import org.linphone.R
import org.linphone.activities.GenericFragment
import org.linphone.activities.main.conference.viewmodels.ConferenceSchedulingViewModel
@ -92,9 +93,11 @@ class ConferenceSchedulingParticipantsListFragment : GenericFragment<ConferenceS
}
}
if (!PermissionHelper.get().hasReadContactsPermission()) {
Log.i("[Conference Creation] Asking for READ_CONTACTS permission")
requestPermissions(arrayOf(android.Manifest.permission.READ_CONTACTS), 0)
if (corePreferences.enableNativeAddressBookIntegration) {
if (!PermissionHelper.get().hasReadContactsPermission()) {
Log.i("[Conference Creation] Asking for READ_CONTACTS permission")
requestPermissions(arrayOf(android.Manifest.permission.READ_CONTACTS), 0)
}
}
}

View file

@ -311,9 +311,11 @@ class MasterContactsFragment : MasterFragment<ContactMasterFragmentBinding, Cont
}
}
if (!PermissionHelper.get().hasReadContactsPermission()) {
Log.i("[Contacts] Asking for READ_CONTACTS permission")
requestPermissions(arrayOf(android.Manifest.permission.READ_CONTACTS), 0)
if (corePreferences.enableNativeAddressBookIntegration) {
if (!PermissionHelper.get().hasReadContactsPermission()) {
Log.i("[Contacts] Asking for READ_CONTACTS permission")
requestPermissions(arrayOf(android.Manifest.permission.READ_CONTACTS), 0)
}
}
}

View file

@ -38,6 +38,8 @@ class ContactsListViewModel : ViewModel() {
val contactsList = MutableLiveData<ArrayList<ContactViewModel>>()
val nativeAddressBookEnabled = MutableLiveData<Boolean>()
val fetchInProgress = MutableLiveData<Boolean>()
private var searchResultsPending: Boolean = false
private var fastFetchJob: Job? = null
@ -72,6 +74,7 @@ class ContactsListViewModel : ViewModel() {
init {
sipContactsSelected.value = coreContext.contactsManager.shouldDisplaySipContactsList()
nativeAddressBookEnabled.value = corePreferences.enableNativeAddressBookIntegration
coreContext.contactsManager.addListener(contactsUpdatedListener)
coreContext.contactsManager.magicSearch.addListener(magicSearchListener)

View file

@ -88,9 +88,11 @@ class ContactsSettingsFragment : GenericSettingFragment<SettingsContactsFragment
}
}
if (!PermissionHelper.required(requireContext()).hasReadContactsPermission()) {
Log.i("[Contacts Settings] Asking for READ_CONTACTS permission")
requestPermissions(arrayOf(android.Manifest.permission.READ_CONTACTS), 0)
if (corePreferences.enableNativeAddressBookIntegration) {
if (!PermissionHelper.required(requireContext()).hasReadContactsPermission()) {
Log.i("[Contacts Settings] Asking for READ_CONTACTS permission")
requestPermissions(arrayOf(android.Manifest.permission.READ_CONTACTS), 0)
}
}
}

View file

@ -26,6 +26,7 @@ import androidx.lifecycle.ViewModelProvider
import androidx.navigation.navGraphViewModels
import androidx.recyclerview.widget.LinearLayoutManager
import org.linphone.LinphoneApplication
import org.linphone.LinphoneApplication.Companion.corePreferences
import org.linphone.R
import org.linphone.activities.GenericFragment
import org.linphone.activities.voip.viewmodels.ConferenceParticipantsViewModel
@ -104,9 +105,11 @@ class ConferenceAddParticipantsFragment : GenericFragment<VoipConferenceParticip
}
}
if (!PermissionHelper.get().hasReadContactsPermission()) {
Log.i("[Conference Add Participants] Asking for READ_CONTACTS permission")
requestPermissions(arrayOf(android.Manifest.permission.READ_CONTACTS), 0)
if (corePreferences.enableNativeAddressBookIntegration) {
if (!PermissionHelper.get().hasReadContactsPermission()) {
Log.i("[Conference Add Participants] Asking for READ_CONTACTS permission")
requestPermissions(arrayOf(android.Manifest.permission.READ_CONTACTS), 0)
}
}
}

View file

@ -488,10 +488,12 @@ class CoreContext(
}
fun fetchContacts() {
if (PermissionHelper.required(context).hasReadContactsPermission()) {
Log.i("[Context] Init contacts loader")
val manager = LoaderManager.getInstance(this@CoreContext)
manager.restartLoader(0, null, contactLoader)
if (corePreferences.enableNativeAddressBookIntegration) {
if (PermissionHelper.required(context).hasReadContactsPermission()) {
Log.i("[Context] Init contacts loader")
val manager = LoaderManager.getInstance(this@CoreContext)
manager.restartLoader(0, null, contactLoader)
}
}
}

View file

@ -434,6 +434,9 @@ class CorePreferences constructor(private val context: Context) {
val allowMultipleFilesAndTextInSameMessage: Boolean
get() = config.getBool("app", "allow_multiple_files_and_text_in_same_message", true)
val enableNativeAddressBookIntegration: Boolean
get() = config.getBool("app", "enable_native_address_book", true)
val fetchContactsFromDefaultDirectory: Boolean
get() = config.getBool("app", "fetch_contacts_from_default_directory", true)

View file

@ -102,7 +102,8 @@
android:layout_weight="0.2"
android:background="?attr/button_background_drawable"
android:padding="15dp"
android:src="@drawable/contact_add" />
android:src="@drawable/contact_add"
android:visibility="@{viewModel.nativeAddressBookEnabled ? View.VISIBLE : View.GONE}"/>
<ImageView
android:onClick="@{editClickListener}"