From 62099b00c0634b22521ccf5d732b50364bbad151 Mon Sep 17 00:00:00 2001 From: mmaybei Date: Tue, 3 Sep 2024 12:54:32 +0900 Subject: [PATCH] =?UTF-8?q?feat/#358=20=EC=A4=80=EB=B9=84=20=EC=A0=95?= =?UTF-8?q?=EB=B3=B4=20=EC=88=98=EC=A0=95=20=ED=94=8C=EB=A1=9C=EC=9A=B0=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ReadyStatusViewController.swift | 19 +++++---- .../SetReadyInfoViewController.swift | 42 +++++++++++++------ .../ViewModel/SetReadyInfoViewModel.swift | 26 ++++++++---- 3 files changed, 59 insertions(+), 28 deletions(-) diff --git a/KkuMulKum/Source/Promise/ReadyStatus/ViewController/ReadyStatusViewController.swift b/KkuMulKum/Source/Promise/ReadyStatus/ViewController/ReadyStatusViewController.swift index 45436364..5ee68ce5 100644 --- a/KkuMulKum/Source/Promise/ReadyStatus/ViewController/ReadyStatusViewController.swift +++ b/KkuMulKum/Source/Promise/ReadyStatus/ViewController/ReadyStatusViewController.swift @@ -447,15 +447,20 @@ extension ReadyStatusViewController { guard let _ = viewModel.promiseInfo.value?.promiseName else { return } guard let readyStatusInfo = viewModel.myReadyStatus.value else { return } - let setReadyInfoViewController = SetReadyInfoViewController( - viewModel: SetReadyInfoViewModel( - promiseID: viewModel.promiseID, - promiseTime: readyStatusInfo.promiseTime, - promiseName: viewModel.promiseInfo.value?.promiseName ?? "", - service: PromiseService() - ) + let setReadyInfoViewModel = SetReadyInfoViewModel( + promiseID: viewModel.promiseID, + promiseTime: readyStatusInfo.promiseTime, + promiseName: viewModel.promiseInfo.value?.promiseName ?? "", + service: PromiseService() ) + setReadyInfoViewModel.storedReadyHour = (readyStatusInfo.preparationTime ?? 0) / 60 + setReadyInfoViewModel.storedReadyMinute = (readyStatusInfo.preparationTime ?? 0) % 60 + setReadyInfoViewModel.storedMoveHour = (readyStatusInfo.travelTime ?? 0) / 60 + setReadyInfoViewModel.storedMoveMinute = (readyStatusInfo.travelTime ?? 0) % 60 + + let setReadyInfoViewController = SetReadyInfoViewController(viewModel: setReadyInfoViewModel) + navigationController?.pushViewController( setReadyInfoViewController, animated: true diff --git a/KkuMulKum/Source/SetReadyInfo/ViewController/SetReadyInfoViewController.swift b/KkuMulKum/Source/SetReadyInfo/ViewController/SetReadyInfoViewController.swift index 7109cc60..9b29ce33 100644 --- a/KkuMulKum/Source/SetReadyInfo/ViewController/SetReadyInfoViewController.swift +++ b/KkuMulKum/Source/SetReadyInfo/ViewController/SetReadyInfoViewController.swift @@ -30,12 +30,6 @@ final class SetReadyInfoViewController: BaseViewController { // MARK: - LifeCycle - override func viewWillAppear(_ animated: Bool) { - super.viewWillAppear(animated) - - navigationController?.isNavigationBarHidden = false - } - override func loadView() { self.view = rootView } @@ -47,8 +41,15 @@ final class SetReadyInfoViewController: BaseViewController { setupNavigationBarBackButton() setupNavigationBarTitle(with: "준비 정보 입력하기") - bindViewModel() + setupBinding() setupTapGesture() + setupTextField() + } + + override func viewWillAppear(_ animated: Bool) { + super.viewWillAppear(animated) + + navigationController?.isNavigationBarHidden = false } override func setupDelegate() { @@ -121,10 +122,13 @@ extension SetReadyInfoViewController: UITextFieldDelegate { func textFieldDidEndEditing(_ textField: UITextField) { textField.layer.borderColor = UIColor.gray3.cgColor - viewModel.updateTime( - textField: textField.accessibilityIdentifier ?? "", - time: textField.text ?? "" - ) + + if let text = textField.text, !text.isEmpty { + viewModel.updateTime( + textField: textField.accessibilityIdentifier ?? "", + time: textField.text ?? "" + ) + } } func textField( @@ -142,6 +146,20 @@ extension SetReadyInfoViewController: UITextFieldDelegate { // MARK: - Function private extension SetReadyInfoViewController { + func setupTextField() { + /// 저장된 준비 시간이 0이 아니면 텍스트 필드에 설정 + if viewModel.storedReadyHour != 0 || viewModel.storedReadyMinute != 0 { + rootView.readyHourTextField.text = String(viewModel.storedReadyHour) + rootView.readyMinuteTextField.text = String(viewModel.storedReadyMinute) + } + + /// 저장된 이동 시간이 0이 아니면 텍스트 필드에 설정 + if viewModel.storedMoveHour != 0 || viewModel.storedMoveMinute != 0 { + rootView.moveHourTextField.text = String(viewModel.storedMoveHour) + rootView.moveMinuteTextField.text = String(viewModel.storedMoveMinute) + } + } + func setTextFieldDelegate() { let textFields: [(UITextField, String)] = [ (rootView.readyHourTextField, "readyHour"), @@ -164,7 +182,7 @@ private extension SetReadyInfoViewController { // MARK: - Data Bind - func bindViewModel() { + func setupBinding() { viewModel.readyHour.bind { [weak self] readyHour in self?.rootView.readyHourTextField.text = readyHour } diff --git a/KkuMulKum/Source/SetReadyInfo/ViewModel/SetReadyInfoViewModel.swift b/KkuMulKum/Source/SetReadyInfo/ViewModel/SetReadyInfoViewModel.swift index 10dd03de..c36b322b 100644 --- a/KkuMulKum/Source/SetReadyInfo/ViewModel/SetReadyInfoViewModel.swift +++ b/KkuMulKum/Source/SetReadyInfo/ViewModel/SetReadyInfoViewModel.swift @@ -15,13 +15,21 @@ final class SetReadyInfoViewModel { let isValid = ObservablePattern(false) let errMessage = ObservablePattern("") - - let readyHour = ObservablePattern("") - let readyMinute = ObservablePattern("") - let moveHour = ObservablePattern("") - let moveMinute = ObservablePattern("") let isSucceedToSave = ObservablePattern(false) + var readyHour = ObservablePattern("") + var readyMinute = ObservablePattern("") + var moveHour = ObservablePattern("") + var moveMinute = ObservablePattern("") + + var preparationTime = ObservablePattern(0) + var travelTime = ObservablePattern(0) + + var storedReadyHour: Int = 0 + var storedReadyMinute: Int = 0 + var storedMoveHour: Int = 0 + var storedMoveMinute: Int = 0 + var readyTime: Int = 0 var moveTime: Int = 0 @@ -52,10 +60,10 @@ final class SetReadyInfoViewModel { } private func calculateTimes() { - let readyHours = Int(readyHour.value) ?? 0 - let readyMinutes = Int(readyMinute.value) ?? 0 - let moveHours = Int(moveHour.value) ?? 0 - let moveMinutes = Int(moveMinute.value) ?? 0 + let readyHours = Int(readyHour.value) ?? storedReadyHour + let readyMinutes = Int(readyMinute.value) ?? storedReadyMinute + let moveHours = Int(moveHour.value) ?? storedMoveHour + let moveMinutes = Int(moveMinute.value) ?? storedMoveMinute readyTime = readyHours * 60 + readyMinutes moveTime = moveHours * 60 + moveMinutes