From 785be0b1fd99730af9ec7c0ec8821ef9f88547ec Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Tue, 21 Feb 2023 11:51:46 +0100 Subject: [PATCH] Do not update friend list subscriptions when contacts loading has finished if default account isn't registered yet --- .../main/java/org/linphone/contact/ContactLoader.kt | 10 +++++++--- .../main/java/org/linphone/contact/ContactsManager.kt | 3 ++- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/org/linphone/contact/ContactLoader.kt b/app/src/main/java/org/linphone/contact/ContactLoader.kt index 9b5514075..6b8b662a6 100644 --- a/app/src/main/java/org/linphone/contact/ContactLoader.kt +++ b/app/src/main/java/org/linphone/contact/ContactLoader.kt @@ -59,7 +59,8 @@ class ContactLoader : LoaderManager.LoaderCallbacks { } override fun onCreateLoader(id: Int, args: Bundle?): Loader { - Log.i("[Contacts Loader] Loader created") + val lastFetch = coreContext.contactsManager.latestContactFetch + Log.i("[Contacts Loader] Loader created, ${if (lastFetch.isEmpty()) "first fetch" else "last fetch happened at [$lastFetch]"}") coreContext.contactsManager.fetchInProgress.value = true val mimeType = ContactsContract.Data.MIMETYPE @@ -267,8 +268,11 @@ class ContactLoader : LoaderManager.LoaderCallbacks { friends.clear() Log.i("[Contacts Loader] Friends added") - fl.updateSubscriptions() - Log.i("[Contacts Loader] Subscription(s) updated") + // Only update subscriptions when default account is registered or anytime if it isn't the first contacts fetch + if (core.defaultAccount?.state == RegistrationState.Ok || coreContext.contactsManager.latestContactFetch.isNotEmpty()) { + Log.i("[Contacts Loader] Updating friend list [$fl] subscriptions") + fl.updateSubscriptions() + } coreContext.contactsManager.fetchFinished() } diff --git a/app/src/main/java/org/linphone/contact/ContactsManager.kt b/app/src/main/java/org/linphone/contact/ContactsManager.kt index 394195db6..294a2c24e 100644 --- a/app/src/main/java/org/linphone/contact/ContactsManager.kt +++ b/app/src/main/java/org/linphone/contact/ContactsManager.kt @@ -44,6 +44,7 @@ import org.linphone.core.tools.Log import org.linphone.utils.ImageUtils import org.linphone.utils.LinphoneUtils import org.linphone.utils.PermissionHelper +import org.linphone.utils.TimestampUtils interface ContactsUpdatedListener { fun onContactsUpdated() @@ -111,7 +112,7 @@ class ContactsManager(private val context: Context) { fun fetchFinished() { Log.i("[Contacts Manager] Contacts loader have finished") - latestContactFetch = System.currentTimeMillis().toString() + latestContactFetch = TimestampUtils.timeToString(System.currentTimeMillis(), false) updateLocalContacts() fetchInProgress.value = false notifyListeners()