11package st.slex.csplashscreen.ui.detail
22
3- import android.annotation.SuppressLint
43import android.util.Log
4+ import androidx.compose.foundation.Image
5+ import androidx.compose.foundation.clickable
6+ import androidx.compose.foundation.layout.Column
7+ import androidx.compose.foundation.layout.fillMaxWidth
8+ import androidx.compose.foundation.layout.height
59import androidx.compose.runtime.Composable
610import androidx.compose.runtime.collectAsState
7- import androidx.compose.runtime.rememberCoroutineScope
11+ import androidx.compose.ui.Modifier
12+ import androidx.compose.ui.unit.dp
813import androidx.navigation.NavController
914import coil.annotation.ExperimentalCoilApi
15+ import coil.compose.rememberImagePainter
16+ import coil.transform.RoundedCornersTransformation
1017import kotlinx.coroutines.ExperimentalCoroutinesApi
11- import st.slex.csplashscreen.ui.MainViewModel
18+ import kotlinx.coroutines.flow.StateFlow
19+ import st.slex.csplashscreen.data.model.ui.image.ImageModel
20+ import st.slex.csplashscreen.ui.core.UIResult
21+ import java.net.URLEncoder
22+ import java.nio.charset.StandardCharsets
1223
13- @SuppressLint(" CoroutineCreationDuringComposition" )
1424@ExperimentalCoroutinesApi
1525@ExperimentalCoilApi
1626@Composable
1727fun ImageDetailScreen (
1828 url : String ,
19- imageId : String ,
20- viewModel : MainViewModel ,
2129 navController : NavController ,
30+ imageFlow : () -> StateFlow <UIResult <ImageModel >>
2231) {
23- val stateFlow = viewModel.getCurrentPhoto(imageId)
24- val viewState =
25- viewModel.getCurrentPhoto(imageId).collectAsState(rememberCoroutineScope().coroutineContext)
26- Log .i(" THisIsResult" , viewState.toString())
27- val result = viewState.value
28- /* when (val result = viewState.value) {
29- is UIResult.Success -> {
30- viewState.wait().notifyAll()
31- Column {
32- Image(
33- modifier = Modifier
34- .fillMaxWidth()
35- .height(300.dp)
36- .clickable {
37- val encodedUrl =
38- URLEncoder.encode(url, StandardCharsets.UTF_8.toString())
39- navController.navigate("raw_image/$encodedUrl")
40- },
41- painter = rememberImagePainter(
42- data = result.data.urls.regular,
43- builder = {
44- transformations(RoundedCornersTransformation())
45- allowHardware(false)
46- crossfade(500)
47- }
48- ),
49- contentDescription = "TestImage"
50- )
51- }
52- }
53- is UIResult.Loading -> {
54-
55- }
56- is UIResult.Failure -> {
32+ val imageModel = imageFlow().collectAsState().value
5733
34+ when (imageModel) {
35+ is UIResult .Success -> {
36+ BindImage (navController, url, imageModel.data)
5837 }
59- }*/
38+ }
6039
40+ Log .i(" imageModel" , imageModel.toString())
41+ }
6142
43+ @Composable
44+ fun BindImage (navController : NavController , url : String , imageModel : ImageModel ) {
45+ Column {
46+ Image (
47+ modifier = Modifier
48+ .fillMaxWidth()
49+ .height(300 .dp)
50+ .clickable {
51+ val encodedUrl =
52+ URLEncoder .encode(url, StandardCharsets .UTF_8 .toString())
53+ navController.navigate(" raw_image/$encodedUrl " )
54+ },
55+ painter = rememberImagePainter(
56+ data = imageModel.urls.regular,
57+ builder = {
58+ transformations(RoundedCornersTransformation ())
59+ allowHardware(false )
60+ crossfade(500 )
61+ }
62+ ),
63+ contentDescription = " TestImage"
64+ )
65+ }
6266}
0 commit comments