From 79ee5b474456580af7f3d9f33b5c626b6c6b0ee8 Mon Sep 17 00:00:00 2001 From: Seunggu Kang Date: Wed, 28 Feb 2024 21:45:41 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=ED=9C=B4=EB=8C=80=ED=8F=B0=20=EB=B2=88?= =?UTF-8?q?=ED=98=B8=20=EC=9D=B8=EC=A6=9D=20=EB=A1=9C=EC=A7=81=20=EB=B2=84?= =?UTF-8?q?=EA=B7=B8=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../home/screen/CertificationScreen.kt | 80 ++++++++++--------- 1 file changed, 43 insertions(+), 37 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 8e1ad6d48..0ee1f9403 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 @@ -2,6 +2,7 @@ package com.kusitms.connectdog.feature.home.screen import android.annotation.SuppressLint import android.util.Log +import android.widget.Toast import androidx.compose.foundation.clickable import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.foundation.layout.Column @@ -9,21 +10,19 @@ import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding -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.livedata.observeAsState -import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalFocusManager 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,6 +30,7 @@ import com.kusitms.connectdog.core.designsystem.component.ConnectDogTextFieldWit 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 @SuppressLint("UnusedMaterial3ScaffoldPaddingParameter") @@ -39,9 +39,10 @@ fun CertificationScreen( onBackClick: () -> Unit, onApplyClick: (Long) -> Unit, onSendMessageClick: (String) -> Unit, - onVerifyCodeClick: (String) -> Boolean, + onVerifyCodeClick: (String, (Boolean) -> Unit) -> Unit, postId: Long, - viewModel: ApplyViewModel = hiltViewModel() + imeHeight: Int, + viewModel: ApplyViewModel ) { Scaffold( topBar = { @@ -58,35 +59,30 @@ fun CertificationScreen( postId = postId, onSendMessageClick = onSendMessageClick, onVerifyCodeClick = onVerifyCodeClick, - viewModel = viewModel + viewModel = viewModel, + imeHeight = imeHeight ) } } @Composable private fun Content( + imeHeight: Int, postId: Long, onApplyClick: (Long) -> Unit, onSendMessageClick: (String) -> Unit, - onVerifyCodeClick: (String) -> Boolean, + onVerifyCodeClick: (String, (Boolean) -> Unit) -> Unit, viewModel: ApplyViewModel ) { val focusManager = LocalFocusManager.current val interactionSource = remember { MutableInteractionSource() } - val (name, onNameChanged) = remember { mutableStateOf("") } - val isCertified by viewModel.isCertified.observeAsState(false) - - Log.d("asdfsd", "${name.isNotEmpty()} + name") - - val buttonColor = if (name.isNotEmpty() && isCertified) { - MaterialTheme.colorScheme.primary - } else { - Orange40 - } + val context = LocalContext.current + val isSendNumber by remember { viewModel.isSendNumber }.collectAsState() + val isCertified by remember { viewModel.isCertified }.collectAsState() Column( modifier = Modifier - .padding(horizontal = 20.dp, vertical = 32.dp) + .padding(start = 20.dp, end = 20.dp, top = 32.dp) .clickable( onClick = { focusManager.clearFocus() }, indication = null, @@ -101,15 +97,15 @@ private fun Content( ) Spacer(modifier = Modifier.height(40.dp)) ConnectDogTextField( - text = name, + text = viewModel.name, label = "이름", placeholder = "이름 입력", keyboardType = KeyboardType.Text, - onTextChanged = onNameChanged + onTextChanged = { viewModel.updateName(it) } ) Spacer(modifier = Modifier.height(12.dp)) ConnectDogTextFieldWithButton( - text = "", + text = viewModel.phoneNumber, width = 62, height = 27, textFieldLabel = "휴대폰 번호", @@ -117,14 +113,19 @@ private fun Content( buttonLabel = "인증 요청", keyboardType = KeyboardType.Number, padding = 5, - onTextChanged = {}, + onTextChanged = { viewModel.updatePhoneNumber(it) }, onClick = { - onSendMessageClick(it) + if (viewModel.phoneNumber.isEmpty()) { + Toast.makeText(context, "휴대폰 번호를 입력해주세요", Toast.LENGTH_SHORT).show() + } else { + onSendMessageClick(it) + viewModel.updateIsSendNumber(true) + } } ) Spacer(modifier = Modifier.height(12.dp)) ConnectDogTextFieldWithButton( - text = "", + text = viewModel.certificationNumber, width = 62, height = 27, textFieldLabel = "인증번호", @@ -132,28 +133,33 @@ private fun Content( buttonLabel = "인증 확인", keyboardType = KeyboardType.Number, padding = 5, - onTextChanged = {}, + onTextChanged = { viewModel.updateCertificationNumber(it) }, onClick = { - onVerifyCodeClick(it) + 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()) + } + } + } } ) Spacer(modifier = Modifier.weight(1f)) ConnectDogNormalButton( content = "다음", - color = buttonColor, + color = if (viewModel.name.isNotEmpty() && isCertified) { PetOrange } else { Orange40 }, modifier = Modifier .fillMaxWidth() .height(56.dp), - onClick = { if (name.isNotEmpty() && isCertified) onApplyClick(postId) } + onClick = { if (viewModel.name.isNotEmpty() && !isCertified) onApplyClick(postId) } ) + Spacer(modifier = Modifier.height((imeHeight + 32).dp)) } } - -// @Preview -// @Composable -// fun test3() { -// ConnectDogTheme { -// ApplyScreen() -// } -// }