Skip to content

Commit

Permalink
[Feat] MemberView에서 사용자에게 입력받은 값들 Coordnaitor 수집 및 SignUpRequest 생성 #1
Browse files Browse the repository at this point in the history
  • Loading branch information
Jin0331 committed Jan 17, 2025
1 parent 87b0a9b commit 15a616f
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -48,18 +48,30 @@ struct OnboardingCoordinator {
struct State : Equatable {
static var initialState = State(routes: [.root(.auth(.init()), embedInNavigationView: true)])
var routes : IdentifiedArrayOf<Route<OnbaordingScreen.State>>

//TODO: - Struct 변환
var nickname : String = .init()
var email : String = .init()
var signUpCd : String?
///
}

enum Action {
case router(IdentifiedRouterActionOf<OnbaordingScreen>)
case deepLink(DeepLink)
case networkResponse(NetworkReponse)
}

enum DeepLink {
case handler(DeepLinkPath)
}

enum NetworkReponse {
case signUp(Result<SignIn, APIError>)
}

@Dependency(\.networkManager) var networkManager

var body : some ReducerOf<Self> {
Reduce { state, action in
switch action {
Expand All @@ -75,9 +87,32 @@ struct OnboardingCoordinator {
state.routes.goBack()

/// Onboarding Member 정보 입력
case .router(.routeAction(id: .memberNickname, action: .memberNickname(.viewTransition(.goToEmail)))):
case let .router(.routeAction(id: .memberNickname, action: .memberNickname(.viewTransition(.goToEmail(nickname))))):
state.nickname = nickname
state.routes.push(.memberEmail(.init()))

/// 회원가입
case let .router(.routeAction(id: .memberEmail, action: .memberEmail(.viewTransition(.goToHome(email))))):
state.email = email

guard let signUpCd = state.signUpCd else { return .none }
let signUpRequest = SignUpRequest(signUpCode: signUpCd, email: state.email, name: state.nickname)

return .run { send in
await send(.networkResponse(.signUp(
networkManager.signUp(request: signUpRequest)
)))
}

//TODO: - 가입 성공시 화면전환 로직, 로그인 성공시 화면전환 로직

case let .networkResponse(.signUp(.success(signIn))):
Logger.debug("SignUp Success - \(signIn) 🐼🐼🐼🐼🐼🐼🐼🐼🐼🐼🐼")

case let .networkResponse(.signUp(.failure(error))):
let errorType = APIError.networkErrorType(error: error)
Logger.error("\(error) ->>🤔 \(errorType)")

case let .deepLink(.handler(path)):
switch path {
case .home:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ struct MemberEmailFeature {
enum ViewTransition {
case onAppear
case goToBack
case goToHome(String)
}

enum AnyAction {
Expand All @@ -58,7 +59,6 @@ extension MemberEmailFeature {
Reduce { state, action in
switch action {
case .binding(\.email):
Logger.debug(state.email)
state.isValid = isValidEmail(state.email)

default:
Expand All @@ -74,7 +74,9 @@ extension MemberEmailFeature {
switch action {

case .buttonTapped(.complete):
Logger.debug("완료버튼 탭")
return .run { [email = state.email] send in
await send(.viewTransition(.goToHome(email)))
}

default:
break
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ struct MemberNicknameFeature {

enum ViewTransition {
case onAppear
case goToEmail
case goToEmail(String)
}

enum AnyAction {
Expand Down Expand Up @@ -74,8 +74,8 @@ extension MemberNicknameFeature {

case .buttonTapped(.next):
Logger.debug("다음버튼 탭")
return .run { send in
await send(.viewTransition(.goToEmail))
return .run { [nickname = state.nickname] send in
await send(.viewTransition(.goToEmail(nickname)))
}

default:
Expand Down

0 comments on commit 15a616f

Please sign in to comment.