From 6fba0bfdd89cfa71051328dd523fefe0a12bcaba Mon Sep 17 00:00:00 2001 From: Naveen Singh Date: Fri, 27 Dec 2024 15:35:19 +0530 Subject: [PATCH 1/5] Clear drafts before saving new one This may resolve https://github.com/FossifyOrg/Messages/issues/13 --- .../org/fossify/messages/activities/ThreadActivity.kt | 6 +++--- .../kotlin/org/fossify/messages/extensions/Context.kt | 8 ++++++-- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/app/src/main/kotlin/org/fossify/messages/activities/ThreadActivity.kt b/app/src/main/kotlin/org/fossify/messages/activities/ThreadActivity.kt index 9dc18dd3..464e0e45 100644 --- a/app/src/main/kotlin/org/fossify/messages/activities/ThreadActivity.kt +++ b/app/src/main/kotlin/org/fossify/messages/activities/ThreadActivity.kt @@ -307,9 +307,9 @@ class ThreadActivity : SimpleActivity() { override fun onPause() { super.onPause() - - if (binding.messageHolder.threadTypeMessage.value != "" && getAttachmentSelections().isEmpty()) { - saveSmsDraft(binding.messageHolder.threadTypeMessage.value, threadId) + val draftMessage = binding.messageHolder.threadTypeMessage.value + if (draftMessage.isNotEmpty() && getAttachmentSelections().isEmpty()) { + saveSmsDraft(draftMessage, threadId) } else { deleteSmsDraft(threadId) } 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 26c6d226..a768cea1 100644 --- a/app/src/main/kotlin/org/fossify/messages/extensions/Context.kt +++ b/app/src/main/kotlin/org/fossify/messages/extensions/Context.kt @@ -1081,6 +1081,8 @@ fun Context.getAllDrafts(): HashMap { } fun Context.saveSmsDraft(body: String, threadId: Long) { + deleteSmsDraft(threadId) + val uri = Sms.Draft.CONTENT_URI val contentValues = ContentValues().apply { put(Sms.BODY, body) @@ -1092,6 +1094,7 @@ fun Context.saveSmsDraft(body: String, threadId: Long) { try { contentResolver.insert(uri, contentValues) } catch (e: Exception) { + showErrorToast(e) } } @@ -1102,14 +1105,15 @@ fun Context.deleteSmsDraft(threadId: Long) { val selectionArgs = arrayOf(threadId.toString()) try { val cursor = contentResolver.query(uri, projection, selection, selectionArgs, null) - cursor.use { - if (cursor?.moveToFirst() == true) { + cursor?.use { + while (cursor.moveToNext()) { val draftId = cursor.getLong(0) val draftUri = Uri.withAppendedPath(Sms.CONTENT_URI, "/${draftId}") contentResolver.delete(draftUri, null, null) } } } catch (e: Exception) { + showErrorToast(e) } } From 757d849875373caca60ad727c033888138f12109 Mon Sep 17 00:00:00 2001 From: Naveen Singh Date: Fri, 27 Dec 2024 16:30:07 +0530 Subject: [PATCH 2/5] Add divider between toolbar and messages --- app/src/main/res/layout/activity_thread.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/src/main/res/layout/activity_thread.xml b/app/src/main/res/layout/activity_thread.xml index 38b0272a..f4af118e 100644 --- a/app/src/main/res/layout/activity_thread.xml +++ b/app/src/main/res/layout/activity_thread.xml @@ -22,6 +22,10 @@ android:fillViewport="true" android:scrollbars="none"> + + Date: Fri, 27 Dec 2024 16:38:55 +0530 Subject: [PATCH 3/5] Use `queryCursor` extension for deleting drafts --- .../fossify/messages/extensions/Context.kt | 21 +++++++++---------- 1 file changed, 10 insertions(+), 11 deletions(-) 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 a768cea1..27ce85e1 100644 --- a/app/src/main/kotlin/org/fossify/messages/extensions/Context.kt +++ b/app/src/main/kotlin/org/fossify/messages/extensions/Context.kt @@ -1103,17 +1103,16 @@ fun Context.deleteSmsDraft(threadId: Long) { val projection = arrayOf(Sms._ID) val selection = "${Sms.THREAD_ID} = ?" val selectionArgs = arrayOf(threadId.toString()) - try { - val cursor = contentResolver.query(uri, projection, selection, selectionArgs, null) - cursor?.use { - while (cursor.moveToNext()) { - val draftId = cursor.getLong(0) - val draftUri = Uri.withAppendedPath(Sms.CONTENT_URI, "/${draftId}") - contentResolver.delete(draftUri, null, null) - } - } - } catch (e: Exception) { - showErrorToast(e) + queryCursor( + uri = uri, + projection = projection, + selection = selection, + selectionArgs = selectionArgs, + showErrors = true + ) { cursor -> + val draftId = cursor.getLongValue(Sms._ID) + val draftUri = Uri.withAppendedPath(Sms.CONTENT_URI, "/${draftId}") + contentResolver.delete(draftUri, null, null) } } From 787f4cb2e1784361026144c928d2ab9476b3f511 Mon Sep 17 00:00:00 2001 From: Naveen Singh Date: Fri, 27 Dec 2024 16:39:53 +0530 Subject: [PATCH 4/5] Clear typed messages for short codes --- .../kotlin/org/fossify/messages/activities/ThreadActivity.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/kotlin/org/fossify/messages/activities/ThreadActivity.kt b/app/src/main/kotlin/org/fossify/messages/activities/ThreadActivity.kt index 464e0e45..3893fa7d 100644 --- a/app/src/main/kotlin/org/fossify/messages/activities/ThreadActivity.kt +++ b/app/src/main/kotlin/org/fossify/messages/activities/ThreadActivity.kt @@ -969,6 +969,7 @@ class ThreadActivity : SimpleActivity() { private fun maybeDisableShortCodeReply() { if (isSpecialNumber() && !isRecycleBin) { + binding.messageHolder.threadTypeMessage.text?.clear() binding.messageHolder.root.beGone() binding.shortCodeHolder.root.beVisible() val textColor = getProperTextColor() From 43c30eda0800fc7454ce461c845b18079428c36c Mon Sep 17 00:00:00 2001 From: Naveen Singh Date: Fri, 27 Dec 2024 17:19:42 +0530 Subject: [PATCH 5/5] Remove unnecessary check --- .../org/fossify/messages/activities/MainActivity.kt | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) 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 929390ed..9da038aa 100644 --- a/app/src/main/kotlin/org/fossify/messages/activities/MainActivity.kt +++ b/app/src/main/kotlin/org/fossify/messages/activities/MainActivity.kt @@ -104,11 +104,9 @@ class MainActivity : SimpleActivity() { useTopSearchMenu = true ) - if (savedInstanceState == null) { - checkAndDeleteOldRecycleBinMessages() - clearAllMessagesIfNeeded { - loadMessages() - } + checkAndDeleteOldRecycleBinMessages() + clearAllMessagesIfNeeded { + loadMessages() } if (checkAppSideloading()) {