From b1d54524592a9eb982beaf80958f9f46dda57540 Mon Sep 17 00:00:00 2001 From: Naveen Singh Date: Sun, 5 Jan 2025 04:12:09 +0530 Subject: [PATCH] Clear empty drafts caused by version 1.1.1 See https://github.com/FossifyOrg/Messages/issues/274 --- .../fossify/messages/activities/MainActivity.kt | 3 ++- .../org/fossify/messages/extensions/Context.kt | 17 +++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/app/src/main/kotlin/org/fossify/messages/activities/MainActivity.kt b/app/src/main/kotlin/org/fossify/messages/activities/MainActivity.kt index 3399990a..56edd2d4 100644 --- a/app/src/main/kotlin/org/fossify/messages/activities/MainActivity.kt +++ b/app/src/main/kotlin/org/fossify/messages/activities/MainActivity.kt @@ -60,6 +60,7 @@ import org.fossify.messages.databinding.ActivityMainBinding import org.fossify.messages.extensions.checkAndDeleteOldRecycleBinMessages import org.fossify.messages.extensions.clearAllMessagesIfNeeded import org.fossify.messages.extensions.clearExpiredScheduledMessages +import org.fossify.messages.extensions.clearSystemDrafts import org.fossify.messages.extensions.config import org.fossify.messages.extensions.conversationsDB import org.fossify.messages.extensions.getConversations @@ -287,7 +288,7 @@ class MainActivity : SimpleActivity() { checkWhatsNewDialog() storeStateVariables() getCachedConversations() - + clearSystemDrafts() binding.noConversationsPlaceholder2.setOnClickListener { launchNewConversation() } diff --git a/app/src/main/kotlin/org/fossify/messages/extensions/Context.kt b/app/src/main/kotlin/org/fossify/messages/extensions/Context.kt index 60652940..d254c5ca 100644 --- a/app/src/main/kotlin/org/fossify/messages/extensions/Context.kt +++ b/app/src/main/kotlin/org/fossify/messages/extensions/Context.kt @@ -1102,6 +1102,23 @@ fun Context.deleteSmsDraft(threadId: Long) { } } +// Revert changes done by version 1.1.1 (https://github.com/FossifyOrg/Messages/issues/274) +fun Context.clearSystemDrafts() { + ensureBackgroundThread { + val uri = Sms.Draft.CONTENT_URI + val projection = arrayOf(Sms._ID, Sms.BODY) + queryCursor(uri = uri, projection = projection) { cursor -> + val draftId = cursor.getLongValue(Sms._ID) + val body = cursor.getStringValue(Sms.BODY) ?: return@queryCursor + if (body.isEmpty() || body.isBlank()) { + val draftUri = Uri.withAppendedPath(Sms.CONTENT_URI, "/${draftId}") + contentResolver.delete(draftUri, null, null) + return@queryCursor + } + } + } +} + fun Context.updateLastConversationMessage(threadId: Long) { updateLastConversationMessage(setOf(threadId)) }