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

+ 24 - 24
app/src/main/java/io/nexilis/alpha/ui/components/ContentChat.kt

@@ -3,7 +3,6 @@ package io.nexilis.alpha.ui.components
 import android.graphics.BitmapFactory
 import androidx.compose.foundation.Image
 import androidx.compose.foundation.background
-import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.Column
 import androidx.compose.foundation.layout.Row
 import androidx.compose.foundation.layout.aspectRatio
@@ -134,7 +133,10 @@ fun ContentChat(modifier: Modifier = Modifier, message: Message) {
                     )
                     FileDesc(file = message.file_id)
                 }
-                FileProgress(message = message)
+                FileProgress(
+                    message = message,
+                    modifier = Modifier.align(Alignment.CenterVertically)
+                )
             }
             val messageText = message.message_text.split("|").last()
             if (messageText.isNotEmpty()) {
@@ -269,29 +271,27 @@ fun FileDesc(file: String, modifier: Modifier = Modifier) {
 fun FileProgress(message: Message, modifier: Modifier = Modifier) {
     val context = LocalContext.current
     val progressViewModel: ProgressViewModel = hiltViewModel()
-    Box {
-        val progress by progressViewModel.get(message.message_id).observeAsState()
-        progress?.let {
-            if (it.value > 0f && it.value < 1f) {
-                CircularProgressIndicator(
-                    progress = { it.value },
-                    modifier = modifier
-                        .size(32.dp),
-                )
-            }
-        }
-        val file = File(context.filesDir, message.file_id)
-        if (!file.exists()) {
-            IconButton(
-                onClick = { /*TODO*/ },
+    val progress by progressViewModel.get(message.message_id).observeAsState()
+    progress?.let {
+        if (it.value > 0f && it.value < 1f) {
+            CircularProgressIndicator(
+                progress = { it.value },
                 modifier = modifier
-            ) {
-                Icon(
-                    imageVector = Icons.Default.DownloadForOffline,
-                    contentDescription = null,
-                    tint = Color.LightGray
-                )
-            }
+                    .size(32.dp),
+            )
+        }
+    }
+    val file = File(context.filesDir, message.file_id)
+    if (!file.exists()) {
+        IconButton(
+            onClick = { /*TODO*/ },
+            modifier = modifier
+        ) {
+            Icon(
+                imageVector = Icons.Default.DownloadForOffline,
+                contentDescription = null,
+                tint = Color.LightGray
+            )
         }
     }
 }

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

@@ -84,15 +84,16 @@ class Outgoing(private val context: Context, parameters: WorkerParameters) :
                         f_pin = message.f_pin,
                         bodies = bodies
                     )
-                    val file = if (message.image_id.isNotEmpty()) message.image_id
+                    val fileName = if (message.image_id.isNotEmpty()) message.image_id
                     else if (message.audio_id.isNotEmpty()) message.audio_id
                     else if (message.video_id.isNotEmpty()) message.video_id
                     else message.file_id
-                    Log.d(tag, "message.file:$file")
-                    if (file.isNotEmpty()) {
+                    Log.d(tag, "message.fileName:$fileName")
+                    if (fileName.isNotEmpty()) {
+                        val file = File(context.filesDir, fileName)
                         val upload = Network().uploadSync(
                             "https://digixplatform.com/uploader",
-                            File(context.filesDir, file)
+                            file
                         ) { progress, length ->
                             setProgressAsync(
                                 workDataOf(
@@ -106,6 +107,13 @@ class Outgoing(private val context: Context, parameters: WorkerParameters) :
                             Log.d(tag, "Failed to upload image:${message.message_id}")
                             return Result.retry()
                         }
+                        setProgress(
+                            workDataOf(
+                                "message_id" to id,
+                                "progress" to file.length(),
+                                "length" to file.length()
+                            )
+                        )
                     }
                     Service.sendSync(data)?.let { r ->
                         return Result.success(