some coil & compose improvements

This commit is contained in:
2024-07-15 16:43:59 +03:00
parent ad9a3e0c12
commit 9a1bce5707
6 changed files with 9 additions and 33 deletions
@@ -37,7 +37,6 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.clip
import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalFocusManager import androidx.compose.ui.platform.LocalFocusManager
import androidx.compose.ui.platform.LocalView import androidx.compose.ui.platform.LocalView
import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.painterResource
@@ -47,7 +46,6 @@ import androidx.compose.ui.text.input.TextFieldValue
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.lifecycle.compose.collectAsStateWithLifecycle
import coil.compose.AsyncImage import coil.compose.AsyncImage
import coil.request.ImageRequest
import com.meloda.app.fast.auth.captcha.CaptchaViewModel import com.meloda.app.fast.auth.captcha.CaptchaViewModel
import com.meloda.app.fast.auth.captcha.CaptchaViewModelImpl import com.meloda.app.fast.auth.captcha.CaptchaViewModelImpl
import com.meloda.app.fast.auth.captcha.model.CaptchaScreenState import com.meloda.app.fast.auth.captcha.model.CaptchaScreenState
@@ -188,10 +186,7 @@ fun CaptchaScreen(
) )
} else { } else {
AsyncImage( AsyncImage(
model = ImageRequest.Builder(LocalContext.current) model = screenState.captchaImageUrl,
.data(screenState.captchaImageUrl)
.crossfade(true)
.build(),
contentDescription = "Captcha image", contentDescription = "Captcha image",
contentScale = ContentScale.FillBounds, contentScale = ContentScale.FillBounds,
modifier = imageModifier modifier = imageModifier
@@ -1,5 +1,8 @@
package com.meloda.app.fast.chatmaterials.model package com.meloda.app.fast.chatmaterials.model
import androidx.compose.runtime.Immutable
@Immutable
data class ChatMaterialsScreenState( data class ChatMaterialsScreenState(
val isLoading: Boolean, val isLoading: Boolean,
val materials: List<UiChatMaterial>, val materials: List<UiChatMaterial>,
@@ -10,21 +10,16 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.layout.ContentScale
import coil.ImageLoader
import coil.compose.AsyncImage import coil.compose.AsyncImage
import com.meloda.app.fast.chatmaterials.model.UiChatMaterial import com.meloda.app.fast.chatmaterials.model.UiChatMaterial
@Composable @Composable
fun ChatMaterialItem( fun ChatMaterialItem(item: UiChatMaterial) {
item: UiChatMaterial,
imageLoader: ImageLoader
) {
when (item) { when (item) {
is UiChatMaterial.Photo -> { is UiChatMaterial.Photo -> {
AsyncImage( AsyncImage(
model = item.previewUrl, model = item.previewUrl,
contentDescription = null, contentDescription = null,
imageLoader = imageLoader,
contentScale = ContentScale.Crop, contentScale = ContentScale.Crop,
modifier = Modifier modifier = Modifier
.fillMaxWidth() .fillMaxWidth()
@@ -36,7 +31,6 @@ fun ChatMaterialItem(
AsyncImage( AsyncImage(
model = item.previewUrl, model = item.previewUrl,
contentDescription = null, contentDescription = null,
imageLoader = imageLoader,
contentScale = ContentScale.Crop, contentScale = ContentScale.Crop,
modifier = Modifier modifier = Modifier
.fillMaxWidth() .fillMaxWidth()
@@ -57,13 +57,11 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.alpha import androidx.compose.ui.draw.alpha
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.input.nestedscroll.nestedScroll import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.DpOffset import androidx.compose.ui.unit.DpOffset
import androidx.compose.ui.unit.LayoutDirection import androidx.compose.ui.unit.LayoutDirection
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.lifecycle.compose.collectAsStateWithLifecycle
import coil.imageLoader
import com.meloda.app.fast.chatmaterials.ChatMaterialsViewModel import com.meloda.app.fast.chatmaterials.ChatMaterialsViewModel
import com.meloda.app.fast.chatmaterials.ChatMaterialsViewModelImpl import com.meloda.app.fast.chatmaterials.ChatMaterialsViewModelImpl
import com.meloda.app.fast.chatmaterials.model.ChatMaterialsScreenState import com.meloda.app.fast.chatmaterials.model.ChatMaterialsScreenState
@@ -109,8 +107,6 @@ fun ChatMaterialsScreen(
val attachments = screenState.materials val attachments = screenState.materials
val imageLoader = LocalContext.current.imageLoader
var moreClearBlur by rememberSaveable { var moreClearBlur by rememberSaveable {
mutableStateOf(false) mutableStateOf(false)
} }
@@ -317,10 +313,7 @@ fun ChatMaterialsScreen(
} }
} }
items(attachments) { item -> items(attachments) { item ->
ChatMaterialItem( ChatMaterialItem(item = item)
item = item,
imageLoader = imageLoader
)
} }
repeat(3) { repeat(3) {
item { item {
@@ -349,10 +342,7 @@ fun ChatMaterialsScreen(
Spacer(modifier = Modifier.height(padding.calculateTopPadding())) Spacer(modifier = Modifier.height(padding.calculateTopPadding()))
} }
items(attachments) { item -> items(attachments) { item ->
ChatMaterialItem( ChatMaterialItem(item = item)
item = item,
imageLoader = imageLoader
)
} }
item { item {
Spacer(modifier = Modifier.height(padding.calculateBottomPadding())) Spacer(modifier = Modifier.height(padding.calculateBottomPadding()))
@@ -52,7 +52,6 @@ import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp import androidx.compose.ui.unit.sp
import coil.compose.AsyncImage import coil.compose.AsyncImage
import coil.request.ImageRequest
import com.meloda.app.fast.common.UiImage import com.meloda.app.fast.common.UiImage
import com.meloda.app.fast.conversations.DotsFlashing import com.meloda.app.fast.conversations.DotsFlashing
import com.meloda.app.fast.conversations.model.ConversationOption import com.meloda.app.fast.conversations.model.ConversationOption
@@ -171,8 +170,7 @@ fun ConversationItem(
) )
} else { } else {
AsyncImage( AsyncImage(
model = ImageRequest.Builder(context).data(avatarImage) model = avatarImage,
.crossfade(true).build(),
contentDescription = "Avatar", contentDescription = "Avatar",
modifier = Modifier modifier = Modifier
.fillMaxSize() .fillMaxSize()
@@ -23,7 +23,6 @@ import androidx.compose.ui.res.painterResource
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp import androidx.compose.ui.unit.sp
import coil.compose.AsyncImage import coil.compose.AsyncImage
import coil.request.ImageRequest
import com.meloda.app.fast.designsystem.R import com.meloda.app.fast.designsystem.R
import com.meloda.app.fast.friends.model.UiFriend import com.meloda.app.fast.friends.model.UiFriend
@@ -55,10 +54,7 @@ fun FriendItem(
) )
} else { } else {
AsyncImage( AsyncImage(
model = ImageRequest.Builder(context) model = friendAvatar,
.data(friendAvatar)
.crossfade(true)
.build(),
contentDescription = null, contentDescription = null,
modifier = Modifier modifier = Modifier
.fillMaxSize() .fillMaxSize()