|
@@ -4,6 +4,7 @@ import androidx.lifecycle.LiveData
|
|
import io.nexilis.service.Service
|
|
import io.nexilis.service.Service
|
|
import io.nexilis.service.core.Data
|
|
import io.nexilis.service.core.Data
|
|
import io.nexilis.service.core.toStupidString
|
|
import io.nexilis.service.core.toStupidString
|
|
|
|
+import io.nexilis.service.data.daos.GroupMemberDao
|
|
import io.nexilis.service.data.daos.MessageDao
|
|
import io.nexilis.service.data.daos.MessageDao
|
|
import io.nexilis.service.data.daos.MessageStatusDao
|
|
import io.nexilis.service.data.daos.MessageStatusDao
|
|
import io.nexilis.service.data.entities.MainEntity
|
|
import io.nexilis.service.data.entities.MainEntity
|
|
@@ -13,7 +14,8 @@ import javax.inject.Inject
|
|
|
|
|
|
class MessageRepository @Inject constructor(
|
|
class MessageRepository @Inject constructor(
|
|
private val dao: MessageDao,
|
|
private val dao: MessageDao,
|
|
- private val daoStatus: MessageStatusDao
|
|
|
|
|
|
+ private val messageStatusDao: MessageStatusDao,
|
|
|
|
+ private val groupMemberDao: GroupMemberDao
|
|
) : Repository {
|
|
) : Repository {
|
|
|
|
|
|
val all: LiveData<List<Message>> = dao.getAll()
|
|
val all: LiveData<List<Message>> = dao.getAll()
|
|
@@ -33,6 +35,36 @@ class MessageRepository @Inject constructor(
|
|
suspend fun send(entity: MainEntity) {
|
|
suspend fun send(entity: MainEntity) {
|
|
val message = entity as Message
|
|
val message = entity as Message
|
|
dao.insert(message)
|
|
dao.insert(message)
|
|
|
|
+ if (message.message_scope_id == "4") {
|
|
|
|
+ val id = message.chat_id.ifEmpty { message.l_pin }
|
|
|
|
+ groupMemberDao.get(id).value?.let {
|
|
|
|
+ it.forEach { member ->
|
|
|
|
+ messageStatusDao.insert(
|
|
|
|
+ MessageStatus(
|
|
|
|
+ message_id = message.message_id,
|
|
|
|
+ f_pin = member.f_pin,
|
|
|
|
+ user_id = member.f_pin,
|
|
|
|
+ last_update = System.currentTimeMillis(),
|
|
|
|
+ time_delivered = 0,
|
|
|
|
+ time_read = 0,
|
|
|
|
+ time_ack = 0,
|
|
|
|
+ )
|
|
|
|
+ )
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ messageStatusDao.insert(
|
|
|
|
+ MessageStatus(
|
|
|
|
+ message_id = message.message_id,
|
|
|
|
+ f_pin = message.opposite_pin,
|
|
|
|
+ user_id = message.opposite_pin,
|
|
|
|
+ last_update = System.currentTimeMillis(),
|
|
|
|
+ time_delivered = 0,
|
|
|
|
+ time_read = 0,
|
|
|
|
+ time_ack = 0,
|
|
|
|
+ )
|
|
|
|
+ )
|
|
|
|
+ }
|
|
val bodies = mutableMapOf(
|
|
val bodies = mutableMapOf(
|
|
"A18" to message.message_id,
|
|
"A18" to message.message_id,
|
|
"A00" to message.f_pin,
|
|
"A00" to message.f_pin,
|
|
@@ -90,17 +122,10 @@ class MessageRepository @Inject constructor(
|
|
bodies = bodies
|
|
bodies = bodies
|
|
)
|
|
)
|
|
)?.let {
|
|
)?.let {
|
|
- daoStatus.insert(
|
|
|
|
- MessageStatus(
|
|
|
|
- message_id = message.message_id,
|
|
|
|
- status = it.bodies["A15"]?.toInt() ?: 2, // delivering
|
|
|
|
- f_pin = message.opposite_pin,
|
|
|
|
- user_id = message.opposite_pin,
|
|
|
|
- last_update = System.currentTimeMillis(),
|
|
|
|
- time_delivered = 0,
|
|
|
|
- time_read = 0,
|
|
|
|
- time_ack = 0,
|
|
|
|
- )
|
|
|
|
|
|
+ messageStatusDao.updateStatus(
|
|
|
|
+ status = it.bodies["A15"]?.toInt() ?: 2, // delivering
|
|
|
|
+ messageId = message.message_id,
|
|
|
|
+ pin = message.opposite_pin
|
|
)
|
|
)
|
|
}
|
|
}
|
|
|
|
|