diff --git a/Packages/GodPackage/Sources/OnboardFeature/Onboard.swift b/Packages/GodPackage/Sources/OnboardFeature/Onboard.swift index c0136e0b..5e9c3f93 100644 --- a/Packages/GodPackage/Sources/OnboardFeature/Onboard.swift +++ b/Packages/GodPackage/Sources/OnboardFeature/Onboard.swift @@ -22,6 +22,7 @@ public struct OnboardLogic { var schoolId: String? var clubActivityId: String? var inviterUserId: String? + var invitationCode: String? var contacts: [God.ContactInput] = [] public init() {} @@ -120,6 +121,7 @@ public struct OnboardLogic { case schoolSetting(SchoolSettingLogic.State = .init()) case clubActivitySetting(ClubActivitySettingLogic.State = .init()) case findFriend(FindFriendLogic.State = .init()) + case invitationCode(InvitationCodeLogic.State = .init()) case phoneNumber(PhoneNumberLogic.State = .init()) case oneTimeCode(OneTimeCodeLogic.State) case firstNameSetting(FirstNameSettingLogic.State = .init()) @@ -137,6 +139,7 @@ public struct OnboardLogic { case schoolSetting(SchoolSettingLogic.Action) case clubActivitySetting(ClubActivitySettingLogic.Action) case findFriend(FindFriendLogic.Action) + case invitationCode(InvitationCodeLogic.Action) case phoneNumber(PhoneNumberLogic.Action) case oneTimeCode(OneTimeCodeLogic.Action) case firstNameSetting(FirstNameSettingLogic.Action) @@ -154,6 +157,7 @@ public struct OnboardLogic { Scope(state: \.schoolSetting, action: \.schoolSetting, child: SchoolSettingLogic.init) Scope(state: \.clubActivitySetting, action: \.clubActivitySetting, child: ClubActivitySettingLogic.init) Scope(state: \.findFriend, action: \.findFriend, child: FindFriendLogic.init) + Scope(state: \.invitationCode, action: \.invitationCode, child: InvitationCodeLogic.init) Scope(state: \.phoneNumber, action: \.phoneNumber, child: PhoneNumberLogic.init) Scope(state: \.oneTimeCode, action: \.oneTimeCode, child: OneTimeCodeLogic.init) Scope(state: \.firstNameSetting, action: \.firstNameSetting, child: FirstNameSettingLogic.init) @@ -204,6 +208,12 @@ public struct OnboardView: View { action: OnboardLogic.Path.Action.findFriend, then: FindFriendView.init(store:) ) + case .invitationCode: + CaseLet( + /OnboardLogic.Path.State.invitationCode, + action: OnboardLogic.Path.Action.invitationCode, + then: InvitationCodeView.init(store:) + ) case .phoneNumber: CaseLet( /OnboardLogic.Path.State.phoneNumber, diff --git a/Packages/GodPackage/Sources/OnboardFeature/OnboardPathLogic.swift b/Packages/GodPackage/Sources/OnboardFeature/OnboardPathLogic.swift index cc1dc4f7..77b0bf6a 100644 --- a/Packages/GodPackage/Sources/OnboardFeature/OnboardPathLogic.swift +++ b/Packages/GodPackage/Sources/OnboardFeature/OnboardPathLogic.swift @@ -58,7 +58,7 @@ public struct OnboardPathLogic { return .none } else if isFindFriendSkip { - state.path.append(.phoneNumber()) + state.path.append(.invitationCode()) return .run(priority: .background) { send in await contactsRequest(send: send) } @@ -75,7 +75,7 @@ public struct OnboardPathLogic { state.clubActivityId = clubActivityId if isFindFriendSkip { - state.path.append(.phoneNumber()) + state.path.append(.invitationCode()) return .run(priority: .background) { send in await contactsRequest(send: send) } @@ -84,10 +84,15 @@ public struct OnboardPathLogic { return .none case .findFriend(.delegate(.nextScreen)): - state.path.append(.phoneNumber()) + state.path.append(.invitationCode()) return .run(priority: .background) { send in await contactsRequest(send: send) } + + case let .invitationCode(.delegate(.nextScreen(code))): + state.invitationCode = code + state.path.append(.phoneNumber()) + return .none case .phoneNumber(.delegate(.nextScreen)): state.path.append(