From 6fba0bfdd89cfa71051328dd523fefe0a12bcaba Mon Sep 17 00:00:00 2001 From: Naveen Singh Date: Fri, 27 Dec 2024 15:35:19 +0530 Subject: [PATCH] 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) } }