Skip to content

Commit

Permalink
Fix deletion of random SMS when trying to update threads
Browse files Browse the repository at this point in the history
Commit 44c540b (Fixed updating last message after deleting (FossifyOrg#167),
2021-09-04) introduced a hack to update the conversation snippet,
however there is a bug in that code: it tries to delete by thread ID,
but the condition is applied to the SMS table, not to the threads
table.[1] So instead of deleting the thread with that ID, it deletes
whichever SMS happens to have that ID.

The fix is to change the condition to an always-false condition, so
that no messages will be deleted. The threads will still get
updated.[2]

Fixes FossifyOrg#148.

[1] https://android.googlesource.com/platform/packages/providers/TelephonyProvider/+/android14-release/src/com/android/providers/telephony/MmsSmsProvider.java#1405
[2] https://android.googlesource.com/platform/packages/providers/TelephonyProvider/+/android14-release/src/com/android/providers/telephony/MmsSmsProvider.java#1409
  • Loading branch information
tom93 committed May 20, 2024
1 parent 1c7376c commit 99cea60
Showing 1 changed file with 5 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -990,11 +990,13 @@ fun Context.deleteSmsDraft(threadId: Long) {
}

fun Context.updateLastConversationMessage(threadId: Long) {
// update the date and the snippet of the thread, by triggering the
// following Android code (which runs even if no messages are deleted):
// https://android.googlesource.com/platform/packages/providers/TelephonyProvider/+/android14-release/src/com/android/providers/telephony/MmsSmsProvider.java#1409
val uri = Threads.CONTENT_URI
val selection = "${Threads._ID} = ?"
val selectionArgs = arrayOf(threadId.toString())
val selection = "1 = 0" // always-false condition, because we don't actually want to delete any messages
try {
contentResolver.delete(uri, selection, selectionArgs)
contentResolver.delete(uri, selection, null)
val newConversation = getConversations(threadId)[0]
insertOrUpdateConversation(newConversation)
} catch (e: Exception) {
Expand Down

0 comments on commit 99cea60

Please sign in to comment.