From 2e5a18a02910e3b03693191b5fe215f187b2b9a9 Mon Sep 17 00:00:00 2001 From: shenzhigang Date: Thu, 24 Nov 2022 21:50:51 +0800 Subject: [PATCH] Fix Mms duplication on scroll to top --- .../smsmessenger/extensions/Context.kt | 23 ++++++++++--------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt index 6458fd41..cafb4dcd 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt @@ -122,7 +122,7 @@ fun Context.getMessages( messages.add(message) } - messages.addAll(getMMS(threadId, getImageResolutions, sortOrder)) + messages.addAll(getMMS(threadId, getImageResolutions, sortOrder, dateFrom)) if (includeScheduledMessages) { try { @@ -143,7 +143,7 @@ fun Context.getMessages( } // as soon as a message contains multiple recipients it counts as an MMS instead of SMS -fun Context.getMMS(threadId: Long? = null, getImageResolutions: Boolean = false, sortOrder: String? = null): ArrayList { +fun Context.getMMS(threadId: Long? = null, getImageResolutions: Boolean = false, sortOrder: String? = null, dateFrom: Int = -1): ArrayList { val uri = Mms.CONTENT_URI val projection = arrayOf( Mms._ID, @@ -155,16 +155,17 @@ fun Context.getMMS(threadId: Long? = null, getImageResolutions: Boolean = false, Mms.STATUS ) - val selection = if (threadId == null) { - null - } else { - "${Mms.THREAD_ID} = ?" - } + var selection:String? = null + var selectionArgs:Array? = null - val selectionArgs = if (threadId == null) { - null - } else { - arrayOf(threadId.toString()) + if (threadId == null && dateFrom != -1) { + selection = "${Sms.DATE} < ${dateFrom.toLong()}" //Should not multiply 1000 here, because date in mms's database is different from sms's. + } else if(threadId != null && dateFrom == -1){ + selection = "${Sms.THREAD_ID} = ?" + selectionArgs = arrayOf(threadId.toString()) + } else if(threadId != null && dateFrom != -1){ + selection = "${Sms.THREAD_ID} = ? AND ${Sms.DATE} < ${dateFrom.toLong()}" + selectionArgs = arrayOf(threadId.toString()) } val messages = ArrayList()