forked from melod1n/fast-messenger
some coil & compose improvements
This commit is contained in:
+1
-6
@@ -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
|
||||||
|
|||||||
+3
@@ -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>,
|
||||||
|
|||||||
+1
-7
@@ -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()
|
||||||
|
|||||||
+2
-12
@@ -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()))
|
||||||
|
|||||||
+1
-3
@@ -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()
|
||||||
|
|||||||
+1
-5
@@ -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()
|
||||||
|
|||||||
Reference in New Issue
Block a user