diff --git a/presentation/src/main/java/com/sopt/presentation/auth/login/OnboardingRoute.kt b/presentation/src/main/java/com/sopt/presentation/auth/login/OnboardingRoute.kt index 1c1e9ab6..2538be9b 100644 --- a/presentation/src/main/java/com/sopt/presentation/auth/login/OnboardingRoute.kt +++ b/presentation/src/main/java/com/sopt/presentation/auth/login/OnboardingRoute.kt @@ -6,13 +6,17 @@ import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.wrapContentWidth import androidx.compose.foundation.pager.HorizontalPager import androidx.compose.foundation.pager.rememberPagerState +import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.shape.CircleShape +import androidx.compose.foundation.verticalScroll import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.Immutable @@ -74,7 +78,8 @@ fun OnboardingScreen( Column( modifier = Modifier .fillMaxSize() - .background(NoostakTheme.colors.white), + .background(NoostakTheme.colors.white) + .verticalScroll(rememberScrollState()), horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.Top ) { @@ -87,10 +92,13 @@ fun OnboardingScreen( verticalArrangement = Arrangement.Top ) { Image( - modifier = Modifier.fillMaxWidth(), imageVector = ImageVector.vectorResource(id = pages[page].imageRes), contentDescription = null, - contentScale = ContentScale.FillWidth + contentScale = ContentScale.FillWidth, + modifier = Modifier + .fillMaxWidth() + .background(NoostakTheme.colors.gray100) + .wrapContentWidth(Alignment.CenterHorizontally) ) Text( modifier = Modifier.padding(top = 30.dp), @@ -113,7 +121,9 @@ fun OnboardingScreen( } } Row( - Modifier.weight(1f) + modifier = Modifier.fillMaxWidth() + .padding(bottom = 26.dp), + horizontalArrangement = Arrangement.Center ) { repeat(pagerState.pageCount) { iteration -> val color = @@ -127,6 +137,7 @@ fun OnboardingScreen( ) } } + Spacer(modifier = Modifier.weight(1f)) val isLastPage = pagerState.currentPage == pages.size - 1 val buttonText = diff --git a/presentation/src/main/java/com/sopt/presentation/mypage/editProfile/EditProfileRoute.kt b/presentation/src/main/java/com/sopt/presentation/mypage/editProfile/EditProfileRoute.kt index d1dae646..c545319f 100644 --- a/presentation/src/main/java/com/sopt/presentation/mypage/editProfile/EditProfileRoute.kt +++ b/presentation/src/main/java/com/sopt/presentation/mypage/editProfile/EditProfileRoute.kt @@ -107,7 +107,7 @@ fun EditProfileRoute( var isInitialized by remember { mutableStateOf(false) } LaunchedEffect(Unit) { - editProfileViewModel.initProfile() + editProfileViewModel.setInitialProfile(nickname, profileImage) isInitialized = true } diff --git a/presentation/src/main/java/com/sopt/presentation/mypage/editProfile/EditProfileViewModel.kt b/presentation/src/main/java/com/sopt/presentation/mypage/editProfile/EditProfileViewModel.kt index d3dbedab..67be0091 100644 --- a/presentation/src/main/java/com/sopt/presentation/mypage/editProfile/EditProfileViewModel.kt +++ b/presentation/src/main/java/com/sopt/presentation/mypage/editProfile/EditProfileViewModel.kt @@ -9,7 +9,6 @@ import com.sopt.domain.repository.UserInfoRepository import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow -import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch import javax.inject.Inject @@ -34,16 +33,16 @@ class EditProfileViewModel @Inject constructor( private val _showErrorDialog = MutableStateFlow(false) val showErrorDialog: StateFlow get() = _showErrorDialog - suspend fun initProfile() { - userInfoRepository.getNickname().first().also { - _nickname.value = it - onMemberNameChanged(it) - } - - userInfoRepository.getProfileImage().first().also { - _profileImage.value = it - onImageSelected(it) + fun setInitialProfile(memberName: String, memberProfileImage: String?) { + _nickname.value = memberName + _profileImage.value = memberProfileImage ?: "" + _userProfileState.update { + it.copy( + memberName = memberName, + memberProfileImage = memberProfileImage + ) } + validateMemberName(memberName) } private suspend fun saveProfile(memberName: String, memberProfileImage: String?) {