|
@@ -1,12 +1,15 @@
|
|
package io.nexilis.alpha.ui.components
|
|
package io.nexilis.alpha.ui.components
|
|
|
|
|
|
import androidx.compose.foundation.Image
|
|
import androidx.compose.foundation.Image
|
|
|
|
+import androidx.compose.foundation.layout.Column
|
|
import androidx.compose.foundation.layout.padding
|
|
import androidx.compose.foundation.layout.padding
|
|
import androidx.compose.foundation.layout.size
|
|
import androidx.compose.foundation.layout.size
|
|
|
|
+import androidx.compose.foundation.shape.RoundedCornerShape
|
|
import androidx.compose.material3.MaterialTheme
|
|
import androidx.compose.material3.MaterialTheme
|
|
import androidx.compose.material3.Text
|
|
import androidx.compose.material3.Text
|
|
import androidx.compose.runtime.Composable
|
|
import androidx.compose.runtime.Composable
|
|
import androidx.compose.ui.Modifier
|
|
import androidx.compose.ui.Modifier
|
|
|
|
+import androidx.compose.ui.graphics.graphicsLayer
|
|
import androidx.compose.ui.layout.ContentScale
|
|
import androidx.compose.ui.layout.ContentScale
|
|
import androidx.compose.ui.platform.LocalContext
|
|
import androidx.compose.ui.platform.LocalContext
|
|
import androidx.compose.ui.unit.dp
|
|
import androidx.compose.ui.unit.dp
|
|
@@ -14,33 +17,39 @@ import androidx.core.content.FileProvider
|
|
import coil.compose.rememberAsyncImagePainter
|
|
import coil.compose.rememberAsyncImagePainter
|
|
import io.nexilis.alpha.BuildConfig
|
|
import io.nexilis.alpha.BuildConfig
|
|
import io.nexilis.service.data.entities.Message
|
|
import io.nexilis.service.data.entities.Message
|
|
-import java.util.Objects
|
|
|
|
|
|
|
|
@Composable
|
|
@Composable
|
|
fun ContentChat(message: Message) {
|
|
fun ContentChat(message: Message) {
|
|
val context = LocalContext.current
|
|
val context = LocalContext.current
|
|
if (message.image_id.isNotEmpty()) {
|
|
if (message.image_id.isNotEmpty()) {
|
|
- val file = context.getFileStreamPath(message.image_id)
|
|
|
|
- val uri = FileProvider.getUriForFile(
|
|
|
|
- Objects.requireNonNull(context),
|
|
|
|
- BuildConfig.APPLICATION_ID + ".provider", file
|
|
|
|
- )
|
|
|
|
- Image(
|
|
|
|
- painter = rememberAsyncImagePainter(uri),
|
|
|
|
- contentDescription = "",
|
|
|
|
- modifier = Modifier
|
|
|
|
- .padding(8.dp)
|
|
|
|
- .size(248.dp),
|
|
|
|
- contentScale = ContentScale.Crop
|
|
|
|
- )
|
|
|
|
- if (message.message_text.isNotEmpty()) {
|
|
|
|
- Text(
|
|
|
|
- text = message.message_text,
|
|
|
|
- style = MaterialTheme.typography.bodyMedium,
|
|
|
|
|
|
+ Column(modifier = Modifier.padding(3.dp)) {
|
|
|
|
+ val file = context.getFileStreamPath(message.image_id)
|
|
|
|
+ val uri = FileProvider.getUriForFile(
|
|
|
|
+ context,
|
|
|
|
+ BuildConfig.APPLICATION_ID + ".provider", file
|
|
|
|
+ )
|
|
|
|
+ Image(
|
|
|
|
+ painter = rememberAsyncImagePainter(uri),
|
|
|
|
+ contentDescription = "",
|
|
|
|
+ modifier = Modifier
|
|
|
|
+ .size(248.dp)
|
|
|
|
+ .graphicsLayer {
|
|
|
|
+ shape = RoundedCornerShape(12.dp)
|
|
|
|
+ clip = true
|
|
|
|
+ },
|
|
|
|
+ contentScale = ContentScale.Crop
|
|
)
|
|
)
|
|
|
|
+ if (message.message_text.isNotEmpty()) {
|
|
|
|
+ Text(
|
|
|
|
+ modifier = Modifier.padding(8.dp),
|
|
|
|
+ text = message.message_text,
|
|
|
|
+ style = MaterialTheme.typography.bodyMedium,
|
|
|
|
+ )
|
|
|
|
+ }
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
Text(
|
|
Text(
|
|
|
|
+ modifier = Modifier.padding(8.dp),
|
|
text = message.message_text,
|
|
text = message.message_text,
|
|
style = MaterialTheme.typography.bodyMedium,
|
|
style = MaterialTheme.typography.bodyMedium,
|
|
)
|
|
)
|