yayan 1 an în urmă
părinte
comite
b6805b01c8

+ 7 - 1
app/src/main/java/io/nexilis/alpha/ui/components/BubleChat.kt

@@ -15,6 +15,7 @@ import androidx.compose.foundation.layout.width
 import androidx.compose.foundation.shape.RoundedCornerShape
 import androidx.compose.material.icons.Icons
 import androidx.compose.material.icons.filled.AccessTime
+import androidx.compose.material.icons.filled.Close
 import androidx.compose.material.icons.filled.Done
 import androidx.compose.material.icons.filled.DoneAll
 import androidx.compose.material3.Icon
@@ -78,13 +79,18 @@ fun RightBubbleChat(
                     1, 2 -> Icons.Default.Done
                     3 -> Icons.Default.DoneAll
                     4 -> Icons.Default.DoneAll
+                    5 -> Icons.Default.Close
                     else -> Icons.Default.AccessTime
                 },
                 contentDescription = "",
                 modifier = Modifier
                     .align(Alignment.Bottom)
                     .size(16.dp),
-                tint = if (messageStatus?.status == 4) Color.BlueSky else Color.Gray
+                tint = when (messageStatus?.status) {
+                    4 -> Color.BlueSky
+                    5 -> Color.Red
+                    else -> Color.Gray
+                }
             )
         }
     }

+ 12 - 1
cpaas-lite/src/main/java/io/nexilis/service/core/Outgoing.kt

@@ -23,9 +23,13 @@ import java.io.File
 class Outgoing(private val context: Context, parameters: WorkerParameters) :
     CoroutineWorker(context, parameters) {
     override suspend fun doWork(): Result {
+        var id: String? = null
+        var pin: String? = null
         try {
             inputData.getString("data")?.let {
                 ApiRoomDatabase.getDatabase(context).messageDao().getSync(it)?.let { message ->
+                    id = message.message_id
+                    pin = message.opposite_pin
                     val bodies = mutableMapOf(
                         "A18" to message.message_id,
                         "A00" to message.f_pin,
@@ -107,7 +111,14 @@ class Outgoing(private val context: Context, parameters: WorkerParameters) :
                 }
             }
         } catch (e: Exception) {
-            return Result.failure()
+            Log.e(tag, e.message, e)
+            return Result.failure(
+                workDataOf(
+                    "message_id" to id,
+                    "opposite_pin" to pin,
+                    "status" to 5
+                )
+            )
         }
         return Result.retry()
     }

+ 8 - 6
cpaas-lite/src/main/java/io/nexilis/service/data/viewmodels/MessageViewModel.kt

@@ -62,12 +62,14 @@ class MessageViewModel @Inject constructor(
                 }
             }
             repository.send(context, entity) { id, pin, status ->
-                viewModelScope.launch(Dispatchers.IO) {
-                    messageStatusDao.updateStatus(
-                        status,
-                        messageId = id,
-                        pin = pin
-                    )
+                if (id.isNotEmpty()) {
+                    viewModelScope.launch(Dispatchers.IO) {
+                        messageStatusDao.updateStatus(
+                            status,
+                            messageId = id,
+                            pin = pin
+                        )
+                    }
                 }
             }
         }