Skip to content

Commit

Permalink
fix/#357 모임 생성 오류 메시지 안뜨는 문제 해결
Browse files Browse the repository at this point in the history
  • Loading branch information
youz2me committed Sep 1, 2024
1 parent 6389618 commit c18408a
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,11 @@ class CreateMeetingView: BaseView {
isEnabled: false
)

let errorLabel: UILabel = UILabel().then {
$0.setText("한글, 영문, 숫자만을 사용해 총 10자 이내로 입력해주세요. (공백 포함)", style: .caption02, color: .mainred)
$0.isHidden = true
}

private let mainTitleLabel: UILabel = UILabel().then {
$0.setText("모임 이름을\n입력해 주세요", style: .head01)
}
Expand All @@ -37,6 +42,7 @@ class CreateMeetingView: BaseView {
mainTitleLabel,
nameTextField,
characterLabel,
errorLabel,
presentButton
)
}
Expand All @@ -59,6 +65,11 @@ class CreateMeetingView: BaseView {
$0.trailing.equalTo(nameTextField.snp.trailing).inset(12)
}

errorLabel.snp.makeConstraints {
$0.top.equalTo(nameTextField.snp.bottom).offset(4)
$0.leading.equalTo(nameTextField)
}

presentButton.snp.makeConstraints {
$0.bottom.equalToSuperview().inset(50)
$0.horizontalEdges.equalToSuperview().inset(14)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -85,22 +85,32 @@ class CreateMeetingViewController: BaseViewController {
private extension CreateMeetingViewController {
func setupBinding() {
viewModel.inviteCodeState.bind(with: self) { owner, state in
owner.rootView.presentButton.isEnabled = false
owner.rootView.errorLabel.isHidden = true

switch state {
case .valid:
owner.rootView.presentButton.isEnabled = true
case .empty, .invalid:
owner.rootView.presentButton.isEnabled = false
case .invalid:
owner.rootView.errorLabel.isHidden = false
case .empty:
break
}
}

viewModel.characterCount.bind(with: self) { owner, count in
owner.rootView.characterLabel.text = "\(count)/10"
}

viewModel.meetingName.bind(with: self) { owner, name in
owner.viewModel.validateName()
}
}

@objc
func textFieldDidChange(_ textField: UITextField) {
viewModel.validateName(textField.text ?? "")
viewModel.meetingName.value = textField.text ?? ""
viewModel.characterCount.value = "\(textField.text?.count ?? 0)"
}

@objc
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,15 +40,15 @@ class CreateMeetingViewModel {
// MARK: - Extension

extension CreateMeetingViewModel {
func validateName(_ name: String) {
meetingName.value = name
characterCount.value = String(name.count)
func validateName() {
let regex = "^[가-힣a-zA-Z0-9 ]{1,10}$"
let predicate = NSPredicate(format:"SELF MATCHES %@", regex)

switch name.count {
switch meetingName.value.count {
case 0:
inviteCodeState.value = .empty
case 1...10:
inviteCodeState.value = .valid
inviteCodeState.value = predicate.evaluate(with: meetingName.value) ? .valid : .invalid
default:
inviteCodeState.value = .invalid
}
Expand Down

0 comments on commit c18408a

Please sign in to comment.