diff --git a/app/src/main/java/org/linphone/contacts/ContactLoader.kt b/app/src/main/java/org/linphone/contacts/ContactLoader.kt index a8fe041ec..59e2c93a4 100644 --- a/app/src/main/java/org/linphone/contacts/ContactLoader.kt +++ b/app/src/main/java/org/linphone/contacts/ContactLoader.kt @@ -151,8 +151,8 @@ class ContactLoader : LoaderManager.LoaderCallbacks { friend.nativeUri = "${ContactsContract.Contacts.CONTENT_LOOKUP_URI}/$lookupKey" - // Disable short term presence friend.isSubscribesEnabled = false + // Disable peer to peer short term presence friend.incSubscribePolicy = SubscribePolicy.SPDeny } diff --git a/app/src/main/java/org/linphone/contacts/ContactsManager.kt b/app/src/main/java/org/linphone/contacts/ContactsManager.kt index ba0214492..d6fc36f42 100644 --- a/app/src/main/java/org/linphone/contacts/ContactsManager.kt +++ b/app/src/main/java/org/linphone/contacts/ContactsManager.kt @@ -69,7 +69,6 @@ class ContactsManager @UiThread constructor(context: Context) { override fun onFriendListCreated(core: Core, friendList: FriendList) { Log.i("$TAG Friend list [${friendList.displayName}] created") friendList.addListener(friendListListener) - friendList.updateSubscriptions() } @WorkerThread diff --git a/app/src/main/java/org/linphone/ui/main/contacts/viewmodel/ContactNewOrEditViewModel.kt b/app/src/main/java/org/linphone/ui/main/contacts/viewmodel/ContactNewOrEditViewModel.kt index cc54f7c13..7de9e9793 100644 --- a/app/src/main/java/org/linphone/ui/main/contacts/viewmodel/ContactNewOrEditViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/contacts/viewmodel/ContactNewOrEditViewModel.kt @@ -28,6 +28,7 @@ import org.linphone.LinphoneApplication.Companion.coreContext import org.linphone.contacts.ContactLoader.Companion.LINPHONE_ADDRESS_BOOK_FRIEND_LIST import org.linphone.core.Friend import org.linphone.core.FriendList.Status +import org.linphone.core.SubscribePolicy import org.linphone.core.tools.Log import org.linphone.ui.main.contacts.model.NewOrEditNumberOrAddressModel import org.linphone.utils.Event @@ -128,6 +129,9 @@ class ContactNewOrEditViewModel @UiThread constructor() : ViewModel() { if (!::friend.isInitialized) { friend = core.createFriend() + friend.isSubscribesEnabled = false + // Disable peer to peer short term presence + friend.incSubscribePolicy = SubscribePolicy.SPDeny } friend.name = "${firstName.value.orEmpty().trim()} ${lastName.value.orEmpty().trim()}" diff --git a/app/src/main/java/org/linphone/ui/main/model/AccountModel.kt b/app/src/main/java/org/linphone/ui/main/model/AccountModel.kt index 38f33fc85..d83b0e051 100644 --- a/app/src/main/java/org/linphone/ui/main/model/AccountModel.kt +++ b/app/src/main/java/org/linphone/ui/main/model/AccountModel.kt @@ -88,7 +88,19 @@ class AccountModel @WorkerThread constructor( fun setAsDefault() { coreContext.postOnCoreThread { core -> core.defaultAccount = account + + for (friendList in core.friendsLists) { + if (friendList.isSubscriptionsEnabled) { + Log.i( + "$TAG Default account has changed, refreshing friend list [${friendList.displayName}] subscriptions" + ) + // friendList.updateSubscriptions() won't trigger a refresh unless a friend has changed + friendList.isSubscriptionsEnabled = false + friendList.isSubscriptionsEnabled = true + } + } } + isDefault.value = true onSetAsDefault?.invoke(account) }