Skip to content

Commit

Permalink
[chore] 닉네임 처리 진해중
Browse files Browse the repository at this point in the history
  • Loading branch information
jiwon2724 committed Aug 28, 2024
1 parent 7a15960 commit 5c78e73
Show file tree
Hide file tree
Showing 5 changed files with 29 additions and 9 deletions.
11 changes: 11 additions & 0 deletions feature/login/src/main/java/pokitmons/pokit/LoginViewModel.kt
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package pokitmons.pokit

import android.content.Context
import android.util.Log
import androidx.compose.runtime.MutableState
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateListOf
Expand Down Expand Up @@ -43,6 +44,9 @@ class LoginViewModel @Inject constructor(
}
}
}

val nicknameRegex = Regex("^[a-zA-Z0-9가-힣]+$")

private var duplicateNicknameJob: Job? = null

private val _isBottomSheetVisible: MutableState<Boolean> = mutableStateOf(false)
Expand Down Expand Up @@ -147,6 +151,13 @@ class LoginViewModel @Inject constructor(
}
}

fun checkNicknameRegex(nickname: String): Boolean {
_inputNicknameState.update { duplicateNicknameState ->
duplicateNicknameState.copy(isRegex = nicknameRegex.matches(nickname))
}
return nicknameRegex.matches(nickname)
}

fun setCategories() {
val categoryNames: List<String> = listOf(
context.getString(R.string.sports_and_leisure),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,6 @@ package pokitmons.pokit.model

data class DuplicateNicknameState(
val nickname: String = "",
val isDuplicate: Boolean = true,
val isDuplicate: Boolean = false,
val isRegex: Boolean = false
)
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package pokitmons.pokit.nickname

import android.util.Log
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Spacer
Expand Down Expand Up @@ -65,17 +66,24 @@ fun InputNicknameScreen(
inputText = inputNicknameState.nickname,
maxLength = NICKNAME_MAX_LENGTH,
sub = when {
inputNicknameState.nickname.length < NICKNAME_MAX_LENGTH -> stringResource(id = Login.string.input_restriction_message)
!inputNicknameState.isDuplicate -> stringResource(id = Login.string.nickname_already_in_use)
else -> stringResource(id = Login.string.input_max_length)
inputNicknameState.isDuplicate -> stringResource(id = Login.string.nickname_already_in_use)
inputNicknameState.isRegex -> stringResource(id = Login.string.input_restriction_message)
inputNicknameState.nickname.length < NICKNAME_MAX_LENGTH -> stringResource(id = Login.string.input_max_length)
else -> ""
},
isError = inputNicknameState.nickname.length > NICKNAME_MAX_LENGTH || !inputNicknameState.isDuplicate,
isError = inputNicknameState.nickname.length > NICKNAME_MAX_LENGTH || inputNicknameState.isDuplicate || inputNicknameState.isRegex,
hintText = stringResource(id = Login.string.input_nickname_hint),
onChangeText = { text ->
Log.d("!! : ", text)
if (text.length <= NICKNAME_MAX_LENGTH) {
viewModel.apply {
inputText(text)
checkDuplicateNickname(text)
if (checkNicknameRegex(text)) {
Log.d("!! : ", "else call")
checkDuplicateNickname(text)
} else {

}
}
}
}
Expand All @@ -89,7 +97,7 @@ fun InputNicknameScreen(
text = stringResource(id = pokitmons.pokit.login.R.string.next),
icon = null,
size = PokitButtonSize.LARGE,
enable = !inputNicknameState.isDuplicate,
enable = !inputNicknameState.isDuplicate && inputNicknameState.isRegex && inputNicknameState.nickname.length < NICKNAME_MAX_LENGTH,
onClick = { onNavigateToKeywordScreen() }
)
}
Expand Down
2 changes: 1 addition & 1 deletion feature/login/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
<string name="input_nickname_hint">내용을 입력해주세요.</string>
<string name="input_restriction_message">한글, 영어, 숫자로만 입력이 가능합니다.</string>
<string name="nickname_already_in_use">사용 중인 닉네임입니다.</string>
<string name="input_max_length">최대 20자까지 입력 가능합니다.</string>
<string name="input_max_length">최대 10자까지 입력 가능합니다.</string>
<string name="keyword_title">어떤 분야에 관심이 있으세요?</string>
<string name="select_keyword">최대 3개를 골라주시면,\n관련 콘텐츠를 추천해드릴게요!</string>
<string name="sports_and_leisure">스포츠/레저</string>
Expand Down
2 changes: 1 addition & 1 deletion feature/settings/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,6 @@
<string name="save">저장</string>
<string name="input_restriction_message">한글, 영어, 숫자로만 입력이 가능합니다.</string>
<string name="nickname_already_in_use">사용 중인 닉네임입니다.</string>
<string name="input_max_length">최대 20자까지 입력 가능합니다.</string>
<string name="input_max_length">최대 10자까지 입력 가능합니다.</string>
<string name="input_nickname_hint">닉네임을 입력해주세요</string>
</resources>

0 comments on commit 5c78e73

Please sign in to comment.