Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package org.whosin.client.core.util

actual fun hideKeyboard() {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
package org.whosin.client.core.util

expect fun hideKeyboard()
Original file line number Diff line number Diff line change
Expand Up @@ -26,23 +26,24 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.focus.FocusRequester
import androidx.compose.ui.focus.focusRequester
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.LocalFocusManager
import androidx.compose.ui.platform.LocalSoftwareKeyboardController
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import kotlinx.coroutines.delay
import coil3.compose.AsyncImage
import kotlinx.coroutines.delay
import org.jetbrains.compose.resources.stringResource
import org.jetbrains.compose.ui.tooling.preview.Preview
import org.koin.compose.viewmodel.koinViewModel
import org.whosin.client.core.util.hideKeyboard
import org.whosin.client.presentation.auth.login.component.CommonLoginButton
import org.whosin.client.presentation.auth.login.component.NumberInputBox
import whosinclient.composeapp.generated.resources.Res
import whosinclient.composeapp.generated.resources.back_button
import whosinclient.composeapp.generated.resources.club_code_confirm_button
import whosinclient.composeapp.generated.resources.club_code_error_message
import whosinclient.composeapp.generated.resources.club_code_title_1
import whosinclient.composeapp.generated.resources.club_code_title_2
import whosinclient.composeapp.generated.resources.confirm_button
Expand All @@ -62,6 +63,7 @@ fun ClubCodeInputScreen(
val currentState = uiState.verificationState
val focusRequesters = remember { List(6) { FocusRequester() } }
val keyboardController = LocalSoftwareKeyboardController.current
val focusManager = LocalFocusManager.current

LaunchedEffect(Unit) {
delay(300)
Expand All @@ -84,7 +86,7 @@ fun ClubCodeInputScreen(
focusRequesters[0].requestFocus()
viewModel.resetErrorState()
}
if (currentState == ClubCodeState.SUCCESS){
if (currentState == ClubCodeState.SUCCESS) {
keyboardController?.hide()
}
}
Expand Down Expand Up @@ -161,8 +163,11 @@ fun ClubCodeInputScreen(
focusRequesters[index + 1].requestFocus()
keyboardController?.show()
}
// 마지막 자리 입력 완료 시 키보드 숨기기
else if (input.isNotEmpty() && index == 5) {
focusManager.clearFocus()
keyboardController?.hide()
hideKeyboard()
}
// 현재 박스가 비워지고 이전 박스가 있으면 이전으로 이동
else if (input.isEmpty() && index > 0) {
Expand Down Expand Up @@ -209,7 +214,7 @@ fun ClubCodeInputScreen(
// 에러 메시지
if (currentState == ClubCodeState.ERROR) {
Text(
text = uiState.errorMessage?:"예상치 못한 오류가 발생했습니다",
text = uiState.errorMessage ?: "예상치 못한 오류가 발생했습니다",
fontSize = 16.sp,
fontWeight = FontWeight.W500,
color = Color(0xFFFF3636),
Expand All @@ -232,7 +237,7 @@ fun ClubCodeInputScreen(
onClick = {
if (isComplete) {
viewModel.confirmClubCode(clubCode = fullCode)
if (currentState == ClubCodeState.SUCCESS){
if (currentState == ClubCodeState.SUCCESS) {
keyboardController?.hide()
}
}
Expand Down Expand Up @@ -294,7 +299,7 @@ fun ClubCodeInputScreen(
text = stringResource(Res.string.confirm_button),
onClick = {
if (currentState == ClubCodeState.SUCCESS) {
if (uiState.clubId != null){
if (uiState.clubId != null) {
viewModel.addClub(uiState.clubId)
}
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.focus.FocusRequester
import androidx.compose.ui.focus.focusRequester
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.LocalFocusManager
import androidx.compose.ui.platform.LocalSoftwareKeyboardController
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextAlign
Expand All @@ -37,6 +38,7 @@ import org.jetbrains.compose.resources.stringResource
import org.jetbrains.compose.ui.tooling.preview.Preview
import org.koin.compose.koinInject
import org.whosin.client.core.network.ApiResult
import org.whosin.client.core.util.hideKeyboard
import org.whosin.client.data.repository.AuthRepository
import org.whosin.client.presentation.auth.login.component.CommonLoginButton
import org.whosin.client.presentation.auth.login.component.NumberInputBox
Expand All @@ -58,6 +60,7 @@ fun EmailVerificationScreen(
var errorMessage by remember { mutableStateOf<String?>(null) }
val focusRequesters = remember { List(6) { FocusRequester() } }
val keyboardController = LocalSoftwareKeyboardController.current
val focusManager = LocalFocusManager.current

val authRepository: AuthRepository = koinInject()
val coroutineScope = rememberCoroutineScope()
Expand Down Expand Up @@ -134,8 +137,11 @@ fun EmailVerificationScreen(
currentFocusIndex = index + 1
focusRequesters[index + 1].requestFocus()
}
// 마지막 자리 입력 완료 시 키보드 숨기기
else if (input.isNotEmpty() && index == 5) {
focusManager.clearFocus()
keyboardController?.hide()
hideKeyboard()
}
// 현재 박스가 비워지고 이전 박스가 있으면 이전으로 이동
else if (input.isEmpty() && index > 0) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package org.whosin.client.core.util

import platform.UIKit.UIApplication
import platform.UIKit.endEditing
import platform.darwin.dispatch_async
import platform.darwin.dispatch_get_main_queue

actual fun hideKeyboard() {
dispatch_async(dispatch_get_main_queue()) {
UIApplication.sharedApplication.keyWindow?.endEditing(true)
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package org.whosin.client.core.util

actual fun hideKeyboard() {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package org.whosin.client.core.util

actual fun hideKeyboard() {
}