yayan 1 år sedan
förälder
incheckning
637efc97c9
1 ändrade filer med 73 tillägg och 2 borttagningar
  1. 73 2
      app/src/main/java/io/nexilis/alpha/ui/components/ContentChat.kt

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

@@ -1,14 +1,22 @@
 package io.nexilis.alpha.ui.components
 
 import androidx.compose.foundation.Image
+import androidx.compose.foundation.background
 import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Row
 import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.layout.size
 import androidx.compose.foundation.shape.RoundedCornerShape
+import androidx.compose.material.icons.Icons
+import androidx.compose.material.icons.automirrored.filled.InsertDriveFile
+import androidx.compose.material.icons.filled.Headset
+import androidx.compose.material3.Icon
 import androidx.compose.material3.MaterialTheme
 import androidx.compose.material3.Text
 import androidx.compose.runtime.Composable
+import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
+import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.graphics.graphicsLayer
 import androidx.compose.ui.layout.ContentScale
 import androidx.compose.ui.platform.LocalContext
@@ -16,6 +24,8 @@ import androidx.compose.ui.unit.dp
 import androidx.core.content.FileProvider
 import coil.compose.rememberAsyncImagePainter
 import io.nexilis.alpha.BuildConfig
+import io.nexilis.service.core.DarkLimeGreen
+import io.nexilis.service.core.Orange
 import io.nexilis.service.data.entities.Message
 
 @Composable
@@ -25,8 +35,7 @@ fun ContentChat(message: Message) {
         Column(modifier = Modifier.padding(3.dp)) {
             val file = context.getFileStreamPath(message.image_id)
             val uri = FileProvider.getUriForFile(
-                context,
-                BuildConfig.APPLICATION_ID + ".provider", file
+                context, BuildConfig.APPLICATION_ID + ".provider", file
             )
             Image(
                 painter = rememberAsyncImagePainter(uri),
@@ -47,6 +56,68 @@ fun ContentChat(message: Message) {
                 )
             }
         }
+    } else if (message.file_id.isNotEmpty()) {
+        Column(modifier = Modifier.padding(3.dp)) {
+            Row(modifier = Modifier
+                .graphicsLayer {
+                    shape = RoundedCornerShape(12.dp)
+                    clip = true
+                }
+                .background(MaterialTheme.colorScheme.surfaceContainerHigh)) {
+                Icon(
+                    modifier = Modifier
+                        .size(40.dp)
+                        .padding(start = 8.dp, top = 8.dp),
+                    imageVector = Icons.AutoMirrored.Filled.InsertDriveFile,
+                    contentDescription = null,
+                    tint = Color.DarkLimeGreen
+                )
+                Column(
+                    modifier = Modifier.padding(
+                        start = 4.dp,
+                        top = 8.dp,
+                        end = 8.dp,
+                        bottom = 8.dp
+                    )
+                ) {
+                    Text(
+                        text = message.message_text.split("|").first(),
+                        style = MaterialTheme.typography.bodyMedium,
+                    )
+                    Text(
+                        text = "11 KB • XLSX",
+                        style = MaterialTheme.typography.labelSmall,
+                    )
+                }
+            }
+            val messageText = message.message_text
+            if (messageText.isNotEmpty()) {
+                Text(
+                    modifier = Modifier.padding(8.dp),
+                    text = message.message_text.split("|").last(),
+                    style = MaterialTheme.typography.bodyMedium,
+                )
+            }
+        }
+    } else if (message.audio_id.isNotEmpty()) {
+        Column(modifier = Modifier.padding(3.dp)) {
+            Icon(
+                modifier = Modifier
+                    .size(56.dp)
+                    .padding(top = 5.dp)
+                    .align(Alignment.Start),
+                imageVector = Icons.Default.Headset,
+                contentDescription = null,
+                tint = Color.Orange
+            )
+            if (message.message_text.isNotEmpty()) {
+                Text(
+                    modifier = Modifier.padding(8.dp),
+                    text = message.message_text.split("|").first(),
+                    style = MaterialTheme.typography.bodyMedium,
+                )
+            }
+        }
     } else {
         Text(
             modifier = Modifier.padding(8.dp),