|
@@ -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),
|