From 0c92e5de20b7ebf554739d8f3339d8f980f68bd7 Mon Sep 17 00:00:00 2001 From: Seunggu Kang Date: Sat, 16 Mar 2024 02:13:51 +0900 Subject: [PATCH 01/25] =?UTF-8?q?feat:=20=EC=B6=94=EA=B0=80=20=EC=9D=B8?= =?UTF-8?q?=EC=A6=9D=20=EC=A0=95=EB=B3=B4=EB=A5=BC=20post/get=20=ED=95=98?= =?UTF-8?q?=EB=8A=94=20api=20=EC=97=B0=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectdog/core/data/repository/ApplyRepository.kt | 3 +++ .../core/data/repository/ApplyRepositoryImpl.kt | 9 +++++++++ 2 files changed, 12 insertions(+) diff --git a/core/data/src/main/java/com/kusitms/connectdog/core/data/repository/ApplyRepository.kt b/core/data/src/main/java/com/kusitms/connectdog/core/data/repository/ApplyRepository.kt index 28f62a67a..66722d6e9 100644 --- a/core/data/src/main/java/com/kusitms/connectdog/core/data/repository/ApplyRepository.kt +++ b/core/data/src/main/java/com/kusitms/connectdog/core/data/repository/ApplyRepository.kt @@ -1,7 +1,10 @@ package com.kusitms.connectdog.core.data.repository +import com.kusitms.connectdog.core.data.api.model.AdditionalAuthBody import com.kusitms.connectdog.core.data.api.model.volunteer.ApplyBody interface ApplyRepository { suspend fun postApplyVolunteer(postId: Long, applyBody: ApplyBody) + suspend fun postAdditionalAuth(additionalAuthBody: AdditionalAuthBody) + suspend fun getAdditionalAuth(): AdditionalAuthBody } diff --git a/core/data/src/main/java/com/kusitms/connectdog/core/data/repository/ApplyRepositoryImpl.kt b/core/data/src/main/java/com/kusitms/connectdog/core/data/repository/ApplyRepositoryImpl.kt index 7bf535c2d..03e735697 100644 --- a/core/data/src/main/java/com/kusitms/connectdog/core/data/repository/ApplyRepositoryImpl.kt +++ b/core/data/src/main/java/com/kusitms/connectdog/core/data/repository/ApplyRepositoryImpl.kt @@ -1,6 +1,7 @@ package com.kusitms.connectdog.core.data.repository import com.kusitms.connectdog.core.data.api.ApiService +import com.kusitms.connectdog.core.data.api.model.AdditionalAuthBody import com.kusitms.connectdog.core.data.api.model.volunteer.ApplyBody import javax.inject.Inject @@ -10,4 +11,12 @@ internal class ApplyRepositoryImpl @Inject constructor( override suspend fun postApplyVolunteer(postId: Long, applyBody: ApplyBody) { api.postApplyVolunteer(postId, applyBody) } + + override suspend fun postAdditionalAuth(additionalAuthBody: AdditionalAuthBody) { + api.postAdditionalAuth(additionalAuthBody) + } + + override suspend fun getAdditionalAuth(): AdditionalAuthBody { + return api.getAdditionalAuth() + } } From a247c3e9991fe7905d32eafa7e3ec1eeea6e7d7b Mon Sep 17 00:00:00 2001 From: Seunggu Kang Date: Sat, 16 Mar 2024 02:14:00 +0900 Subject: [PATCH 02/25] =?UTF-8?q?feat:=20=EC=B6=94=EA=B0=80=20=EC=9D=B8?= =?UTF-8?q?=EC=A6=9D=20=EC=A0=95=EB=B3=B4=EB=A5=BC=20post/get=20=ED=95=98?= =?UTF-8?q?=EB=8A=94=20api=20=EC=97=B0=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/kusitms/connectdog/core/data/api/ApiService.kt | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/core/data/src/main/java/com/kusitms/connectdog/core/data/api/ApiService.kt b/core/data/src/main/java/com/kusitms/connectdog/core/data/api/ApiService.kt index a9f6dbfaf..79dbabb53 100644 --- a/core/data/src/main/java/com/kusitms/connectdog/core/data/api/ApiService.kt +++ b/core/data/src/main/java/com/kusitms/connectdog/core/data/api/ApiService.kt @@ -1,5 +1,6 @@ package com.kusitms.connectdog.core.data.api +import com.kusitms.connectdog.core.data.api.model.AdditionalAuthBody import com.kusitms.connectdog.core.data.api.model.DeleteAccountResponse import com.kusitms.connectdog.core.data.api.model.IsDuplicateNicknameResponse import com.kusitms.connectdog.core.data.api.model.LoginResponseItem @@ -175,6 +176,14 @@ internal interface ApiService { @Path("postId") postId: Long ) + @POST("/volunteers/additional-auth") + suspend fun postAdditionalAuth( + @Body additionalAuthBody: AdditionalAuthBody + ) + + @GET("/volunteers/applications/my-info") + suspend fun getAdditionalAuth(): AdditionalAuthBody + /** * 이동봉사자 > 공고 상세조회 > 중개자 프로필 조회 */ From 30bac5ed7ea7f2f85d75c24f6842eccb82739826 Mon Sep 17 00:00:00 2001 From: Seunggu Kang Date: Fri, 22 Mar 2024 21:50:26 +0900 Subject: [PATCH 03/25] =?UTF-8?q?feat:=20=EB=8B=89=EB=84=A4=EC=9E=84,=20?= =?UTF-8?q?=ED=94=84=EB=A1=9C=ED=95=84=20=EC=9D=B4=EB=AF=B8=EC=A7=80=20?= =?UTF-8?q?=EC=88=98=EC=A0=95=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mypage/screen/EditProfileScreen.kt | 74 +++++++++++++++---- 1 file changed, 61 insertions(+), 13 deletions(-) diff --git a/feature/mypage/src/main/java/com/kusitms/connectdog/feature/mypage/screen/EditProfileScreen.kt b/feature/mypage/src/main/java/com/kusitms/connectdog/feature/mypage/screen/EditProfileScreen.kt index 7fc83ef3f..1aceac3e7 100644 --- a/feature/mypage/src/main/java/com/kusitms/connectdog/feature/mypage/screen/EditProfileScreen.kt +++ b/feature/mypage/src/main/java/com/kusitms/connectdog/feature/mypage/screen/EditProfileScreen.kt @@ -1,18 +1,23 @@ package com.kusitms.connectdog.feature.mypage.screen import android.annotation.SuppressLint -import android.util.Log import androidx.compose.foundation.Image import androidx.compose.foundation.clickable import androidx.compose.foundation.interaction.MutableInteractionSource 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.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size +import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Scaffold +import androidx.compose.material3.Text import androidx.compose.runtime.Composable +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.getValue import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -20,23 +25,28 @@ import androidx.compose.ui.platform.LocalFocusManager import androidx.compose.ui.res.painterResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import androidx.hilt.navigation.compose.hiltViewModel import com.kusitms.connectdog.core.designsystem.component.ConnectDogNormalButton import com.kusitms.connectdog.core.designsystem.component.ConnectDogOutlinedButton import com.kusitms.connectdog.core.designsystem.component.ConnectDogTextFieldWithButton import com.kusitms.connectdog.core.designsystem.component.ConnectDogTopAppBar import com.kusitms.connectdog.core.designsystem.component.TopAppBarNavigationType import com.kusitms.connectdog.core.designsystem.theme.ConnectDogTheme +import com.kusitms.connectdog.core.designsystem.theme.Gray5 +import com.kusitms.connectdog.core.designsystem.theme.PetOrange +import com.kusitms.connectdog.core.designsystem.theme.Red1 import com.kusitms.connectdog.core.util.getProfileImageId import com.kusitms.connectdog.feature.mypage.R +import com.kusitms.connectdog.feature.mypage.viewmodel.EditProfileViewModel @SuppressLint("UnusedMaterial3ScaffoldPaddingParameter") @Composable fun EditProfileScreen( onBackClick: () -> Unit, - nickname: String, - profileImageIndex: Int + onEditProfileImageClick: () -> Unit, + viewModel: EditProfileViewModel ) { - Log.d("tsaq", "$nickname $profileImageIndex") Scaffold( topBar = { ConnectDogTopAppBar( @@ -47,17 +57,21 @@ fun EditProfileScreen( ) } ) { - Content(nickname, profileImageIndex) + Content(onEditProfileImageClick, onBackClick, viewModel) } } @Composable private fun Content( - nickname: String, - profileImageIndex: Int + onEditProfileImageClick: () -> Unit, + onBackClick: () -> Unit, + viewModel: EditProfileViewModel ) { val focusManager = LocalFocusManager.current val interactionSource = remember { MutableInteractionSource() } + val nickname by viewModel.nickname.collectAsState() + val profileImageIndex by viewModel.selectedImageIndex.collectAsState() + val isDuplicate by viewModel.isDuplicatedNickname.collectAsState() Column( modifier = Modifier @@ -70,14 +84,18 @@ private fun Content( ), horizontalAlignment = Alignment.CenterHorizontally ) { - Image(painter = painterResource(id = getProfileImageId(profileImageIndex)), contentDescription = null, modifier = Modifier.size(100.dp)) + Image( + painter = painterResource(id = getProfileImageId(profileImageIndex)), + contentDescription = null, + modifier = Modifier.size(100.dp) + ) Spacer(modifier = Modifier.height(12.dp)) ConnectDogOutlinedButton( width = 110, height = 26, text = "프로필 이미지 변경", padding = 3, - onClick = { /*TODO*/ } + onClick = onEditProfileImageClick ) Spacer(modifier = Modifier.height(40.dp)) ConnectDogTextFieldWithButton( @@ -87,18 +105,48 @@ private fun Content( textFieldLabel = "닉네임", placeholder = "닉네임 입력", buttonLabel = "중복 확인", - onTextChanged = {}, + onTextChanged = { viewModel.updateNickname(it) }, + onClick = { viewModel.updateNicknameAvailability() }, + borderColor = when (isDuplicate) { + true -> MaterialTheme.colorScheme.error + false -> PetOrange + else -> Gray5 + }, + isError = isDuplicate ?: false, padding = 5 ) + Spacer(modifier = Modifier.height(4.dp)) + Row( + modifier = Modifier.fillMaxWidth() + ) { + Text( + text = isDuplicate?.let { + if (it) { "이미 사용중인 닉네임 입니다." } else { "사용할 수 있는 닉네임 입니다." } + } ?: run { "" }, + color = when (isDuplicate) { + false -> PetOrange + else -> Red1 + }, + fontSize = 11.sp, + modifier = Modifier.padding(top = 4.dp, start = 8.dp) + ) + Spacer(modifier = Modifier.weight(1f)) + } Spacer(modifier = Modifier.weight(1f)) - ConnectDogNormalButton(content = "완료") + ConnectDogNormalButton( + content = "완료", + onClick = { + viewModel.updateUserInfo() + onBackClick() + } + ) } } @Preview @Composable -private fun test() { +private fun EditProfileScreenPreview() { ConnectDogTheme { - EditProfileScreen(onBackClick = {}, nickname = "hia", profileImageIndex = 7) + EditProfileScreen(onBackClick = {}, onEditProfileImageClick = {}, hiltViewModel()) } } From f6fcf08bb1f781520d8e6dc7d841bb57b203319c Mon Sep 17 00:00:00 2001 From: Seunggu Kang Date: Fri, 22 Mar 2024 21:51:05 +0900 Subject: [PATCH 04/25] =?UTF-8?q?update:=20applyViewModel=EC=9D=84=20?= =?UTF-8?q?=EA=B3=B5=EC=9C=A0=ED=95=98=EC=A7=80=20=EC=95=8A=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectdog/feature/home/navigation/HomeNavigation.kt | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/feature/home/src/main/java/com/kusitms/connectdog/feature/home/navigation/HomeNavigation.kt b/feature/home/src/main/java/com/kusitms/connectdog/feature/home/navigation/HomeNavigation.kt index 377f1f7ab..cdbf11126 100644 --- a/feature/home/src/main/java/com/kusitms/connectdog/feature/home/navigation/HomeNavigation.kt +++ b/feature/home/src/main/java/com/kusitms/connectdog/feature/home/navigation/HomeNavigation.kt @@ -8,7 +8,6 @@ import androidx.navigation.NavType import androidx.navigation.compose.composable import androidx.navigation.navArgument import com.kusitms.connectdog.core.util.localDateGson -import com.kusitms.connectdog.feature.home.ApplyViewModel import com.kusitms.connectdog.feature.home.model.Filter import com.kusitms.connectdog.feature.home.screen.ApplyScreen import com.kusitms.connectdog.feature.home.screen.CertificationScreen @@ -94,7 +93,6 @@ fun NavGraphBuilder.homeNavGraph( onSendMessage: (String) -> Unit, onVerifyCode: (String, (Boolean) -> Unit) -> Unit, onShowErrorSnackBar: (throwable: Throwable?) -> Unit, - applyViewModel: ApplyViewModel, imeHeight: Int ) { composable(route = HomeRoute.route) { @@ -193,8 +191,7 @@ fun NavGraphBuilder.homeNavGraph( onSendMessageClick = onSendMessage, onVerifyCodeClick = onVerifyCode, postId = it.arguments!!.getLong("postId"), - imeHeight = imeHeight, - viewModel = applyViewModel + imeHeight = imeHeight ) } @@ -210,8 +207,7 @@ fun NavGraphBuilder.homeNavGraph( onBackClick = onBackClick, onClick = onNavigateToComplete, postId = it.arguments!!.getLong("postId"), - imeHeight = imeHeight, - viewModel = applyViewModel + imeHeight = imeHeight ) } From ce5549c05933e2e2fc7b6667b06c17dcc4b58cf4 Mon Sep 17 00:00:00 2001 From: Seunggu Kang Date: Fri, 22 Mar 2024 21:51:33 +0900 Subject: [PATCH 05/25] =?UTF-8?q?feat:=20=ED=94=84=EB=A1=9C=ED=95=84=20?= =?UTF-8?q?=EC=9D=B4=EB=AF=B8=EC=A7=80=20=EC=88=98=EC=A0=95=ED=99=94?= =?UTF-8?q?=EB=A9=B4=EC=9C=BC=EB=A1=9C=20=EC=9D=B4=EB=8F=99=ED=95=98?= =?UTF-8?q?=EA=B8=B0=20=EC=9C=84=ED=95=9C=20=ED=95=A8=EC=88=98=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/kusitms/connectdog/feature/main/MainNavigator.kt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/feature/main/src/main/java/com/kusitms/connectdog/feature/main/MainNavigator.kt b/feature/main/src/main/java/com/kusitms/connectdog/feature/main/MainNavigator.kt index e673060a6..2ca2cb89d 100644 --- a/feature/main/src/main/java/com/kusitms/connectdog/feature/main/MainNavigator.kt +++ b/feature/main/src/main/java/com/kusitms/connectdog/feature/main/MainNavigator.kt @@ -30,6 +30,7 @@ import com.kusitms.connectdog.feature.management.navigation.navigateManagement import com.kusitms.connectdog.feature.mypage.navigation.navigateBadge import com.kusitms.connectdog.feature.mypage.navigation.navigateBookmark import com.kusitms.connectdog.feature.mypage.navigation.navigateEditProfile +import com.kusitms.connectdog.feature.mypage.navigation.navigateEditProfileImage import com.kusitms.connectdog.feature.mypage.navigation.navigateManageAccount import com.kusitms.connectdog.feature.mypage.navigation.navigateMypage import com.kusitms.connectdog.feature.mypage.navigation.navigateNotification @@ -114,6 +115,7 @@ internal class MainNavigator( fun navigateSetting() = navController.navigateSetting() fun navigateBadge() = navController.navigateBadge() fun navigateBookmark() = navController.navigateBookmark() + fun navigateEditProfileImage() = navController.navigateEditProfileImage() fun popBackStackIfNotHome() { if (!isSameCurrentDestination(HomeRoute.route)) { From 48d57e35f5e0e75bc603c1072f9feb6d8aa2afa0 Mon Sep 17 00:00:00 2001 From: Seunggu Kang Date: Fri, 22 Mar 2024 21:52:04 +0900 Subject: [PATCH 06/25] =?UTF-8?q?update:=20applyViewModel=EC=9D=84=20?= =?UTF-8?q?=EA=B3=B5=EC=9C=A0=ED=95=98=EC=A7=80=20=EC=95=8A=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/kusitms/connectdog/feature/main/MainScreen.kt | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/feature/main/src/main/java/com/kusitms/connectdog/feature/main/MainScreen.kt b/feature/main/src/main/java/com/kusitms/connectdog/feature/main/MainScreen.kt index 7ff6faa4d..7ee98c4cc 100644 --- a/feature/main/src/main/java/com/kusitms/connectdog/feature/main/MainScreen.kt +++ b/feature/main/src/main/java/com/kusitms/connectdog/feature/main/MainScreen.kt @@ -29,11 +29,11 @@ import androidx.hilt.navigation.compose.hiltViewModel import androidx.navigation.compose.NavHost import com.kusitms.connectdog.core.designsystem.theme.ConnectDogTheme import com.kusitms.connectdog.core.util.AppMode -import com.kusitms.connectdog.feature.home.ApplyViewModel import com.kusitms.connectdog.feature.home.navigation.homeNavGraph import com.kusitms.connectdog.feature.login.loginNavGraph import com.kusitms.connectdog.feature.management.navigation.managementNavGraph import com.kusitms.connectdog.feature.mypage.navigation.mypageNavGraph +import com.kusitms.connectdog.feature.mypage.viewmodel.EditProfileViewModel import com.kusitms.connectdog.signup.signUpGraph import com.kusitms.connectdog.signup.viewmodel.SignUpViewModel import com.kusitms.connectdog.signup.viewmodel.VolunteerProfileViewModel @@ -48,8 +48,8 @@ internal fun MainScreen( imeHeight: Int ) { val profileViewModel: VolunteerProfileViewModel = hiltViewModel() - val applyViewModel: ApplyViewModel = hiltViewModel() val signUpViewModel: SignUpViewModel = hiltViewModel() + val editProfileViewModel: EditProfileViewModel = hiltViewModel() Scaffold( content = { @@ -100,8 +100,7 @@ internal fun MainScreen( onShowErrorSnackBar = {}, onSendMessage = { sendVerificationCode(it) }, onVerifyCode = { code, callback -> verifyCode(code) { callback(it) } }, - imeHeight = imeHeight, - applyViewModel = applyViewModel + imeHeight = imeHeight ) managementNavGraph( onBackClick = navigator::popBackStackIfNotHome, @@ -111,12 +110,14 @@ internal fun MainScreen( padding = it, onLogoutClick = { navigator.onLogoutClick() }, onBackClick = navigator::popBackStackIfNotHome, - onEditProfileClick = { nickname, index -> navigator.navigateEditProfile(nickname, index) }, + onEditProfileClick = { navigator.navigateEditProfile() }, onManageAccountClick = { navigator.navigateManageAccount() }, onNotificationClick = { navigator.navigateNotification() }, onSettingClick = { navigator.navigateSetting() }, onBadgeClick = { navigator.navigateBadge() }, onBookmarkClick = { navigator.navigateBookmark() }, + onEditProfileImageClick = { navigator.navigateEditProfileImage() }, + editProfileViewModel = editProfileViewModel, onShowErrorSnackbar = {} ) } From 6e6c64a14fce8688f05790f3901b1efac871f21d Mon Sep 17 00:00:00 2001 From: Seunggu Kang Date: Fri, 22 Mar 2024 21:52:31 +0900 Subject: [PATCH 07/25] =?UTF-8?q?feat:=20=ED=94=84=EB=A1=9C=ED=95=84=20?= =?UTF-8?q?=EC=9D=B4=EB=AF=B8=EC=A7=80=20=EC=88=98=EC=A0=95=ED=99=94?= =?UTF-8?q?=EB=A9=B4=EC=9C=BC=EB=A1=9C=20=EC=9D=B4=EB=8F=99=ED=95=98?= =?UTF-8?q?=EA=B8=B0=20=EC=9C=84=ED=95=9C=20=ED=95=A8=EC=88=98=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mypage/navigation/MypageNavigation.kt | 26 ++++++++++++++----- 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/feature/mypage/src/main/java/com/kusitms/connectdog/feature/mypage/navigation/MypageNavigation.kt b/feature/mypage/src/main/java/com/kusitms/connectdog/feature/mypage/navigation/MypageNavigation.kt index c67cf2f85..4347190d4 100644 --- a/feature/mypage/src/main/java/com/kusitms/connectdog/feature/mypage/navigation/MypageNavigation.kt +++ b/feature/mypage/src/main/java/com/kusitms/connectdog/feature/mypage/navigation/MypageNavigation.kt @@ -11,7 +11,9 @@ import com.kusitms.connectdog.feature.mypage.screen.EditProfileScreen import com.kusitms.connectdog.feature.mypage.screen.ManageAccountScreen import com.kusitms.connectdog.feature.mypage.screen.MypageRoute import com.kusitms.connectdog.feature.mypage.screen.NotificationScreen +import com.kusitms.connectdog.feature.mypage.screen.SelectProfileImageScreen import com.kusitms.connectdog.feature.mypage.screen.SettingScreen +import com.kusitms.connectdog.feature.mypage.viewmodel.EditProfileViewModel fun NavController.navigateMypage(navOptions: NavOptions) { navigate(MypageRoute.route, navOptions) @@ -41,9 +43,12 @@ fun NavController.navigateBookmark() { navigate(MypageRoute.bookmark) } +fun NavController.navigateEditProfileImage() { + navigate(MypageRoute.editProfileImage) +} + fun NavGraphBuilder.mypageNavGraph( padding: PaddingValues, - onClick: () -> Unit, onLogoutClick: () -> Unit, onBackClick: () -> Unit, onEditProfileClick: () -> Unit, @@ -52,14 +57,13 @@ fun NavGraphBuilder.mypageNavGraph( onSettingClick: () -> Unit, onBadgeClick: () -> Unit, onBookmarkClick: () -> Unit, - onShowErrorSnackbar: (throwable: Throwable?) -> Unit + onShowErrorSnackbar: (throwable: Throwable?) -> Unit, + onEditProfileImageClick: () -> Unit, + editProfileViewModel: EditProfileViewModel ) { composable(route = MypageRoute.route) { MypageRoute( - padding, - onClick, onEditProfileClick, - onManageAccountClick, onNotificationClick, onSettingClick, onBadgeClick, @@ -70,7 +74,9 @@ fun NavGraphBuilder.mypageNavGraph( composable(route = MypageRoute.editProfile) { EditProfileScreen( - onBackClick = onBackClick + onBackClick = onBackClick, + onEditProfileImageClick = onEditProfileImageClick, + viewModel = editProfileViewModel ) } @@ -105,11 +111,19 @@ fun NavGraphBuilder.mypageNavGraph( onBackClick = onBackClick ) } + + composable(route = MypageRoute.editProfileImage) { + SelectProfileImageScreen( + onBackClick = onBackClick, + viewModel = editProfileViewModel + ) + } } object MypageRoute { const val route = "mypage" const val editProfile = "editProfile" + const val editProfileImage = "editProfileImage" const val manageAccount = "manageAccount" const val notification = "notification" const val setting = "setting" From 910e4e44ae6bf186bb2d72f135c0cf958a3cb42f Mon Sep 17 00:00:00 2001 From: Seunggu Kang Date: Fri, 22 Mar 2024 21:53:03 +0900 Subject: [PATCH 08/25] =?UTF-8?q?feat:=20=EA=B2=8C=EC=A0=95=20=EC=82=AD?= =?UTF-8?q?=EC=A0=9C,=20=EB=8B=89=EB=84=A4=EC=9E=84=20=EC=A4=91=EB=B3=B5?= =?UTF-8?q?=20=ED=99=95=EC=9D=B8,=20=ED=94=84=EB=A1=9C=ED=95=84=20?= =?UTF-8?q?=EC=A0=95=EB=B3=B4=20=EC=88=98=EC=A0=95=EC=9D=84=20=EC=9C=84?= =?UTF-8?q?=ED=95=9C=20api=20=ED=95=A8=EC=88=98=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectdog/core/data/repository/MyPageRepository.kt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/core/data/src/main/java/com/kusitms/connectdog/core/data/repository/MyPageRepository.kt b/core/data/src/main/java/com/kusitms/connectdog/core/data/repository/MyPageRepository.kt index 5f33f085f..7cd31079c 100644 --- a/core/data/src/main/java/com/kusitms/connectdog/core/data/repository/MyPageRepository.kt +++ b/core/data/src/main/java/com/kusitms/connectdog/core/data/repository/MyPageRepository.kt @@ -1,8 +1,11 @@ package com.kusitms.connectdog.core.data.repository +import com.kusitms.connectdog.core.data.api.model.DeleteAccountResponse +import com.kusitms.connectdog.core.data.api.model.IsDuplicateNicknameResponse import com.kusitms.connectdog.core.data.api.model.MyInfoResponseItem import com.kusitms.connectdog.core.data.api.model.volunteer.BadgeResponse import com.kusitms.connectdog.core.data.api.model.volunteer.BookmarkResponseItem +import com.kusitms.connectdog.core.data.api.model.volunteer.IsDuplicateNicknameBody import com.kusitms.connectdog.core.data.api.model.volunteer.UserInfoResponse interface MyPageRepository { @@ -10,4 +13,7 @@ interface MyPageRepository { suspend fun getUserInfo(): UserInfoResponse suspend fun getBadge(): List suspend fun getBookmarkData(): List + suspend fun deleteAccount(): DeleteAccountResponse + suspend fun postNickname(nickname: IsDuplicateNicknameBody): IsDuplicateNicknameResponse + suspend fun updateUserInfo(userInfo: UserInfoResponse) } From c9f17ec54895a913e5046df6361586872c341a66 Mon Sep 17 00:00:00 2001 From: Seunggu Kang Date: Fri, 22 Mar 2024 21:53:22 +0900 Subject: [PATCH 09/25] =?UTF-8?q?feat:=20=ED=94=84=EB=A1=9C=ED=95=84=20?= =?UTF-8?q?=EC=A0=95=EB=B3=B4=20=EC=88=98=EC=A0=95=EC=9D=84=20=EC=9C=84?= =?UTF-8?q?=ED=95=9C=20api=20=ED=95=A8=EC=88=98=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/kusitms/connectdog/core/data/api/ApiService.kt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/core/data/src/main/java/com/kusitms/connectdog/core/data/api/ApiService.kt b/core/data/src/main/java/com/kusitms/connectdog/core/data/api/ApiService.kt index 79dbabb53..7facf6ec0 100644 --- a/core/data/src/main/java/com/kusitms/connectdog/core/data/api/ApiService.kt +++ b/core/data/src/main/java/com/kusitms/connectdog/core/data/api/ApiService.kt @@ -30,6 +30,7 @@ import retrofit2.http.Body import retrofit2.http.DELETE import retrofit2.http.GET import retrofit2.http.Headers +import retrofit2.http.PATCH import retrofit2.http.POST import retrofit2.http.Path import retrofit2.http.Query @@ -158,6 +159,11 @@ internal interface ApiService { @DELETE("/volunteers/my/delete") suspend fun deleteAccount(): DeleteAccountResponse + @PATCH("/volunteers/my/profile") + suspend fun updateUserInfo( + @Body userInfo: UserInfoResponse + ) + /** * 이동봉사자 > 공고 상세조회 */ From 29f3ca9c9f2b5167ee3149adce096d0aef9be3fb Mon Sep 17 00:00:00 2001 From: Seunggu Kang Date: Fri, 22 Mar 2024 21:54:00 +0900 Subject: [PATCH 10/25] =?UTF-8?q?fix:=20=EA=B3=B5=EC=9C=A0=EB=90=9C=20view?= =?UTF-8?q?Model=EC=9D=84=20=EC=82=AC=EC=9A=A9=ED=95=98=EC=A7=80=20?= =?UTF-8?q?=EC=95=8A=EA=B3=A0=20hiltViewModel=20=EC=82=AC=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/kusitms/connectdog/feature/home/screen/ApplyScreen.kt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/feature/home/src/main/java/com/kusitms/connectdog/feature/home/screen/ApplyScreen.kt b/feature/home/src/main/java/com/kusitms/connectdog/feature/home/screen/ApplyScreen.kt index 6c4f752d7..8b6eec2aa 100644 --- a/feature/home/src/main/java/com/kusitms/connectdog/feature/home/screen/ApplyScreen.kt +++ b/feature/home/src/main/java/com/kusitms/connectdog/feature/home/screen/ApplyScreen.kt @@ -30,7 +30,6 @@ import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue import androidx.compose.runtime.remember -import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalFocusManager @@ -59,7 +58,7 @@ fun ApplyScreen( onClick: () -> Unit = {}, postId: Long, imeHeight: Int, - viewModel: ApplyViewModel + viewModel: ApplyViewModel = hiltViewModel() ) { Scaffold( topBar = { From c8498a63f6a18ab08607b79ff19ab0c4811fbdae Mon Sep 17 00:00:00 2001 From: Seunggu Kang Date: Fri, 22 Mar 2024 21:55:13 +0900 Subject: [PATCH 11/25] =?UTF-8?q?feat:=20=ED=94=84=EB=A1=9C=ED=95=84=20?= =?UTF-8?q?=EC=9D=B4=EB=AF=B8=EC=A7=80=20=EC=88=98=EC=A0=95=20=ED=99=94?= =?UTF-8?q?=EB=A9=B4=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mypage/screen/SelectProfileImageScreen.kt | 139 ++++++++++++++++++ 1 file changed, 139 insertions(+) create mode 100644 feature/mypage/src/main/java/com/kusitms/connectdog/feature/mypage/screen/SelectProfileImageScreen.kt diff --git a/feature/mypage/src/main/java/com/kusitms/connectdog/feature/mypage/screen/SelectProfileImageScreen.kt b/feature/mypage/src/main/java/com/kusitms/connectdog/feature/mypage/screen/SelectProfileImageScreen.kt new file mode 100644 index 000000000..c3ec24066 --- /dev/null +++ b/feature/mypage/src/main/java/com/kusitms/connectdog/feature/mypage/screen/SelectProfileImageScreen.kt @@ -0,0 +1,139 @@ +package com.kusitms.connectdog.feature.mypage.screen + +import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.border +import androidx.compose.foundation.clickable +import androidx.compose.foundation.interaction.MutableInteractionSource +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.aspectRatio +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.getValue +import androidx.compose.runtime.remember +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.platform.LocalFocusManager +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import com.kusitms.connectdog.core.designsystem.R +import com.kusitms.connectdog.core.designsystem.component.ConnectDogNormalButton +import com.kusitms.connectdog.core.designsystem.component.ConnectDogTopAppBar +import com.kusitms.connectdog.core.designsystem.component.TopAppBarNavigationType +import com.kusitms.connectdog.core.designsystem.theme.Orange_40 +import com.kusitms.connectdog.core.designsystem.theme.PetOrange +import com.kusitms.connectdog.core.util.getProfileImageId +import com.kusitms.connectdog.feature.mypage.viewmodel.EditProfileViewModel + +@Composable +fun SelectProfileImageScreen( + onBackClick: () -> Unit, + viewModel: EditProfileViewModel +) { + val focusManager = LocalFocusManager.current + val interactionSource = remember { MutableInteractionSource() } + val selectedImageIndex by viewModel.selectedImageIndex.collectAsState() + + Box( + modifier = Modifier + .fillMaxSize() + .background(Color.White) + .padding(bottom = 32.dp) + .clickable( + onClick = { focusManager.clearFocus() }, + indication = null, + interactionSource = interactionSource + ) + ) { + Column( + modifier = Modifier + .fillMaxSize() + .background(Color.White) + ) { + ConnectDogTopAppBar( + titleRes = R.string.select_image, + navigationType = TopAppBarNavigationType.BACK, + navigationIconContentDescription = "Navigation icon", + onNavigationClick = onBackClick + ) + Spacer(modifier = Modifier.height(32.dp)) + Text( + text = "프로필 이미지를\n선택해주세요", + fontSize = 20.sp, + fontWeight = FontWeight.Bold, + modifier = Modifier.padding(horizontal = 20.dp) + ) + Spacer(modifier = Modifier.height(40.dp)) + ProfileImageGrid(selectedImageIndex, viewModel) + } + + ConnectDogNormalButton( + content = "선택", + color = if (selectedImageIndex != -1) { PetOrange } else { Orange_40 }, + modifier = Modifier + .fillMaxWidth() + .height(56.dp) + .align(Alignment.BottomCenter) + .padding(horizontal = 20.dp), + onClick = { + viewModel.updateProfileImageIndex(selectedImageIndex) + onBackClick() + } + ) + } +} + +@Composable +fun ProfileImageGrid( + selectedImageIndex: Int, + viewModel: EditProfileViewModel +) { + val modifier = Modifier + .padding(15.dp) + .aspectRatio(1f) + .clip(CircleShape) + + Column( + modifier = Modifier.fillMaxWidth() + ) { + for (i in 0 until 3) { + Row { + for (j in 0 until 3) { + val index = i * 3 + j + Image( + painter = painterResource(id = getProfileImageId(index)), + contentDescription = "description for accessibility", + modifier = Modifier + .weight(1f) + .clickable( + indication = null, + interactionSource = remember { MutableInteractionSource() } + ) { + viewModel.updateProfileImageIndex(index) + } + .then( + if (selectedImageIndex == index) { + modifier.border(4.dp, PetOrange, CircleShape) + } else { + modifier + } + ) + ) + } + } + } + } +} From 657fa25e674660b30b2de6f7e5d38dd19e5a78d0 Mon Sep 17 00:00:00 2001 From: Seunggu Kang Date: Fri, 22 Mar 2024 21:55:27 +0900 Subject: [PATCH 12/25] =?UTF-8?q?feat:=20=ED=94=84=EB=A1=9C=ED=95=84=20?= =?UTF-8?q?=EC=A0=95=EB=B3=B4=20=EC=88=98=EC=A0=95=EC=9D=84=20=EC=9C=84?= =?UTF-8?q?=ED=95=9C=20viewModel=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mypage/viewmodel/EditProfileViewModel.kt | 80 +++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 feature/mypage/src/main/java/com/kusitms/connectdog/feature/mypage/viewmodel/EditProfileViewModel.kt diff --git a/feature/mypage/src/main/java/com/kusitms/connectdog/feature/mypage/viewmodel/EditProfileViewModel.kt b/feature/mypage/src/main/java/com/kusitms/connectdog/feature/mypage/viewmodel/EditProfileViewModel.kt new file mode 100644 index 000000000..d59a0505b --- /dev/null +++ b/feature/mypage/src/main/java/com/kusitms/connectdog/feature/mypage/viewmodel/EditProfileViewModel.kt @@ -0,0 +1,80 @@ +package com.kusitms.connectdog.feature.mypage.viewmodel + +import android.util.Log +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.kusitms.connectdog.core.data.api.model.volunteer.IsDuplicateNicknameBody +import com.kusitms.connectdog.core.data.api.model.volunteer.UserInfoResponse +import com.kusitms.connectdog.core.data.repository.MyPageRepository +import dagger.hilt.android.lifecycle.HiltViewModel +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.launch +import javax.inject.Inject + +@HiltViewModel +class EditProfileViewModel @Inject constructor( + private val myPageRepository: MyPageRepository +) : ViewModel() { + init { + fetchProfileInformation() + } + + private val _isDuplicatedNickname: MutableStateFlow = MutableStateFlow(null) + val isDuplicatedNickname: StateFlow + get() = _isDuplicatedNickname + + private val _selectedImageIndex: MutableStateFlow = MutableStateFlow(0) + val selectedImageIndex: StateFlow + get() = _selectedImageIndex + + private val _nickname: MutableStateFlow = MutableStateFlow("") + val nickname: StateFlow + get() = _nickname + + fun updateNickname(value: String) { + _nickname.value = value + } + + fun updateProfileImageIndex(imageIndex: Int) { + _selectedImageIndex.value = imageIndex + } + + private fun fetchProfileInformation() { + viewModelScope.launch { + try { + val response = myPageRepository.getUserInfo() + updateProfileImageIndex(response.profileImageNum) + updateNickname(response.nickname) + } catch (e: Exception) { + Log.d("Asdf", e.message.toString()) + } + } + } + + fun updateNicknameAvailability() { + val body = IsDuplicateNicknameBody(nickname = _nickname.value) + viewModelScope.launch { + try { + val response = myPageRepository.postNickname(body) + _isDuplicatedNickname.value = response.isDuplicated + } catch (e: Exception) { + Log.d("asdf", e.message.toString()) + } + } + } + + fun updateUserInfo() { + val body = UserInfoResponse( + nickname = _nickname.value, + profileImageNum = _selectedImageIndex.value + ) + viewModelScope.launch { + try { + myPageRepository.updateUserInfo(body) + } catch (e: Exception) { + Log.d("asdf", e.message.toString()) + } + } + } +} From 4cee271d36acdcfba298ea08e2f0bd11203a1d0e Mon Sep 17 00:00:00 2001 From: Seunggu Kang Date: Fri, 22 Mar 2024 21:55:40 +0900 Subject: [PATCH 13/25] =?UTF-8?q?feat:=20=EA=B3=84=EC=A0=95=20=EC=82=AD?= =?UTF-8?q?=EC=A0=9C=20DTO=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/data/api/model/DeleteAccountResponse.kt | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 core/data/src/main/java/com/kusitms/connectdog/core/data/api/model/DeleteAccountResponse.kt diff --git a/core/data/src/main/java/com/kusitms/connectdog/core/data/api/model/DeleteAccountResponse.kt b/core/data/src/main/java/com/kusitms/connectdog/core/data/api/model/DeleteAccountResponse.kt new file mode 100644 index 000000000..cee42ba42 --- /dev/null +++ b/core/data/src/main/java/com/kusitms/connectdog/core/data/api/model/DeleteAccountResponse.kt @@ -0,0 +1,12 @@ +package com.kusitms.connectdog.core.data.api.model + +data class DeleteAccountResponse( + val code: Int, + val isSuccess: Boolean, + val message: String, + val result: Result +) + +data class Result( + val userId: Long +) From 77641e5ebb4c83c3b81be8eaac03ac5d05a5fbc3 Mon Sep 17 00:00:00 2001 From: Seunggu Kang Date: Fri, 22 Mar 2024 21:58:37 +0900 Subject: [PATCH 14/25] =?UTF-8?q?feat:=20=EC=B6=94=EA=B0=80=20=EC=A0=95?= =?UTF-8?q?=EB=B3=B4=20DTO=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectdog/core/data/api/model/AdditionalAuthBody.kt | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 core/data/src/main/java/com/kusitms/connectdog/core/data/api/model/AdditionalAuthBody.kt diff --git a/core/data/src/main/java/com/kusitms/connectdog/core/data/api/model/AdditionalAuthBody.kt b/core/data/src/main/java/com/kusitms/connectdog/core/data/api/model/AdditionalAuthBody.kt new file mode 100644 index 000000000..b131506ad --- /dev/null +++ b/core/data/src/main/java/com/kusitms/connectdog/core/data/api/model/AdditionalAuthBody.kt @@ -0,0 +1,6 @@ +package com.kusitms.connectdog.core.data.api.model + +data class AdditionalAuthBody( + val name: String, + val phone: String +) From 92b3205eba92776296b1dbdbaae641ff9b71ef01 Mon Sep 17 00:00:00 2001 From: Seunggu Kang Date: Fri, 22 Mar 2024 21:59:32 +0900 Subject: [PATCH 15/25] =?UTF-8?q?feat:=20=EA=B2=8C=EC=A0=95=20=EC=82=AD?= =?UTF-8?q?=EC=A0=9C,=20=EB=8B=89=EB=84=A4=EC=9E=84=20=EC=A4=91=EB=B3=B5?= =?UTF-8?q?=20=ED=99=95=EC=9D=B8,=20=ED=94=84=EB=A1=9C=ED=95=84=20?= =?UTF-8?q?=EC=A0=95=EB=B3=B4=20=EC=88=98=EC=A0=95=EC=9D=84=20=EC=9C=84?= =?UTF-8?q?=ED=95=9C=20api=20=ED=95=A8=EC=88=98=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/data/repository/MyPageRepositoryImpl.kt | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/core/data/src/main/java/com/kusitms/connectdog/core/data/repository/MyPageRepositoryImpl.kt b/core/data/src/main/java/com/kusitms/connectdog/core/data/repository/MyPageRepositoryImpl.kt index 3e1d66407..1ebae56a8 100644 --- a/core/data/src/main/java/com/kusitms/connectdog/core/data/repository/MyPageRepositoryImpl.kt +++ b/core/data/src/main/java/com/kusitms/connectdog/core/data/repository/MyPageRepositoryImpl.kt @@ -1,9 +1,12 @@ package com.kusitms.connectdog.core.data.repository import com.kusitms.connectdog.core.data.api.ApiService +import com.kusitms.connectdog.core.data.api.model.DeleteAccountResponse +import com.kusitms.connectdog.core.data.api.model.IsDuplicateNicknameResponse import com.kusitms.connectdog.core.data.api.model.MyInfoResponseItem import com.kusitms.connectdog.core.data.api.model.volunteer.BadgeResponse import com.kusitms.connectdog.core.data.api.model.volunteer.BookmarkResponseItem +import com.kusitms.connectdog.core.data.api.model.volunteer.IsDuplicateNicknameBody import com.kusitms.connectdog.core.data.api.model.volunteer.UserInfoResponse import javax.inject.Inject @@ -25,4 +28,16 @@ internal class MyPageRepositoryImpl @Inject constructor( override suspend fun getBookmarkData(): List { return api.getBookmarkData() } + + override suspend fun deleteAccount(): DeleteAccountResponse { + return api.deleteAccount() + } + + override suspend fun postNickname(nickname: IsDuplicateNicknameBody): IsDuplicateNicknameResponse { + return api.postNickname(nickname) + } + + override suspend fun updateUserInfo(userInfo: UserInfoResponse) { + return api.updateUserInfo(userInfo) + } } From 668e4f0ad6075854b0695f1b53c6442d1310e15f Mon Sep 17 00:00:00 2001 From: Seunggu Kang Date: Fri, 22 Mar 2024 21:59:55 +0900 Subject: [PATCH 16/25] =?UTF-8?q?feat:=20=ED=9A=8C=EC=9B=90=20=ED=83=88?= =?UTF-8?q?=ED=87=B4=20=EB=B2=84=ED=8A=BC=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectdog/feature/mypage/screen/SettingScreen.kt | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/feature/mypage/src/main/java/com/kusitms/connectdog/feature/mypage/screen/SettingScreen.kt b/feature/mypage/src/main/java/com/kusitms/connectdog/feature/mypage/screen/SettingScreen.kt index 570b01d39..58ff088c5 100644 --- a/feature/mypage/src/main/java/com/kusitms/connectdog/feature/mypage/screen/SettingScreen.kt +++ b/feature/mypage/src/main/java/com/kusitms/connectdog/feature/mypage/screen/SettingScreen.kt @@ -127,6 +127,15 @@ private fun Content( onLogoutClick() } ) + Spacer(modifier = Modifier.height(20.dp)) + Text( + text = "회원탈퇴", + fontSize = 16.sp, + color = Gray2, + modifier = Modifier.clickable { + viewModel.deleteAccount() + } + ) } } From 4c20f18c8c8b5042d85554c9b0c6f26d376263b0 Mon Sep 17 00:00:00 2001 From: Seunggu Kang Date: Fri, 22 Mar 2024 22:00:08 +0900 Subject: [PATCH 17/25] =?UTF-8?q?feat:=20=ED=9A=8C=EC=9B=90=20=ED=83=88?= =?UTF-8?q?=ED=87=B4=20api=20=EC=97=B0=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../feature/mypage/viewmodel/SettingViewModel.kt | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/feature/mypage/src/main/java/com/kusitms/connectdog/feature/mypage/viewmodel/SettingViewModel.kt b/feature/mypage/src/main/java/com/kusitms/connectdog/feature/mypage/viewmodel/SettingViewModel.kt index cfd112904..8320649a6 100644 --- a/feature/mypage/src/main/java/com/kusitms/connectdog/feature/mypage/viewmodel/SettingViewModel.kt +++ b/feature/mypage/src/main/java/com/kusitms/connectdog/feature/mypage/viewmodel/SettingViewModel.kt @@ -1,8 +1,10 @@ package com.kusitms.connectdog.feature.mypage.viewmodel +import android.util.Log import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.kusitms.connectdog.core.data.repository.DataStoreRepository +import com.kusitms.connectdog.core.data.repository.MyPageRepository import com.kusitms.connectdog.core.util.AppMode import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.launch @@ -10,11 +12,22 @@ import javax.inject.Inject @HiltViewModel class SettingViewModel @Inject constructor( - private val dataStoreRepository: DataStoreRepository + private val dataStoreRepository: DataStoreRepository, + private val myPageRepository: MyPageRepository ) : ViewModel() { fun initLogout() { viewModelScope.launch { dataStoreRepository.saveAppMode(AppMode.LOGIN) } } + + fun deleteAccount() { + viewModelScope.launch { + try { + myPageRepository.deleteAccount() + } catch (e: Exception) { + Log.d("tesaq", e.message.toString()) + } + } + } } From 31cf8b21e6c4de8b9a2cbb8bf0f1b2b93b4ad599 Mon Sep 17 00:00:00 2001 From: Seunggu Kang Date: Fri, 22 Mar 2024 22:00:36 +0900 Subject: [PATCH 18/25] chore: dummy file created --- .../compileReleaseKotlin/cacheable/last-build.bin | Bin 18 -> 18 bytes .../local-state/build-history.bin | Bin 31 -> 31 bytes .../compileReleaseKotlin/cacheable/last-build.bin | Bin 18 -> 18 bytes .../local-state/build-history.bin | Bin 31 -> 31 bytes 4 files changed, 0 insertions(+), 0 deletions(-) diff --git a/core/designsystem/build/kotlin/compileReleaseKotlin/cacheable/last-build.bin b/core/designsystem/build/kotlin/compileReleaseKotlin/cacheable/last-build.bin index dac90ba39e2f4ba09e490ba5dd495a94e9d8b660..cb40e39d08da6ab5928eacc4a1ce4696e3541e7a 100644 GIT binary patch literal 18 YcmZ4UmVvdLhk=2yFQselAqF4-05-M+{r~^~ literal 18 YcmZ4UmVvdLhk=2y_eZ1CT?QZk06B97NB{r; diff --git a/core/designsystem/build/kotlin/compileReleaseKotlin/local-state/build-history.bin b/core/designsystem/build/kotlin/compileReleaseKotlin/local-state/build-history.bin index 021b4bfbea07a15195643dd38fe202170a7a6e29..5c2eb8909d3133305923a138f1479e300b6e7c52 100644 GIT binary patch literal 31 ccmZ4UmVvcgk^ur385kJ*Qo80Ig7O&{0Ae5o3;+NC literal 31 ccmZ4UmVvcgk^ur385kIQe>6JXh4L8~0A^1GRsaA1 diff --git a/core/model/build/kotlin/compileReleaseKotlin/cacheable/last-build.bin b/core/model/build/kotlin/compileReleaseKotlin/cacheable/last-build.bin index 2305069a396d2c9e455305b3ee0af0f04ad16533..73f123255e1a117a6c63289aedebe830728cf965 100644 GIT binary patch literal 18 XcmZ4UmVvdLhk=2yFQu!mgaHTuG}Z*6 literal 18 YcmZ4UmVvdLhk=2y_eaCdzYIVC06f+O-T(jq diff --git a/core/model/build/kotlin/compileReleaseKotlin/local-state/build-history.bin b/core/model/build/kotlin/compileReleaseKotlin/local-state/build-history.bin index 9a4b92589037d0dbd5389bbb5d418f6962ae2fd5..40274269ba68452ce4b8875c9396f884d6a5b847 100644 GIT binary patch literal 31 ccmZ4UmVvcgk^ur385kJ*Qo8y|pnL`f0A6nduK)l5 literal 31 dcmZ4UmVvcgk^ur385kIQe>Cj;3*|E~003;D1?&I- From 99c55bc0dc9780b8f0c490759a3c7192da529169 Mon Sep 17 00:00:00 2001 From: Seunggu Kang Date: Fri, 22 Mar 2024 22:01:28 +0900 Subject: [PATCH 19/25] =?UTF-8?q?fix:=20TextField=EC=9D=98=20=ED=85=8C?= =?UTF-8?q?=EB=91=90=EB=A6=AC=20=EC=83=89=EC=83=81=EC=9D=84=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=ED=95=98=EA=B8=B0=20=EC=9C=84=ED=95=9C=20=EB=A7=A4?= =?UTF-8?q?=EA=B0=9C=EB=B3=80=EC=88=98=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/designsystem/component/TextField.kt | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/core/designsystem/src/main/java/com/kusitms/connectdog/core/designsystem/component/TextField.kt b/core/designsystem/src/main/java/com/kusitms/connectdog/core/designsystem/component/TextField.kt index 28252415b..388989647 100644 --- a/core/designsystem/src/main/java/com/kusitms/connectdog/core/designsystem/component/TextField.kt +++ b/core/designsystem/src/main/java/com/kusitms/connectdog/core/designsystem/component/TextField.kt @@ -1,7 +1,6 @@ package com.kusitms.connectdog.core.designsystem.component import android.annotation.SuppressLint -import android.util.Log import androidx.annotation.StringRes import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxWidth @@ -20,6 +19,8 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.ExperimentalComposeUiApi import androidx.compose.ui.Modifier +import androidx.compose.ui.R +import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalSoftwareKeyboardController import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource @@ -40,11 +41,12 @@ fun ConnectDogTextField( label: String, enabled: Boolean = true, placeholder: String, + borderColor: Color = Gray5, @StringRes supportingText: Int? = null, imeAction: ImeAction = ImeAction.Next, keyboardType: KeyboardType = KeyboardType.Text, isError: Boolean = false, - @SuppressLint("PrivateResource") @StringRes errorMessageRes: Int = androidx.compose.ui.R.string.default_error_message, + @SuppressLint("PrivateResource") @StringRes errorMessageRes: Int = R.string.default_error_message, height: Int = 65 ) { val visualTransformation = @@ -99,7 +101,7 @@ fun ConnectDogTextField( }, colors = OutlinedTextFieldDefaults.colors( - unfocusedBorderColor = Gray5, + unfocusedBorderColor = borderColor, errorBorderColor = MaterialTheme.colorScheme.error ) // textStyle = LocalTextStyle.current.copy( @@ -166,6 +168,7 @@ fun ConnectDogTextFieldWithButton( textFieldLabel: String, placeholder: String, buttonLabel: String, + borderColor: Color = Gray5, keyboardType: KeyboardType = KeyboardType.Text, padding: Int, onClick: (String) -> Unit = {}, @@ -177,9 +180,8 @@ fun ConnectDogTextFieldWithButton( label = textFieldLabel, placeholder = placeholder, keyboardType = keyboardType, - onTextChanged = { - onTextChanged(it) - }, + onTextChanged = { onTextChanged(it) }, + borderColor = borderColor, isError = isError ) @@ -192,7 +194,6 @@ fun ConnectDogTextFieldWithButton( .padding(top = 6.dp, end = 16.dp) .align(Alignment.CenterEnd), onClick = { - Log.d("testts", text) onClick(text) } ) From d6147c03011bf352fae6f1e8cd13a3a832c611e8 Mon Sep 17 00:00:00 2001 From: Seunggu Kang Date: Fri, 22 Mar 2024 22:02:18 +0900 Subject: [PATCH 20/25] =?UTF-8?q?refactor:=20=EC=83=9D=EC=84=B1=EC=9E=90?= =?UTF-8?q?=EC=9D=98=20=EC=9E=91=EC=97=85=EC=9D=84=20=ED=95=A8=EC=88=98?= =?UTF-8?q?=EB=A1=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectdog/feature/mypage/viewmodel/MyPageViewModel.kt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/feature/mypage/src/main/java/com/kusitms/connectdog/feature/mypage/viewmodel/MyPageViewModel.kt b/feature/mypage/src/main/java/com/kusitms/connectdog/feature/mypage/viewmodel/MyPageViewModel.kt index 4b89777b6..fc04e87ad 100644 --- a/feature/mypage/src/main/java/com/kusitms/connectdog/feature/mypage/viewmodel/MyPageViewModel.kt +++ b/feature/mypage/src/main/java/com/kusitms/connectdog/feature/mypage/viewmodel/MyPageViewModel.kt @@ -21,6 +21,10 @@ private const val TAG = "MyPageViewModel" class MyPageViewModel @Inject constructor( private val myPageRepository: MyPageRepository ) : ViewModel() { + init { + fetchUserInfo() + } + private val _myInfo = MutableLiveData() val myInfo: LiveData = _myInfo @@ -39,7 +43,7 @@ class MyPageViewModel @Inject constructor( private val _badgeItem = MutableLiveData() val badgeItem: LiveData = _badgeItem - init { + private fun fetchUserInfo() { viewModelScope.launch { try { val myInfoResponse = myPageRepository.getMyInfo() From 73e850cbb6a343c50e05b82a9b9b3a57e3db2f25 Mon Sep 17 00:00:00 2001 From: Seunggu Kang Date: Fri, 22 Mar 2024 22:03:02 +0900 Subject: [PATCH 21/25] =?UTF-8?q?feat:=20=ED=94=84=EB=A1=9C=ED=95=84=20?= =?UTF-8?q?=EC=88=98=EC=A0=95=20=ED=99=94=EB=A9=B4=20=EC=9D=B4=EB=8F=99=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../feature/mypage/screen/MypageScreen.kt | 30 +++++++------------ 1 file changed, 10 insertions(+), 20 deletions(-) diff --git a/feature/mypage/src/main/java/com/kusitms/connectdog/feature/mypage/screen/MypageScreen.kt b/feature/mypage/src/main/java/com/kusitms/connectdog/feature/mypage/screen/MypageScreen.kt index 5b4e9d7d5..33db461b7 100644 --- a/feature/mypage/src/main/java/com/kusitms/connectdog/feature/mypage/screen/MypageScreen.kt +++ b/feature/mypage/src/main/java/com/kusitms/connectdog/feature/mypage/screen/MypageScreen.kt @@ -7,7 +7,6 @@ import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxHeight @@ -47,10 +46,7 @@ import com.kusitms.connectdog.feature.mypage.viewmodel.MyPageViewModel @Composable internal fun MypageRoute( - padding: PaddingValues, - onClick: () -> Unit, onEditProfileClick: () -> Unit, - onManageAccountClick: () -> Unit, onNotificationClick: () -> Unit, onSettingClick: () -> Unit, onBadgeClick: () -> Unit, @@ -58,11 +54,8 @@ internal fun MypageRoute( onShowErrorSnackBar: (throwable: Throwable?) -> Unit ) { MypageScreen( - padding = padding, - onClick = onClick, onEditProfileClick = onEditProfileClick, onSettingClick = onSettingClick, - onManageAccountClick = onManageAccountClick, onNotificationClick = onNotificationClick, onBadgeClick = onBadgeClick, onBookmarkClick = onBookmarkClick @@ -99,10 +92,7 @@ private fun TopBar( @Composable private fun MypageScreen( - padding: PaddingValues, - onClick: () -> Unit, onEditProfileClick: () -> Unit, - onManageAccountClick: () -> Unit, onNotificationClick: () -> Unit, onSettingClick: () -> Unit, onBadgeClick: () -> Unit, @@ -125,7 +115,7 @@ private fun MypageScreen( @Composable private fun MyInformation( - onClick: () -> Unit, + onEditProfileClick: () -> Unit, viewModel: MyPageViewModel = hiltViewModel() ) { val userInfo by viewModel.userInfo.observeAsState(null) @@ -150,15 +140,15 @@ private fun MyInformation( fontSize = 18.sp, fontWeight = FontWeight.SemiBold ) + Spacer(modifier = Modifier.weight(1f)) + ConnectDogOutlinedButton( + width = 80, + height = 26, + text = "프로필 수정", + padding = 5, + onClick = { onEditProfileClick() } + ) } - Spacer(modifier = Modifier.weight(1f)) - ConnectDogOutlinedButton( - width = 80, - height = 26, - text = "프로필 수정", - padding = 5, - onClick = onClick - ) } } @@ -232,7 +222,7 @@ private fun Information( @Preview @Composable -private fun test() { +private fun Test() { ConnectDogTheme { // MypageScreen() } From 8a71f12f8fd41143e2e9a852f0cc87e3621a01a4 Mon Sep 17 00:00:00 2001 From: Seunggu Kang Date: Fri, 22 Mar 2024 22:03:31 +0900 Subject: [PATCH 22/25] =?UTF-8?q?chore:=20"=EC=9D=B4=EB=AF=B8=EC=A7=80=20?= =?UTF-8?q?=EC=84=A0=ED=83=9D"=20=ED=85=8D=EC=8A=A4=ED=8A=B8=20=EC=83=81?= =?UTF-8?q?=EC=88=98=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/designsystem/src/main/res/values/strings.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/core/designsystem/src/main/res/values/strings.xml b/core/designsystem/src/main/res/values/strings.xml index 394e13034..db5b7f47b 100644 --- a/core/designsystem/src/main/res/values/strings.xml +++ b/core/designsystem/src/main/res/values/strings.xml @@ -16,6 +16,7 @@ 모집마감 로그인 이동봉사자 회원가입 + 이미지 선택 이동봉사 중개 회원가입 이동봉사 신청하기 봉사관리 From 72319a9685250bf287787c00cec71802e6411313 Mon Sep 17 00:00:00 2001 From: Seunggu Kang Date: Fri, 22 Mar 2024 22:03:55 +0900 Subject: [PATCH 23/25] =?UTF-8?q?refactor:=20=ED=81=B4=EB=9E=98=EC=8A=A4?= =?UTF-8?q?=20=EC=9D=B4=EB=A6=84=20=EC=88=98=EC=A0=95=20=EB=B0=8F=20?= =?UTF-8?q?=EB=A1=9C=EC=A7=81=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ViewModel.kt => CertificationViewModel.kt} | 36 ++++--------------- 1 file changed, 7 insertions(+), 29 deletions(-) rename feature/home/src/main/java/com/kusitms/connectdog/feature/home/{ApplyViewModel.kt => CertificationViewModel.kt} (64%) diff --git a/feature/home/src/main/java/com/kusitms/connectdog/feature/home/ApplyViewModel.kt b/feature/home/src/main/java/com/kusitms/connectdog/feature/home/CertificationViewModel.kt similarity index 64% rename from feature/home/src/main/java/com/kusitms/connectdog/feature/home/ApplyViewModel.kt rename to feature/home/src/main/java/com/kusitms/connectdog/feature/home/CertificationViewModel.kt index d70a0ce72..0e7edb381 100644 --- a/feature/home/src/main/java/com/kusitms/connectdog/feature/home/ApplyViewModel.kt +++ b/feature/home/src/main/java/com/kusitms/connectdog/feature/home/CertificationViewModel.kt @@ -5,7 +5,7 @@ import androidx.compose.runtime.MutableState import androidx.compose.runtime.mutableStateOf import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import com.kusitms.connectdog.core.data.api.model.volunteer.ApplyBody +import com.kusitms.connectdog.core.data.api.model.AdditionalAuthBody import com.kusitms.connectdog.core.data.repository.ApplyRepository import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.flow.MutableStateFlow @@ -14,7 +14,7 @@ import kotlinx.coroutines.launch import javax.inject.Inject @HiltViewModel -class ApplyViewModel @Inject constructor( +class CertificationViewModel @Inject constructor( private val applyRepository: ApplyRepository ) : ViewModel() { private val _isCertified: MutableStateFlow = MutableStateFlow(false) @@ -23,29 +23,18 @@ class ApplyViewModel @Inject constructor( private val _isSendNumber: MutableStateFlow = MutableStateFlow(false) val isSendNumber: StateFlow = _isSendNumber - private val _isChecked = MutableStateFlow(true) - val isChecked: StateFlow = _isChecked - private val _name: MutableState = mutableStateOf("") val name: String - get() = if (_isChecked.value) { _name.value } else { "" } + get() = _name.value private val _phoneNumber: MutableState = mutableStateOf("") val phoneNumber: String - get() = if (_isChecked.value) { _phoneNumber.value } else { "" } + get() = _phoneNumber.value private val _certificationNumber: MutableState = mutableStateOf("") val certificationNumber: String get() = _certificationNumber.value - private val _transportation: MutableState = mutableStateOf("") - val transportation: String - get() = _transportation.value - - private val _content: MutableState = mutableStateOf("") - val content: String - get() = _content.value - fun updateName(name: String) { _name.value = name } @@ -58,14 +47,6 @@ class ApplyViewModel @Inject constructor( _certificationNumber.value = certificationNumber } - fun updateTransportation(transportation: String) { - _transportation.value = transportation - } - - fun updateContent(content: String) { - _content.value = content - } - fun updateIsCertified(isCertified: Boolean) { _isCertified.value = isCertified } @@ -74,14 +55,11 @@ class ApplyViewModel @Inject constructor( _isSendNumber.value = value } - fun updateIsChecked() { - _isChecked.value = !_isChecked.value - } - - fun postApplyVolunteer(postId: Long, applyBody: ApplyBody) { + fun postAdditionalAuth() { + val body = AdditionalAuthBody(name = _name.value, phone = _phoneNumber.value) viewModelScope.launch { try { - val response = applyRepository.postApplyVolunteer(postId, applyBody) + val response = applyRepository.postAdditionalAuth(body) Log.d("testtts", response.toString()) } catch (e: Exception) { Log.d("testttserror", e.message.toString()) From 3322af008dc30af26a346f39c56301d038dbd5ef Mon Sep 17 00:00:00 2001 From: Seunggu Kang Date: Fri, 22 Mar 2024 22:04:33 +0900 Subject: [PATCH 24/25] =?UTF-8?q?feat:=20ApplyViewModel=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../connectdog/feature/home/ApplyViewModel.kt | 85 +++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 feature/home/src/main/java/com/kusitms/connectdog/feature/home/ApplyViewModel.kt diff --git a/feature/home/src/main/java/com/kusitms/connectdog/feature/home/ApplyViewModel.kt b/feature/home/src/main/java/com/kusitms/connectdog/feature/home/ApplyViewModel.kt new file mode 100644 index 000000000..4166a007a --- /dev/null +++ b/feature/home/src/main/java/com/kusitms/connectdog/feature/home/ApplyViewModel.kt @@ -0,0 +1,85 @@ +package com.kusitms.connectdog.feature.home + +import android.util.Log +import androidx.compose.runtime.MutableState +import androidx.compose.runtime.mutableStateOf +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.kusitms.connectdog.core.data.api.model.volunteer.ApplyBody +import com.kusitms.connectdog.core.data.repository.ApplyRepository +import dagger.hilt.android.lifecycle.HiltViewModel +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.launch +import javax.inject.Inject + +@HiltViewModel +class ApplyViewModel @Inject constructor( + private val applyRepository: ApplyRepository +) : ViewModel() { + private val _name: MutableState = mutableStateOf("") + val name: String + get() = if (_isChecked.value) { _name.value } else { "" } + + private val _phoneNumber: MutableState = mutableStateOf("") + val phoneNumber: String + get() = if (_isChecked.value) { _phoneNumber.value } else { "" } + + private val _isChecked = MutableStateFlow(true) + val isChecked: StateFlow = _isChecked + + private val _transportation: MutableState = mutableStateOf("") + val transportation: String + get() = _transportation.value + + private val _content: MutableState = mutableStateOf("") + val content: String + get() = _content.value + + private val _isNextEnabled: MutableState = mutableStateOf(false) + val isNextEnabled: Boolean + get() = _isNextEnabled.value + + fun updateTransportation(transportation: String) { + _transportation.value = transportation + } + + fun updateContent(content: String) { + _content.value = content + } + + fun updateIsChecked() { + _isChecked.value = !_isChecked.value + } + + fun updateName(name: String) { + _name.value = name + } + + fun updatePhoneNumber(phoneNumber: String) { + _phoneNumber.value = phoneNumber + } + + fun postApplyVolunteer(postId: Long, applyBody: ApplyBody) { + viewModelScope.launch { + try { + val response = applyRepository.postApplyVolunteer(postId, applyBody) + Log.d("testtts", response.toString()) + } catch (e: Exception) { + Log.d("testttserror", e.message.toString()) + } + } + } + + fun getAdditionalAuth() { + viewModelScope.launch { + try { + val response = applyRepository.getAdditionalAuth() + _name.value = response.name + _phoneNumber.value = response.phone + } catch (e: Exception) { + Log.d("testttserror", e.message.toString()) + } + } + } +} From 4e3928114da77d2f2133cfa0c56b93603ec1a014 Mon Sep 17 00:00:00 2001 From: Seunggu Kang Date: Fri, 22 Mar 2024 22:04:53 +0900 Subject: [PATCH 25/25] =?UTF-8?q?fix:=20=EC=88=98=EC=A0=95=EB=90=9C=20view?= =?UTF-8?q?Model=20=EC=9D=B4=EB=A6=84=20=EB=B0=98=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../home/screen/CertificationScreen.kt | 38 +++++++++++-------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/feature/home/src/main/java/com/kusitms/connectdog/feature/home/screen/CertificationScreen.kt b/feature/home/src/main/java/com/kusitms/connectdog/feature/home/screen/CertificationScreen.kt index 961921cc9..263cac57f 100644 --- a/feature/home/src/main/java/com/kusitms/connectdog/feature/home/screen/CertificationScreen.kt +++ b/feature/home/src/main/java/com/kusitms/connectdog/feature/home/screen/CertificationScreen.kt @@ -23,6 +23,7 @@ import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.input.KeyboardType import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp +import androidx.hilt.navigation.compose.hiltViewModel import com.kusitms.connectdog.core.designsystem.R import com.kusitms.connectdog.core.designsystem.component.ConnectDogNormalButton import com.kusitms.connectdog.core.designsystem.component.ConnectDogTextField @@ -31,7 +32,7 @@ import com.kusitms.connectdog.core.designsystem.component.ConnectDogTopAppBar import com.kusitms.connectdog.core.designsystem.component.TopAppBarNavigationType import com.kusitms.connectdog.core.designsystem.theme.Orange40 import com.kusitms.connectdog.core.designsystem.theme.PetOrange -import com.kusitms.connectdog.feature.home.ApplyViewModel +import com.kusitms.connectdog.feature.home.CertificationViewModel @SuppressLint("UnusedMaterial3ScaffoldPaddingParameter") @Composable @@ -42,7 +43,7 @@ fun CertificationScreen( onVerifyCodeClick: (String, (Boolean) -> Unit) -> Unit, postId: Long, imeHeight: Int, - viewModel: ApplyViewModel + viewModel: CertificationViewModel = hiltViewModel() ) { Scaffold( topBar = { @@ -72,7 +73,7 @@ private fun Content( onApplyClick: (Long) -> Unit, onSendMessageClick: (String) -> Unit, onVerifyCodeClick: (String, (Boolean) -> Unit) -> Unit, - viewModel: ApplyViewModel + viewModel: CertificationViewModel ) { val focusManager = LocalFocusManager.current val interactionSource = remember { MutableInteractionSource() } @@ -137,18 +138,18 @@ private fun Content( onClick = { Log.d("send", isSendNumber.toString()) viewModel.updateIsCertified(true) - if (!isSendNumber) { - Toast.makeText(context, "먼저 인증번호를 전송해주세요", Toast.LENGTH_SHORT).show() - } else { - if (viewModel.certificationNumber.isEmpty()) { - Toast.makeText(context, "인증 번호를 입력해주세요", Toast.LENGTH_SHORT).show() - } else { - onVerifyCodeClick(it) { - viewModel.updateIsCertified(it) - Log.d("casz", isCertified.toString()) - } - } - } +// if (!isSendNumber) { +// Toast.makeText(context, "먼저 인증번호를 전송해주세요", Toast.LENGTH_SHORT).show() +// } else { +// if (viewModel.certificationNumber.isEmpty()) { +// Toast.makeText(context, "인증 번호를 입력해주세요", Toast.LENGTH_SHORT).show() +// } else { +// onVerifyCodeClick(it) { +// viewModel.updateIsCertified(it) +// Log.d("casz", isCertified.toString()) +// } +// } +// } } ) Spacer(modifier = Modifier.weight(1f)) @@ -158,7 +159,12 @@ private fun Content( modifier = Modifier .fillMaxWidth() .height(56.dp), - onClick = { if (viewModel.name.isNotEmpty() && isCertified) onApplyClick(postId) } + onClick = { + if (viewModel.name.isNotEmpty() && isCertified) { + viewModel.postAdditionalAuth() + onApplyClick(postId) + } + } ) Spacer(modifier = Modifier.height((imeHeight + 32).dp)) }