store received messages in hte local db asap

This commit is contained in:
tibbi 2020-12-21 22:56:10 +01:00
parent 9aba85b967
commit 733428da38
2 changed files with 9 additions and 3 deletions

View File

@ -471,7 +471,7 @@ fun Context.getNameAndPhotoFromPhoneNumber(number: String): NamePhoto {
return NamePhoto(number, null)
}
fun Context.insertNewSMS(address: String, subject: String, body: String, date: Long, read: Int, threadId: Long, type: Int, subscriptionId: Int): Int {
fun Context.insertNewSMS(address: String, subject: String, body: String, date: Long, read: Int, threadId: Long, type: Int, subscriptionId: Int): Long {
val uri = Sms.CONTENT_URI
val contentValues = ContentValues().apply {
put(Sms.ADDRESS, address)
@ -485,7 +485,7 @@ fun Context.insertNewSMS(address: String, subject: String, body: String, date: L
}
val newUri = contentResolver.insert(uri, contentValues)
return newUri?.lastPathSegment?.toInt() ?: 0
return newUri?.lastPathSegment?.toLong() ?: 0L
}
fun Context.deleteConversation(threadId: Long) {

View File

@ -8,8 +8,10 @@ import android.os.Looper
import android.provider.Telephony
import com.simplemobiletools.commons.extensions.isNumberBlocked
import com.simplemobiletools.commons.helpers.ensureBackgroundThread
import com.simplemobiletools.commons.models.SimpleContact
import com.simplemobiletools.smsmessenger.extensions.*
import com.simplemobiletools.smsmessenger.helpers.refreshMessages
import com.simplemobiletools.smsmessenger.models.Message
class SmsReceiver : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
@ -35,11 +37,15 @@ class SmsReceiver : BroadcastReceiver() {
Handler(Looper.getMainLooper()).post {
if (!context.isNumberBlocked(address)) {
ensureBackgroundThread {
context.insertNewSMS(address, subject, body, date, read, threadId, type, subscriptionId)
val newMessageId = context.insertNewSMS(address, subject, body, date, read, threadId, type, subscriptionId)
val conversation = context.getConversations(threadId).firstOrNull() ?: return@ensureBackgroundThread
context.conversationsDB.insertOrUpdate(conversation)
context.updateUnreadCountBadge(context.conversationsDB.getUnreadConversations())
val participant = SimpleContact(0, 0, address, "", arrayListOf(address), ArrayList(), ArrayList())
val message = Message(newMessageId, body, type, arrayListOf(participant), (date / 1000).toInt(), false, threadId, false, null, address, "", subscriptionId)
context.messagesDB.insertOrUpdate(message)
}
context.showReceivedMessageNotification(address, body, threadId, null)