Skip to content

Commit 592edce

Browse files
authored
Merge pull request #330 from Project-Unifest/feat/star-image-placeholder
[feat] 연예인 이미지, 연예인 이미지 다이얼로그 Placeholder 추가
2 parents 924210b + 21c0ca3 commit 592edce

File tree

6 files changed

+47
-5
lines changed

6 files changed

+47
-5
lines changed

core/designsystem/src/main/kotlin/com/unifest/android/core/designsystem/component/NetworkImage.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import androidx.compose.ui.platform.LocalInspectionMode
1010
import androidx.compose.ui.res.painterResource
1111
import com.skydoves.landscapist.ImageOptions
1212
import com.skydoves.landscapist.coil.CoilImage
13+
import com.skydoves.landscapist.coil.CoilImageState
1314
import com.skydoves.landscapist.components.rememberImageComponent
1415
import com.skydoves.landscapist.placeholder.placeholder.PlaceholderPlugin
1516
import com.unifest.android.core.designsystem.ComponentPreview
@@ -23,6 +24,7 @@ fun NetworkImage(
2324
modifier: Modifier = Modifier,
2425
placeholder: Painter? = null,
2526
contentScale: ContentScale = ContentScale.Crop,
27+
onError: (Boolean) -> Unit = {},
2628
) {
2729
if (LocalInspectionMode.current) {
2830
Image(
@@ -43,6 +45,11 @@ fun NetworkImage(
4345
alignment = Alignment.Center,
4446
contentDescription = contentDescription,
4547
),
48+
onImageStateChanged = { state ->
49+
if (state is CoilImageState.Failure) {
50+
onError(true)
51+
}
52+
},
4653
)
4754
}
4855
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<vector xmlns:android="http://schemas.android.com/apk/res/android"
2+
android:width="62dp"
3+
android:height="62dp"
4+
android:viewportWidth="62"
5+
android:viewportHeight="62">
6+
<path
7+
android:pathData="M31,31m-31,0a31,31 0,1 1,62 0a31,31 0,1 1,-62 0"
8+
android:fillColor="#E3E4EA"/>
9+
</vector>

feature/home/src/main/kotlin/com/unifest/android/feature/home/component/FestivalScheduleItem.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import androidx.compose.ui.Modifier
2323
import androidx.compose.ui.draw.clip
2424
import androidx.compose.ui.graphics.Color
2525
import androidx.compose.ui.graphics.vector.ImageVector
26+
import androidx.compose.ui.res.painterResource
2627
import androidx.compose.ui.res.vectorResource
2728
import androidx.compose.ui.text.style.TextOverflow
2829
import androidx.compose.ui.unit.dp
@@ -126,10 +127,10 @@ internal fun FestivalScheduleItem(
126127
// onHomeUiAction(HomeUiAction.OnStarImageLongClick(scheduleIndex, starIndex))
127128
// },
128129
// isClicked = isStarImageClicked[starIndex],
129-
// label = starInfo.name,
130130
modifier = Modifier
131131
.size(72.dp)
132132
.clip(CircleShape),
133+
placeholder = painterResource(id = designR.drawable.ic_star_placeholder),
133134
)
134135
Spacer(modifier = Modifier.width(10.dp))
135136
}

feature/home/src/main/kotlin/com/unifest/android/feature/home/component/StarImage.kt

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,23 @@
11
package com.unifest.android.feature.home.component
22

