88import Combine
99import Foundation
1010import Lib
11+ import Auth
12+ import DIInjector
13+ import Base
1114
1215public class OnboardingViewModel {
1316
@@ -25,14 +28,18 @@ public class OnboardingViewModel {
2528 let showNameError : PassthroughSubject < Bool , Never > = . init( )
2629 let showBirthError : PassthroughSubject < Bool , Never > = . init( )
2730 let isNextButtonEnabled : PassthroughSubject < Bool , Never > = . init( )
31+ let isBornTimeButtonEnabled : PassthroughSubject < Bool , Never > = . init( )
2832 let navigate : PassthroughSubject < OnboardingRoute , Never > = . init( )
2933 }
3034
3135 let output : Output = Output ( )
32-
36+
37+ @Injected private var userDataManager : UserDataManager
38+
3339 private var _isNameValid : Bool = false
3440 private var _isBirthDateValid : Bool = false
3541 private var _isBornTimeValied : Bool = false
42+ private var _isDontKnowSelected : Bool = false
3643
3744 private var state : State = . init( )
3845
@@ -54,15 +61,35 @@ public class OnboardingViewModel {
5461 switch bornTime {
5562 case . dontKnow( let isSelected) :
5663 self . _isBornTimeValied = ( self . state. bornTime != nil || !isSelected)
64+ self . _isDontKnowSelected = !isSelected
65+ self . output. isBornTimeButtonEnabled. send ( isSelected)
5766 case . time( let time) :
5867 self . _isBornTimeValied = true
59- self . state. bornTime = time
68+ let components = time. components ( separatedBy: " ~ " )
69+ self . state. bornTime = components
6070 }
6171 self . output. isNextButtonEnabled. send ( _isNameValid && _isBirthDateValid && _isBornTimeValied)
6272 case . nextButtonTap:
6373 self . output. navigate. send ( . agreement)
6474 case . completeButtonTap:
65- break
75+ if let name = state. name, let birthDate = state. birthDate, let gender = state. gender {
76+ let genderDTO = gender == . male ? GenderDTO . male : GenderDTO . female
77+ var birthTime : [ String ] ? = nil
78+ if !self . _isDontKnowSelected {
79+ birthTime = self . state. bornTime
80+ }
81+ Task {
82+ do {
83+ let test = try await self . userDataManager. create ( name: name, birthDate: birthDate, birthTime: birthTime , gender: genderDTO)
84+ print ( test)
85+ } catch {
86+ // TODO: API 호출 에러처리
87+ print ( error)
88+ }
89+ }
90+ } else {
91+ // TODO: 입력값에 대한 에러 처리
92+ }
6693 case . timePickerTap:
6794 self . output. navigate. send ( . timePicker)
6895 }
@@ -76,7 +103,7 @@ extension OnboardingViewModel {
76103 var name : String ?
77104 var gender : GenderType ?
78105 var birthDate : String ?
79- var bornTime : String ?
106+ var bornTime : [ String ] ?
80107 }
81108}
82109
0 commit comments