|
@@ -9,6 +9,7 @@ import androidx.work.OutOfQuotaPolicy
|
|
import androidx.work.WorkManager
|
|
import androidx.work.WorkManager
|
|
import androidx.work.WorkRequest
|
|
import androidx.work.WorkRequest
|
|
import androidx.work.workDataOf
|
|
import androidx.work.workDataOf
|
|
|
|
+import io.nexilis.service.apiScope
|
|
import io.nexilis.service.core.Outgoing
|
|
import io.nexilis.service.core.Outgoing
|
|
import io.nexilis.service.data.daos.GroupMemberDao
|
|
import io.nexilis.service.data.daos.GroupMemberDao
|
|
import io.nexilis.service.data.daos.MessageDao
|
|
import io.nexilis.service.data.daos.MessageDao
|
|
@@ -16,7 +17,9 @@ import io.nexilis.service.data.daos.MessageStatusDao
|
|
import io.nexilis.service.data.entities.MainEntity
|
|
import io.nexilis.service.data.entities.MainEntity
|
|
import io.nexilis.service.data.entities.Message
|
|
import io.nexilis.service.data.entities.Message
|
|
import io.nexilis.service.data.entities.MessageStatus
|
|
import io.nexilis.service.data.entities.MessageStatus
|
|
|
|
+import io.nexilis.service.tag
|
|
import kotlinx.coroutines.Dispatchers
|
|
import kotlinx.coroutines.Dispatchers
|
|
|
|
+import kotlinx.coroutines.launch
|
|
import kotlinx.coroutines.withContext
|
|
import kotlinx.coroutines.withContext
|
|
import java.util.UUID
|
|
import java.util.UUID
|
|
import javax.inject.Inject
|
|
import javax.inject.Inject
|
|
@@ -44,8 +47,7 @@ class MessageRepository @Inject constructor(
|
|
|
|
|
|
suspend fun send(
|
|
suspend fun send(
|
|
context: Context,
|
|
context: Context,
|
|
- entity: MainEntity,
|
|
|
|
- completion: (String, String, Int) -> Unit
|
|
|
|
|
|
+ entity: MainEntity
|
|
) {
|
|
) {
|
|
val message = entity as Message
|
|
val message = entity as Message
|
|
dao.insert(message)
|
|
dao.insert(message)
|
|
@@ -93,20 +95,27 @@ class MessageRepository @Inject constructor(
|
|
.build()
|
|
.build()
|
|
WorkManager.getInstance(context).enqueue(workRequest)
|
|
WorkManager.getInstance(context).enqueue(workRequest)
|
|
withContext(Dispatchers.Main) {
|
|
withContext(Dispatchers.Main) {
|
|
- WorkManager.getInstance(context).getWorkInfoByIdLiveData(id).observe(context as ComponentActivity) { workInfo ->
|
|
|
|
- if (workInfo.state.isFinished) {
|
|
|
|
- Log.d(
|
|
|
|
- "SAPI",
|
|
|
|
- "update from work:${workInfo.outputData.getString("message_id")}:${
|
|
|
|
- workInfo.outputData.getString("opposite_pin")
|
|
|
|
- }:${workInfo.outputData.getInt("status", 0)}"
|
|
|
|
- )
|
|
|
|
- completion(workInfo.outputData.getString("message_id") ?: "",
|
|
|
|
- workInfo.outputData.getString("opposite_pin") ?: "",
|
|
|
|
- workInfo.outputData.getInt("status", 0)
|
|
|
|
|
|
+ WorkManager.getInstance(context).getWorkInfoByIdLiveData(id)
|
|
|
|
+ .observe(context as ComponentActivity) { workInfo ->
|
|
|
|
+ if (workInfo.state.isFinished) {
|
|
|
|
+ val messageId = workInfo.outputData.getString("message_id") ?: ""
|
|
|
|
+ val pin = workInfo.outputData.getString("opposite_pin") ?: ""
|
|
|
|
+ val status = workInfo.outputData.getInt("status", 0)
|
|
|
|
+ Log.d(
|
|
|
|
+ tag,
|
|
|
|
+ "update from work:$messageId:$pin:$status"
|
|
)
|
|
)
|
|
|
|
+ apiScope.launch(Dispatchers.IO) {
|
|
|
|
+ if (messageId.isNotEmpty()) {
|
|
|
|
+ messageStatusDao.updateStatus(
|
|
|
|
+ status,
|
|
|
|
+ messageId = messageId,
|
|
|
|
+ pin = pin
|
|
|
|
+ )
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|
|
- }
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|