Skip to content

Commit 2d352fe

Browse files
committed
fix: UndabangAvatar의 placeholder를 ic_profile_default로 변경 #517
- 기존: imageUrl이 null/blank면 Material Person 아이콘만 표시 (작고 어색) - 변경: ic_profile_default drawable 사용, AsyncImage 로딩 실패 시에도 동일 drawable - placeholderRes 파라미터로 override 가능
1 parent a8fc294 commit 2d352fe

1 file changed

Lines changed: 19 additions & 13 deletions

File tree

  • presentation/src/main/java/com/project200/presentation/compose/components/display

presentation/src/main/java/com/project200/presentation/compose/components/display/Avatar.kt

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,29 @@
11
package com.project200.presentation.compose.components.display
22

3+
import androidx.annotation.DrawableRes
4+
import androidx.compose.foundation.Image
35
import androidx.compose.foundation.background
46
import androidx.compose.foundation.border
57
import androidx.compose.foundation.layout.Box
68
import androidx.compose.foundation.layout.size
79
import androidx.compose.foundation.shape.CircleShape
8-
import androidx.compose.material.icons.Icons
9-
import androidx.compose.material.icons.filled.Person
10-
import androidx.compose.material3.Icon
1110
import androidx.compose.runtime.Composable
1211
import androidx.compose.ui.Alignment
1312
import androidx.compose.ui.Modifier
1413
import androidx.compose.ui.draw.clip
1514
import androidx.compose.ui.graphics.Color
1615
import androidx.compose.ui.layout.ContentScale
16+
import androidx.compose.ui.res.painterResource
1717
import androidx.compose.ui.unit.Dp
1818
import androidx.compose.ui.unit.dp
1919
import coil.compose.AsyncImage
20-
import com.project200.presentation.compose.theme.ColorGray200
2120
import com.project200.presentation.compose.theme.ColorGray300
2221
import com.project200.presentation.compose.theme.ColorMain
22+
import com.project200.undabang.presentation.R
2323

2424
/**
2525
* 원형 프로필 아바타
26-
* imageUrl이 null/blank면 Person 아이콘 placeholder를 표시합니다
26+
* imageUrl이 null/blank거나 로딩 실패 시 placeholderRes drawable을 표시합니다
2727
*/
2828
@Composable
2929
fun UndabangAvatar(
@@ -34,6 +34,7 @@ fun UndabangAvatar(
3434
borderWidth: Dp = 2.dp,
3535
placeholderBackground: Color = ColorGray300,
3636
contentDescription: String = "프로필 이미지",
37+
@DrawableRes placeholderRes: Int = R.drawable.ic_profile_default,
3738
) {
3839
Box(
3940
modifier =
@@ -48,22 +49,27 @@ fun UndabangAvatar(
4849
),
4950
contentAlignment = Alignment.Center,
5051
) {
52+
val innerModifier =
53+
Modifier
54+
.size(size - borderWidth * 2)
55+
.clip(CircleShape)
56+
5157
if (imageUrl.isNullOrBlank()) {
52-
Icon(
53-
imageVector = Icons.Default.Person,
58+
Image(
59+
painter = painterResource(placeholderRes),
5460
contentDescription = contentDescription,
55-
modifier = Modifier.size(size * 0.5f),
56-
tint = ColorGray200,
61+
contentScale = ContentScale.Crop,
62+
modifier = innerModifier,
5763
)
5864
} else {
5965
AsyncImage(
6066
model = imageUrl,
6167
contentDescription = contentDescription,
62-
modifier =
63-
Modifier
64-
.size(size - borderWidth * 2)
65-
.clip(CircleShape),
68+
placeholder = painterResource(placeholderRes),
69+
error = painterResource(placeholderRes),
70+
fallback = painterResource(placeholderRes),
6671
contentScale = ContentScale.Crop,
72+
modifier = innerModifier,
6773
)
6874
}
6975
}

0 commit comments

Comments
 (0)