From 6be696f0358f6c0378f9939cbebc452259bc507c Mon Sep 17 00:00:00 2001 From: Mahendra Liya Date: Mon, 29 May 2023 11:17:05 +0530 Subject: [PATCH 1/2] Dialer - Improve Recent calls loading --- .../dialer/fragments/RecentsFragment.kt | 14 +++++++++++++- .../simplemobiletools/dialer/helpers/Constants.kt | 2 ++ .../dialer/helpers/RecentsHelper.kt | 11 +++++------ 3 files changed, 20 insertions(+), 7 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/RecentsFragment.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/RecentsFragment.kt index 0a995e11..68f0ba23 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/RecentsFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/RecentsFragment.kt @@ -8,10 +8,12 @@ import com.simplemobiletools.commons.helpers.ContactsHelper import com.simplemobiletools.commons.helpers.MyContactsContentProvider import com.simplemobiletools.commons.helpers.PERMISSION_READ_CALL_LOG import com.simplemobiletools.commons.helpers.SMT_PRIVATE +import com.simplemobiletools.commons.views.MyRecyclerView import com.simplemobiletools.dialer.R import com.simplemobiletools.dialer.activities.SimpleActivity import com.simplemobiletools.dialer.adapters.RecentCallsAdapter import com.simplemobiletools.dialer.extensions.config +import com.simplemobiletools.dialer.helpers.MIN_RECENT_TRESHOLD import com.simplemobiletools.dialer.helpers.RecentsHelper import com.simplemobiletools.dialer.interfaces.RefreshItemsListener import com.simplemobiletools.dialer.models.RecentCall @@ -49,7 +51,8 @@ class RecentsFragment(context: Context, attributeSet: AttributeSet) : MyViewPage override fun refreshItems(callback: (() -> Unit)?) { val privateCursor = context?.getMyContactsCursor(false, true) val groupSubsequentCalls = context?.config?.groupSubsequentCalls ?: false - RecentsHelper(context).getRecentCalls(groupSubsequentCalls) { recents -> + val size = allRecentCalls.count() + MIN_RECENT_TRESHOLD + RecentsHelper(context).getRecentCalls(groupSubsequentCalls, size) { recents -> ContactsHelper(context).getContacts(showOnlyContactsWithNumbers = true) { contacts -> val privateContacts = MyContactsContentProvider.getContacts(context, privateCursor) @@ -118,6 +121,15 @@ class RecentsFragment(context: Context, attributeSet: AttributeSet) : MyViewPage } else { (currAdapter as RecentCallsAdapter).updateItems(recents) } + + recents_list.endlessScrollListener = object : MyRecyclerView.EndlessScrollListener { + override fun updateTop() { + } + + override fun updateBottom() { + refreshItems() + } + } } } diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/Constants.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/Constants.kt index a1329979..8b15b5b1 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/Constants.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/Constants.kt @@ -28,3 +28,5 @@ const val ACCEPT_CALL = PATH + "accept_call" const val DECLINE_CALL = PATH + "decline_call" const val DIALPAD_TONE_LENGTH_MS = 150L // The length of DTMF tones in milliseconds + +const val MIN_RECENT_TRESHOLD = 12 diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/RecentsHelper.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/RecentsHelper.kt index 1dd7d8ed..33e3f7bc 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/RecentsHelper.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/RecentsHelper.kt @@ -13,10 +13,9 @@ import com.simplemobiletools.dialer.models.RecentCall class RecentsHelper(private val context: Context) { private val COMPARABLE_PHONE_NUMBER_LENGTH = 9 - private val QUERY_LIMIT = "200" @SuppressLint("MissingPermission") - fun getRecentCalls(groupSubsequentCalls: Boolean, callback: (ArrayList) -> Unit) { + fun getRecentCalls(groupSubsequentCalls: Boolean, size: Int = MIN_RECENT_TRESHOLD, callback: (ArrayList) -> Unit) { val privateCursor = context.getMyContactsCursor(false, true) ensureBackgroundThread { if (!context.hasPermission(PERMISSION_READ_CALL_LOG)) { @@ -30,13 +29,13 @@ class RecentsHelper(private val context: Context) { contacts.addAll(privateContacts) } - getRecents(contacts, groupSubsequentCalls, callback) + getRecents(contacts, groupSubsequentCalls, size, callback) } } } @SuppressLint("NewApi") - private fun getRecents(contacts: ArrayList, groupSubsequentCalls: Boolean, callback: (ArrayList) -> Unit) { + private fun getRecents(contacts: ArrayList, groupSubsequentCalls: Boolean, size: Int, callback: (ArrayList) -> Unit) { var recentCalls = ArrayList() var previousRecentCallFrom = "" @@ -64,12 +63,12 @@ class RecentsHelper(private val context: Context) { val cursor = if (isNougatPlus()) { // https://issuetracker.google.com/issues/175198972?pli=1#comment6 val limitedUri = uri.buildUpon() - .appendQueryParameter(Calls.LIMIT_PARAM_KEY, QUERY_LIMIT) + .appendQueryParameter(Calls.LIMIT_PARAM_KEY, size.toString()) .build() val sortOrder = "${Calls._ID} DESC" context.contentResolver.query(limitedUri, projection, null, null, sortOrder) } else { - val sortOrder = "${Calls._ID} DESC LIMIT $QUERY_LIMIT" + val sortOrder = "${Calls._ID} DESC LIMIT $size" context.contentResolver.query(uri, projection, null, null, sortOrder) } From b38f417a466eb752c289b5575dd9672fe0e00acc Mon Sep 17 00:00:00 2001 From: Mahendra Liya Date: Mon, 29 May 2023 11:22:54 +0530 Subject: [PATCH 2/2] refactor: changing default Threshold size to 30 --- .../kotlin/com/simplemobiletools/dialer/helpers/Constants.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/Constants.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/Constants.kt index 8b15b5b1..ec0f31e6 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/Constants.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/Constants.kt @@ -29,4 +29,4 @@ const val DECLINE_CALL = PATH + "decline_call" const val DIALPAD_TONE_LENGTH_MS = 150L // The length of DTMF tones in milliseconds -const val MIN_RECENT_TRESHOLD = 12 +const val MIN_RECENT_TRESHOLD = 30