improve message marking after delivery to avoid glitching
This commit is contained in:
parent
da4f476bce
commit
d02df0a1a2
|
@ -30,7 +30,7 @@ interface MessagesDao {
|
||||||
fun markThreadRead(threadId: Long)
|
fun markThreadRead(threadId: Long)
|
||||||
|
|
||||||
@Query("UPDATE messages SET type = :type WHERE id = :id")
|
@Query("UPDATE messages SET type = :type WHERE id = :id")
|
||||||
fun updateType(id: Long, type: Int)
|
fun updateType(id: Long, type: Int): Int
|
||||||
|
|
||||||
@Query("DELETE FROM messages WHERE id = :id")
|
@Query("DELETE FROM messages WHERE id = :id")
|
||||||
fun delete(id: Long)
|
fun delete(id: Long)
|
||||||
|
|
|
@ -4,6 +4,8 @@ import android.content.BroadcastReceiver
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
|
import android.os.Handler
|
||||||
|
import android.os.Looper
|
||||||
import android.provider.Telephony
|
import android.provider.Telephony
|
||||||
import com.simplemobiletools.commons.helpers.ensureBackgroundThread
|
import com.simplemobiletools.commons.helpers.ensureBackgroundThread
|
||||||
import com.simplemobiletools.smsmessenger.extensions.messagesDB
|
import com.simplemobiletools.smsmessenger.extensions.messagesDB
|
||||||
|
@ -15,11 +17,19 @@ class SmsStatusDeliveredReceiver : BroadcastReceiver() {
|
||||||
override fun onReceive(context: Context, intent: Intent) {
|
override fun onReceive(context: Context, intent: Intent) {
|
||||||
if (intent.extras?.containsKey("message_uri") == true) {
|
if (intent.extras?.containsKey("message_uri") == true) {
|
||||||
val uri = Uri.parse(intent.getStringExtra("message_uri"))
|
val uri = Uri.parse(intent.getStringExtra("message_uri"))
|
||||||
val id = uri?.lastPathSegment?.toLong() ?: 0L
|
val messageId = uri?.lastPathSegment?.toLong() ?: 0L
|
||||||
ensureBackgroundThread {
|
ensureBackgroundThread {
|
||||||
val type = Telephony.Sms.MESSAGE_TYPE_SENT
|
val type = Telephony.Sms.MESSAGE_TYPE_SENT
|
||||||
context.updateMessageType(id, type)
|
context.updateMessageType(messageId, type)
|
||||||
context.messagesDB.updateType(id, type)
|
val updated = context.messagesDB.updateType(messageId, type)
|
||||||
|
if (updated == 0) {
|
||||||
|
Handler(Looper.getMainLooper()).postDelayed({
|
||||||
|
ensureBackgroundThread {
|
||||||
|
context.messagesDB.updateType(messageId, type)
|
||||||
|
}
|
||||||
|
}, 2000)
|
||||||
|
}
|
||||||
|
|
||||||
refreshMessages()
|
refreshMessages()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue