yayan 1 yıl önce
ebeveyn
işleme
5326f7a145

+ 4 - 3
app/build.gradle

@@ -22,7 +22,7 @@ android {
 
     defaultConfig {
         applicationId "io.nexilis.alpha"
-        minSdk 23
+        minSdk 24
         targetSdk 34
         versionCode 1
         versionName "1.0"
@@ -74,7 +74,7 @@ dependencies {
     testImplementation("junit:junit:4.13.2")
     androidTestImplementation("androidx.test.ext:junit:1.1.5")
     androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")
-    androidTestImplementation(platform("androidx.compose:compose-bom:2024.02.01"))
+    androidTestImplementation(platform("androidx.compose:compose-bom:2024.02.02"))
     androidTestImplementation("androidx.compose.ui:ui-test-junit4")
     debugImplementation("androidx.compose.ui:ui-tooling")
     debugImplementation("androidx.compose.ui:ui-test-manifest")
@@ -82,7 +82,7 @@ dependencies {
     implementation 'androidx.navigation:navigation-compose:2.7.7'
     implementation 'io.coil-kt:coil-compose:2.6.0'
 
-    implementation platform('androidx.compose:compose-bom:2024.02.01')
+    implementation platform('androidx.compose:compose-bom:2024.02.02')
     implementation "androidx.compose.ui:ui"
     implementation "androidx.compose.ui:ui-tooling-preview"
     implementation 'androidx.compose.material3:material3'
@@ -98,6 +98,7 @@ dependencies {
     kapt "com.google.dagger:hilt-android-compiler:2.48"
 
     implementation "androidx.hilt:hilt-navigation-compose:1.2.0"
+    implementation "androidx.exifinterface:exifinterface:1.3.7"
 
 }
 

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

@@ -1,5 +1,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.Column
@@ -33,6 +34,7 @@ import androidx.compose.ui.text.style.TextOverflow
 import androidx.compose.ui.text.toUpperCase
 import androidx.compose.ui.unit.dp
 import androidx.core.content.FileProvider
+import androidx.exifinterface.media.ExifInterface
 import coil.compose.rememberAsyncImagePainter
 import io.nexilis.alpha.BuildConfig
 import io.nexilis.alpha.R
@@ -41,9 +43,10 @@ import io.nexilis.service.core.extension
 import io.nexilis.service.core.toHumanStandard
 import io.nexilis.service.data.entities.Message
 import java.io.File
+import java.io.FileInputStream
 
 @Composable
-fun ContentChat(modifier: Modifier, message: Message) {
+fun ContentChat(modifier: Modifier = Modifier, message: Message) {
     val context = LocalContext.current
     if (message.image_id.isNotEmpty()) {
         Column(modifier = Modifier.padding(2.dp)) {
@@ -51,16 +54,31 @@ fun ContentChat(modifier: Modifier, message: Message) {
             val uri = FileProvider.getUriForFile(
                 context, BuildConfig.APPLICATION_ID + ".provider", file
             )
+            var width: Int
+            var height: Int
+            FileInputStream(file).use {
+                val exif = ExifInterface(it)
+                width = exif.getAttributeInt(ExifInterface.TAG_IMAGE_WIDTH, 1)
+                height = exif.getAttributeInt(ExifInterface.TAG_IMAGE_LENGTH, 1)
+            }
+            if (width == 0) {
+                FileInputStream(file).use {
+                    val bitmap = BitmapFactory.decodeStream(it)
+                    width = bitmap.width
+                    if (height == 0) height = bitmap.height
+                }
+            }
+            val aspectRatio = width / height.toFloat()
             Image(
                 painter = rememberAsyncImagePainter(uri),
                 contentDescription = "",
                 modifier = modifier
-                    .aspectRatio(3f / 4f)
+                    .aspectRatio(aspectRatio)
                     .graphicsLayer {
                         shape = RoundedCornerShape(12.dp)
                         clip = true
                     },
-                contentScale = ContentScale.Crop
+                contentScale = ContentScale.Fit
             )
             if (message.message_text.isNotEmpty()) {
                 Text(

+ 2 - 2
app/src/main/java/io/nexilis/alpha/ui/main/Chat.kt

@@ -56,7 +56,7 @@ fun Chat(
                                     message = message,
                                 ) {
                                     ContentChat(
-                                        modifier = Modifier.fillMaxWidth(0.7f),
+//                                        modifier = Modifier.fillMaxWidth(0.7f),
                                         message = message
                                     )
                                 }
@@ -66,7 +66,7 @@ fun Chat(
                                     message = message
                                 ) {
                                     ContentChat(
-                                        modifier = Modifier.fillMaxWidth(0.7f),
+//                                        modifier = Modifier.fillMaxWidth(0.7f),
                                         message = message
                                     )
                                 }