From 8dd3fc561fc86d3f3c860f5dee5f35692b4984ec Mon Sep 17 00:00:00 2001 From: tibbi Date: Sat, 30 May 2020 20:29:37 +0200 Subject: [PATCH] mark messages as read in the local db too --- .../smsmessenger/activities/ThreadActivity.kt | 1 + .../smsmessenger/extensions/Context.kt | 5 +++-- .../smsmessenger/interfaces/ConversationsDao.kt | 3 +++ .../smsmessenger/receivers/MarkAsReadReceiver.kt | 12 ++++++++++-- 4 files changed, 17 insertions(+), 4 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt index 21c789f9..83773bd2 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt @@ -421,6 +421,7 @@ class ThreadActivity : SimpleActivity() { if (!it.read) { hadUnreadItems = true markMessageRead(it.id, it.isMMS) + conversationsDB.markRead(threadId.toLong()) } } 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 9971c827..8e89f984 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt @@ -468,8 +468,6 @@ fun Context.insertNewSMS(address: String, subject: String, body: String, date: L } fun Context.deleteConversation(threadId: Int) { - conversationsDB.deleteThreadId(threadId.toLong()) - var uri = Sms.CONTENT_URI val selection = "${Sms.THREAD_ID} = ?" val selectionArgs = arrayOf(threadId.toString()) @@ -477,6 +475,8 @@ fun Context.deleteConversation(threadId: Int) { uri = Mms.CONTENT_URI contentResolver.delete(uri, selection, selectionArgs) + + conversationsDB.deleteThreadId(threadId.toLong()) } fun Context.deleteMessage(id: Int, isMMS: Boolean) { @@ -550,6 +550,7 @@ fun Context.showReceivedMessageNotification(address: String, body: String, threa action = MARK_AS_READ putExtra(MESSAGE_ID, messageId) putExtra(MESSAGE_IS_MMS, isMMS) + putExtra(THREAD_ID, threadID) } val markAsReadPendingIntent = PendingIntent.getBroadcast(this, 0, markAsReadIntent, PendingIntent.FLAG_CANCEL_CURRENT) diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/interfaces/ConversationsDao.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/interfaces/ConversationsDao.kt index 2f729a36..422245ce 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/interfaces/ConversationsDao.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/interfaces/ConversationsDao.kt @@ -14,6 +14,9 @@ interface ConversationsDao { @Query("SELECT * FROM conversations") fun getAll(): List + @Query("UPDATE conversations SET read = 1 WHERE thread_id = :threadId") + fun markRead(threadId: Long) + @Query("DELETE FROM conversations WHERE id = :id") fun delete(id: Long) diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/MarkAsReadReceiver.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/MarkAsReadReceiver.kt index f0cdff85..6dc79f93 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/MarkAsReadReceiver.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/MarkAsReadReceiver.kt @@ -4,19 +4,27 @@ import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import com.simplemobiletools.commons.extensions.notificationManager +import com.simplemobiletools.commons.helpers.ensureBackgroundThread +import com.simplemobiletools.smsmessenger.extensions.conversationsDB import com.simplemobiletools.smsmessenger.extensions.markMessageRead import com.simplemobiletools.smsmessenger.helpers.MARK_AS_READ import com.simplemobiletools.smsmessenger.helpers.MESSAGE_ID import com.simplemobiletools.smsmessenger.helpers.MESSAGE_IS_MMS +import com.simplemobiletools.smsmessenger.helpers.THREAD_ID class MarkAsReadReceiver : BroadcastReceiver() { override fun onReceive(context: Context, intent: Intent) { when (intent.action) { MARK_AS_READ -> { val messageId = intent.getIntExtra(MESSAGE_ID, 0) - val isMMS = intent.getBooleanExtra(MESSAGE_IS_MMS, false) - context.markMessageRead(messageId, isMMS) context.notificationManager.cancel(messageId) + ensureBackgroundThread { + val isMMS = intent.getBooleanExtra(MESSAGE_IS_MMS, false) + context.markMessageRead(messageId, isMMS) + + val threadId = intent.getIntExtra(THREAD_ID, 0) + context.conversationsDB.markRead(threadId.toLong()) + } } } }