Skip to content

Commit c8d4e10

Browse files
committed
[refactor] #188 ProfileImage 공통 컴포넌트 정의 및 교체
1 parent e0297ba commit c8d4e10

4 files changed

Lines changed: 49 additions & 108 deletions

File tree

feature/mypage/impl/src/main/java/com/neki/android/feature/mypage/impl/profile/EditProfileScreen.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ import com.neki.android.feature.mypage.impl.main.MyPageIntent
3535
import com.neki.android.feature.mypage.impl.main.MyPageState
3636
import com.neki.android.feature.mypage.impl.main.MyPageViewModel
3737
import com.neki.android.feature.mypage.impl.profile.model.EditProfileImageType
38-
import com.neki.android.feature.mypage.impl.profile.component.EditProfileImage
38+
import com.neki.android.feature.mypage.impl.profile.component.ProfileImage
3939
import com.neki.android.feature.mypage.impl.profile.component.ProfileEditTopBar
4040
import com.neki.android.feature.mypage.impl.profile.component.SelectProfileImageDialog
4141
import com.neki.android.feature.mypage.impl.profile.component.ProfileImageOption
@@ -76,7 +76,7 @@ fun EditProfileScreen(
7676
onIntent: (MyPageIntent) -> Unit = {},
7777
) {
7878
var displayProfileImage by remember {
79-
mutableStateOf<Any?>(uiState.userInfo.profileImageUrl)
79+
mutableStateOf<Any>(uiState.userInfo.profileImageUrl)
8080
}
8181

8282
LaunchedEffect(uiState.profileImageState) {
@@ -108,7 +108,7 @@ fun EditProfileScreen(
108108
onIntent(MyPageIntent.ClickEditComplete(nickname = textFieldState.text.toString()))
109109
},
110110
)
111-
EditProfileImage(
111+
ProfileImage(
112112
profileImage = displayProfileImage,
113113
onClickCameraIcon = { onIntent(MyPageIntent.ClickCameraIcon) },
114114
)

feature/mypage/impl/src/main/java/com/neki/android/feature/mypage/impl/profile/ProfileSettingScreen.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ import com.neki.android.feature.mypage.impl.main.MyPageEffect
2121
import com.neki.android.feature.mypage.impl.main.MyPageIntent
2222
import com.neki.android.feature.mypage.impl.main.MyPageState
2323
import com.neki.android.feature.mypage.impl.main.MyPageViewModel
24+
import com.neki.android.feature.mypage.impl.profile.component.ProfileImage
2425
import com.neki.android.feature.mypage.impl.profile.component.ProfileSettingTopBar
25-
import com.neki.android.feature.mypage.impl.profile.component.SettingProfileImage
2626
import timber.log.Timber
2727

2828
@Composable
@@ -72,11 +72,11 @@ fun ProfileSettingScreen(
7272
ProfileSettingTopBar(
7373
onBack = { onIntent(MyPageIntent.ClickBackIcon) },
7474
)
75-
SettingProfileImage(
75+
ProfileImage(
76+
profileImage = uiState.userInfo.profileImageUrl.ifEmpty { null },
7677
nickname = uiState.userInfo.nickname,
77-
profileImage = uiState.userInfo.profileImageUrl,
78-
onClickEdit = { onIntent(MyPageIntent.ClickEditIcon) },
7978
onClickCameraIcon = { onIntent(MyPageIntent.ClickEditIcon) },
79+
onClickEdit = { onIntent(MyPageIntent.ClickEditIcon) },
8080
)
8181
SectionTitleText(text = "서비스 정보 및 지원")
8282
SectionItem(

feature/mypage/impl/src/main/java/com/neki/android/feature/mypage/impl/profile/component/EditProfileImage.kt

Lines changed: 0 additions & 73 deletions
This file was deleted.

feature/mypage/impl/src/main/java/com/neki/android/feature/mypage/impl/profile/component/SettingProfileImage.kt renamed to feature/mypage/impl/src/main/java/com/neki/android/feature/mypage/impl/profile/component/ProfileImage.kt

Lines changed: 42 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,8 @@ import androidx.compose.ui.draw.clip
1717
import androidx.compose.ui.graphics.Color
1818
import androidx.compose.ui.graphics.vector.ImageVector
1919
import androidx.compose.ui.layout.ContentScale
20-
import androidx.compose.ui.res.vectorResource
2120
import androidx.compose.ui.res.painterResource
22-
import androidx.compose.ui.unit.Dp
21+
import androidx.compose.ui.res.vectorResource
2322
import androidx.compose.ui.unit.dp
2423
import coil3.compose.AsyncImage
2524
import com.neki.android.core.designsystem.ComponentPreview
@@ -29,23 +28,26 @@ import com.neki.android.core.designsystem.ui.theme.NekiTheme
2928
import com.neki.android.core.ui.compose.VerticalSpacer
3029

3130
@Composable
32-
internal fun SettingProfileImage(
33-
nickname: String,
34-
profileImage: String = "",
35-
imageSize: Dp = 142.dp,
36-
onClickEdit: () -> Unit,
31+
internal fun ProfileImage(
32+
profileImage: Any? = null,
33+
nickname: String = "",
3734
onClickCameraIcon: () -> Unit,
35+
onClickEdit: () -> Unit = {},
3836
) {
3937
Column(
40-
modifier = Modifier.padding(top = 20.dp, bottom = 27.dp),
38+
modifier = Modifier
39+
.padding(
40+
top = 20.dp,
41+
bottom = if (nickname.isNotEmpty()) 34.dp else 28.dp
42+
),
4143
horizontalAlignment = Alignment.CenterHorizontally,
4244
) {
4345
Box {
4446
AsyncImage(
4547
modifier = Modifier
46-
.size(imageSize)
48+
.size(142.dp)
4749
.clip(CircleShape),
48-
model = profileImage.ifEmpty { R.drawable.image_profile_empty },
50+
model = profileImage ?: R.drawable.image_profile_empty,
4951
contentDescription = null,
5052
contentScale = ContentScale.Crop,
5153
placeholder = painterResource(R.drawable.image_profile_empty),
@@ -69,33 +71,45 @@ internal fun SettingProfileImage(
6971
)
7072
}
7173
}
72-
VerticalSpacer(16.dp)
73-
Row(
74-
horizontalArrangement = Arrangement.spacedBy(8.dp, Alignment.CenterHorizontally),
75-
verticalAlignment = Alignment.CenterVertically,
76-
) {
77-
Text(
78-
text = nickname,
79-
style = NekiTheme.typography.title20Medium,
80-
color = NekiTheme.colorScheme.gray900,
81-
)
82-
Icon(
83-
modifier = Modifier.noRippleClickableSingle(onClick = onClickEdit),
84-
imageVector = ImageVector.vectorResource(R.drawable.icon_edit),
85-
contentDescription = null,
86-
tint = Color.Unspecified,
87-
)
74+
if (nickname.isNotEmpty()) {
75+
VerticalSpacer(16.dp)
76+
Row(
77+
horizontalArrangement = Arrangement.spacedBy(8.dp, Alignment.CenterHorizontally),
78+
verticalAlignment = Alignment.CenterVertically,
79+
) {
80+
Text(
81+
text = nickname,
82+
style = NekiTheme.typography.title20Medium,
83+
color = NekiTheme.colorScheme.gray900,
84+
)
85+
Icon(
86+
modifier = Modifier.noRippleClickableSingle(onClick = onClickEdit),
87+
imageVector = ImageVector.vectorResource(R.drawable.icon_edit),
88+
contentDescription = null,
89+
tint = Color.Unspecified,
90+
)
91+
}
8892
}
8993
}
9094
}
9195

9296
@ComponentPreview
9397
@Composable
94-
private fun SettingProfileImagePreview() {
98+
private fun ProfileImageWithNicknamePreview() {
9599
NekiTheme {
96-
SettingProfileImage(
100+
ProfileImage(
97101
nickname = "네키네키",
102+
onClickCameraIcon = {},
98103
onClickEdit = {},
104+
)
105+
}
106+
}
107+
108+
@ComponentPreview
109+
@Composable
110+
private fun ProfileImagePreview() {
111+
NekiTheme {
112+
ProfileImage(
99113
onClickCameraIcon = {},
100114
)
101115
}

0 commit comments

Comments
 (0)