33
import androidx.compose.foundation.ExperimentalFoundationApi
4+
import androidx.compose.foundation.background
45
import androidx.compose.foundation.combinedClickable
56
import androidx.compose.foundation.layout.Box
67
import androidx.compose.runtime.Composable
8+
import androidx.compose.runtime.getValue
9+
import androidx.compose.runtime.mutableStateOf
10+
import androidx.compose.runtime.remember
11+
import androidx.compose.runtime.setValue
712
import androidx.compose.ui.Alignment
813
import androidx.compose.ui.Modifier
14+
import androidx.compose.ui.graphics.Color
915
import androidx.compose.ui.graphics.painter.Painter
1016
import androidx.compose.ui.layout.ContentScale
1117
import com.unifest.android.core.designsystem.ComponentPreview
18+
import com.unifest.android.core.designsystem.component.AutoResizedText
1219
import com.unifest.android.core.designsystem.component.NetworkImage
20+
import com.unifest.android.core.designsystem.theme.Content9
1321
import com.unifest.android.core.designsystem.theme.UnifestTheme
1422
import com.unifest.android.core.model.StarInfoModel
1523

@@ -20,12 +28,13 @@ fun StarImage(
2028
onClick: () -> Unit,
2129
// onLongClick: () -> Unit,
2230
// isClicked: Boolean,
23-
// label: String,
2431
modifier: Modifier = Modifier,
2532
placeholder: Painter? = null,
2633
contentScale: ContentScale = ContentScale.Crop,
2734
contentDescription: String? = null,
2835
) {
36+
var isStarImageLoadError by remember { mutableStateOf(false) }
37+
2938
Box(
3039
modifier = modifier
3140
.combinedClickable(
@@ -40,6 +49,7 @@ fun StarImage(
4049
placeholder = placeholder,
4150
contentScale = contentScale,
4251
contentDescription = contentDescription,
52+
onError = { isError -> isStarImageLoadError = isError },
4353
)
4454
// if (isClicked) {
4555
// Box(
@@ -48,11 +58,23 @@ fun StarImage(
4858
// .background(Color.Black.copy(alpha = 0.6f)),
4959
// )
5060
// AutoResizedText(
51-
// text = label,
61+
// text = starInfo.name,
5262
// color = Color.White,
5363
// style = Content9,
5464
// )
5565
// }
66+
if (starInfo.name.isEmpty() || isStarImageLoadError) {
67+
Box(
68+
modifier = Modifier
69+
.matchParentSize()
70+
.background(Color.Black.copy(alpha = 0.5f)),
71+
)
72+
AutoResizedText(
73+
text = starInfo.name,
74+
color = Color.White,
75+
style = Content9,
76+
)
77+
}
5678
}
5779
}
5880

feature/home/src/main/kotlin/com/unifest/android/feature/home/component/StarImageDialog.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import androidx.compose.ui.Modifier
1818
import androidx.compose.ui.draw.clip
1919
import androidx.compose.ui.graphics.Color
2020
import androidx.compose.ui.platform.LocalConfiguration
21+
import androidx.compose.ui.res.painterResource
2122
import androidx.compose.ui.text.style.TextAlign
2223
import androidx.compose.ui.unit.dp
2324
import androidx.compose.ui.unit.min
@@ -27,6 +28,7 @@ import com.unifest.android.core.designsystem.component.NetworkImage
2728
import com.unifest.android.core.designsystem.theme.Title2
2829
import com.unifest.android.core.designsystem.theme.UnifestTheme
2930
import com.unifest.android.core.model.StarInfoModel
31+
import com.unifest.android.core.designsystem.R as designR
3032

3133
@OptIn(ExperimentalMaterial3Api::class)
3234
@Composable
@@ -62,6 +64,7 @@ internal fun StarImageDialog(
6264
modifier = Modifier
6365
.size(dialogSize)
6466
.clip(CircleShape),
67+
placeholder = painterResource(designR.drawable.ic_star_placeholder),
6568
)
6669
Spacer(modifier = Modifier.height(16.dp))
6770
Text(

gradle/libs.versions.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
minSdk = "26"
44
targetSdk = "35"
55
compileSdk = "35"
6-
versionCode = "33"
7-
versionName = "1.3.5"
6+
versionCode = "34"
7+
versionName = "1.3.6"
88
packageName = "com.unifest.android"
99

1010
android-gradle-plugin = "8.8.2"

0 commit comments

Comments
 (0)