mirror of
https://github.com/SimpleMobileTools/Simple-SMS-Messenger.git
synced 2025-02-18 12:40:46 +01:00
create a db table for Messages too
This commit is contained in:
parent
b955678e90
commit
633f7cf5c0
@ -11,11 +11,13 @@ import com.simplemobiletools.smsmessenger.helpers.Converters
|
|||||||
import com.simplemobiletools.smsmessenger.interfaces.AttachmentsDao
|
import com.simplemobiletools.smsmessenger.interfaces.AttachmentsDao
|
||||||
import com.simplemobiletools.smsmessenger.interfaces.ConversationsDao
|
import com.simplemobiletools.smsmessenger.interfaces.ConversationsDao
|
||||||
import com.simplemobiletools.smsmessenger.interfaces.MessageAttachmentsDao
|
import com.simplemobiletools.smsmessenger.interfaces.MessageAttachmentsDao
|
||||||
|
import com.simplemobiletools.smsmessenger.interfaces.MessagesDao
|
||||||
import com.simplemobiletools.smsmessenger.models.Attachment
|
import com.simplemobiletools.smsmessenger.models.Attachment
|
||||||
import com.simplemobiletools.smsmessenger.models.Conversation
|
import com.simplemobiletools.smsmessenger.models.Conversation
|
||||||
|
import com.simplemobiletools.smsmessenger.models.Message
|
||||||
import com.simplemobiletools.smsmessenger.models.MessageAttachment
|
import com.simplemobiletools.smsmessenger.models.MessageAttachment
|
||||||
|
|
||||||
@Database(entities = [Conversation::class, Attachment::class, MessageAttachment::class], version = 2)
|
@Database(entities = [Conversation::class, Attachment::class, MessageAttachment::class, Message::class], version = 2)
|
||||||
@TypeConverters(Converters::class)
|
@TypeConverters(Converters::class)
|
||||||
abstract class MessagesDatabase : RoomDatabase() {
|
abstract class MessagesDatabase : RoomDatabase() {
|
||||||
|
|
||||||
@ -25,6 +27,8 @@ abstract class MessagesDatabase : RoomDatabase() {
|
|||||||
|
|
||||||
abstract fun MessageAttachmentsDao(): MessageAttachmentsDao
|
abstract fun MessageAttachmentsDao(): MessageAttachmentsDao
|
||||||
|
|
||||||
|
abstract fun MessagesDao(): MessagesDao
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
private var db: MessagesDatabase? = null
|
private var db: MessagesDatabase? = null
|
||||||
|
|
||||||
@ -44,6 +48,8 @@ abstract class MessagesDatabase : RoomDatabase() {
|
|||||||
|
|
||||||
private val MIGRATION_1_2 = object : Migration(1, 2) {
|
private val MIGRATION_1_2 = object : Migration(1, 2) {
|
||||||
override fun migrate(database: SupportSQLiteDatabase) {
|
override fun migrate(database: SupportSQLiteDatabase) {
|
||||||
|
database.execSQL("CREATE TABLE IF NOT EXISTS `messages` (`id` INTEGER PRIMARY KEY NOT NULL, `body` TEXT NOT NULL, `type` INTEGER NOT NULL, `participants` TEXT NOT NULL, `date` INTEGER NOT NULL, `read` INTEGER NOT NULL, `thread` INTEGER NOT NULL, `is_mms` INTEGER NOT NULL, `attachment` TEXT, `sender_name` TEXT NOT NULL, `sender_photo_uri` TEXT NOT NULL, `subscription_id` INTEGER NOT NULL)")
|
||||||
|
|
||||||
database.execSQL("CREATE TABLE IF NOT EXISTS `message_attachments` (`id` INTEGER PRIMARY KEY NOT NULL, `text` TEXT NOT NULL, `attachments` TEXT NOT NULL)")
|
database.execSQL("CREATE TABLE IF NOT EXISTS `message_attachments` (`id` INTEGER PRIMARY KEY NOT NULL, `text` TEXT NOT NULL, `attachments` TEXT NOT NULL)")
|
||||||
|
|
||||||
database.execSQL("CREATE TABLE IF NOT EXISTS `attachments` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `message_id` INTEGER NOT NULL, `uri_string` TEXT NOT NULL, `mimetype` TEXT NOT NULL, `width` INTEGER NOT NULL, `height` INTEGER NOT NULL, `filename` TEXT NOT NULL)")
|
database.execSQL("CREATE TABLE IF NOT EXISTS `attachments` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `message_id` INTEGER NOT NULL, `uri_string` TEXT NOT NULL, `mimetype` TEXT NOT NULL, `width` INTEGER NOT NULL, `height` INTEGER NOT NULL, `filename` TEXT NOT NULL)")
|
||||||
|
@ -30,6 +30,7 @@ import com.simplemobiletools.smsmessenger.helpers.*
|
|||||||
import com.simplemobiletools.smsmessenger.interfaces.AttachmentsDao
|
import com.simplemobiletools.smsmessenger.interfaces.AttachmentsDao
|
||||||
import com.simplemobiletools.smsmessenger.interfaces.ConversationsDao
|
import com.simplemobiletools.smsmessenger.interfaces.ConversationsDao
|
||||||
import com.simplemobiletools.smsmessenger.interfaces.MessageAttachmentsDao
|
import com.simplemobiletools.smsmessenger.interfaces.MessageAttachmentsDao
|
||||||
|
import com.simplemobiletools.smsmessenger.interfaces.MessagesDao
|
||||||
import com.simplemobiletools.smsmessenger.models.*
|
import com.simplemobiletools.smsmessenger.models.*
|
||||||
import com.simplemobiletools.smsmessenger.receivers.DirectReplyReceiver
|
import com.simplemobiletools.smsmessenger.receivers.DirectReplyReceiver
|
||||||
import com.simplemobiletools.smsmessenger.receivers.MarkAsReadReceiver
|
import com.simplemobiletools.smsmessenger.receivers.MarkAsReadReceiver
|
||||||
@ -47,6 +48,8 @@ val Context.attachmentsDB: AttachmentsDao get() = getMessagessDB().AttachmentsDa
|
|||||||
|
|
||||||
val Context.messageAttachmentsDB: MessageAttachmentsDao get() = getMessagessDB().MessageAttachmentsDao()
|
val Context.messageAttachmentsDB: MessageAttachmentsDao get() = getMessagessDB().MessageAttachmentsDao()
|
||||||
|
|
||||||
|
val Context.messagesDB: MessagesDao get() = getMessagessDB().MessagesDao()
|
||||||
|
|
||||||
fun Context.getMessages(threadId: Int): ArrayList<Message> {
|
fun Context.getMessages(threadId: Int): ArrayList<Message> {
|
||||||
val uri = Sms.CONTENT_URI
|
val uri = Sms.CONTENT_URI
|
||||||
val projection = arrayOf(
|
val projection = arrayOf(
|
||||||
|
@ -3,15 +3,31 @@ package com.simplemobiletools.smsmessenger.helpers
|
|||||||
import androidx.room.TypeConverter
|
import androidx.room.TypeConverter
|
||||||
import com.google.gson.Gson
|
import com.google.gson.Gson
|
||||||
import com.google.gson.reflect.TypeToken
|
import com.google.gson.reflect.TypeToken
|
||||||
|
import com.simplemobiletools.commons.models.SimpleContact
|
||||||
import com.simplemobiletools.smsmessenger.models.Attachment
|
import com.simplemobiletools.smsmessenger.models.Attachment
|
||||||
|
import com.simplemobiletools.smsmessenger.models.MessageAttachment
|
||||||
|
|
||||||
class Converters {
|
class Converters {
|
||||||
private val gson = Gson()
|
private val gson = Gson()
|
||||||
private val attachmentType = object : TypeToken<List<Attachment>>() {}.type
|
private val attachmentType = object : TypeToken<List<Attachment>>() {}.type
|
||||||
|
private val simpleContactType = object : TypeToken<List<SimpleContact>>() {}.type
|
||||||
|
private val messageAttachmentType = object : TypeToken<MessageAttachment>() {}.type
|
||||||
|
|
||||||
@TypeConverter
|
@TypeConverter
|
||||||
fun jsonToAttachmentList(value: String) = gson.fromJson<ArrayList<Attachment>>(value, attachmentType)
|
fun jsonToAttachmentList(value: String) = gson.fromJson<ArrayList<Attachment>>(value, attachmentType)
|
||||||
|
|
||||||
@TypeConverter
|
@TypeConverter
|
||||||
fun attachmentListToJson(list: ArrayList<Attachment>) = gson.toJson(list)
|
fun attachmentListToJson(list: ArrayList<Attachment>) = gson.toJson(list)
|
||||||
|
|
||||||
|
@TypeConverter
|
||||||
|
fun jsonToSimpleContactList(value: String) = gson.fromJson<ArrayList<SimpleContact>>(value, simpleContactType)
|
||||||
|
|
||||||
|
@TypeConverter
|
||||||
|
fun simpleContactListToJson(list: ArrayList<SimpleContact>) = gson.toJson(list)
|
||||||
|
|
||||||
|
@TypeConverter
|
||||||
|
fun jsonToMessageAttachment(value: String) = gson.fromJson<MessageAttachment>(value, messageAttachmentType)
|
||||||
|
|
||||||
|
@TypeConverter
|
||||||
|
fun messageAttachmentToJson(messageAttachment: MessageAttachment) = gson.toJson(messageAttachment)
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,11 @@
|
|||||||
|
package com.simplemobiletools.smsmessenger.interfaces
|
||||||
|
|
||||||
|
import androidx.room.Dao
|
||||||
|
import androidx.room.Query
|
||||||
|
import com.simplemobiletools.smsmessenger.models.Message
|
||||||
|
|
||||||
|
@Dao
|
||||||
|
interface MessagesDao {
|
||||||
|
@Query("SELECT * FROM messages")
|
||||||
|
fun getAll(): List<Message>
|
||||||
|
}
|
@ -1,10 +1,25 @@
|
|||||||
package com.simplemobiletools.smsmessenger.models
|
package com.simplemobiletools.smsmessenger.models
|
||||||
|
|
||||||
import android.provider.Telephony
|
import android.provider.Telephony
|
||||||
|
import androidx.room.ColumnInfo
|
||||||
|
import androidx.room.Entity
|
||||||
|
import androidx.room.PrimaryKey
|
||||||
import com.simplemobiletools.commons.models.SimpleContact
|
import com.simplemobiletools.commons.models.SimpleContact
|
||||||
|
|
||||||
|
@Entity(tableName = "messages")
|
||||||
data class Message(
|
data class Message(
|
||||||
val id: Long, val body: String, val type: Int, val participants: ArrayList<SimpleContact>, val date: Int, val read: Boolean, val thread: Int,
|
@PrimaryKey val id: Long,
|
||||||
val isMMS: Boolean, val attachment: MessageAttachment?, var senderName: String, val senderPhotoUri: String, val subscriptionId: Int) : ThreadItem() {
|
@ColumnInfo(name = "body") val body: String,
|
||||||
|
@ColumnInfo(name = "type") val type: Int,
|
||||||
|
@ColumnInfo(name = "participants") val participants: ArrayList<SimpleContact>,
|
||||||
|
@ColumnInfo(name = "date") val date: Int,
|
||||||
|
@ColumnInfo(name = "read") val read: Boolean,
|
||||||
|
@ColumnInfo(name = "thread") val thread: Int,
|
||||||
|
@ColumnInfo(name = "is_mms") val isMMS: Boolean,
|
||||||
|
@ColumnInfo(name = "attachment") val attachment: MessageAttachment?,
|
||||||
|
@ColumnInfo(name = "sender_name") var senderName: String,
|
||||||
|
@ColumnInfo(name = "sender_photo_uri") val senderPhotoUri: String,
|
||||||
|
@ColumnInfo(name = "subscription_id") val subscriptionId: Int) : ThreadItem() {
|
||||||
|
|
||||||
fun isReceivedMessage() = type == Telephony.Sms.MESSAGE_TYPE_INBOX
|
fun isReceivedMessage() = type == Telephony.Sms.MESSAGE_TYPE_INBOX
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user