From 14bd673e6b42fa71cb179c7386c4e534d2eda33c Mon Sep 17 00:00:00 2001 From: Jisu Kim Date: Thu, 21 Nov 2024 00:21:35 +0900 Subject: [PATCH 1/4] [WEAV-135] Profile Intro Animation View --- Projects/App/Sources/Debug/AuthInfoView.swift | 8 ++ .../Sources/Navigation/NavigationStack.swift | 3 + .../CommonKit/Sources/AppCoordinator.swift | 7 ++ .../CommonKit/Sources/Path/PathTypes.swift | 5 + .../heart-with-arrow.imageset/Contents.json | 23 +++++ .../heart-with-arrow.png | Bin 0 -> 3514 bytes .../heart-with-arrow@2x.png | Bin 0 -> 10339 bytes .../heart-with-arrow@3x.png | Bin 0 -> 19926 bytes .../magnifying-glass.imageset/Contents.json | 23 +++++ .../magnifying-glass.png | Bin 0 -> 3681 bytes .../magnifying-glass@2x.png | Bin 0 -> 10977 bytes .../magnifying-glass@3x.png | Bin 0 -> 20946 bytes .../AuthAgreement/AuthAgreementIntent.swift | 2 +- .../ProfileIntro/ProfileIntroIntent.swift | 66 ++++++++++++ .../ProfileIntro/ProfileIntroModel.swift | 78 +++++++++++++++ .../ProfileIntro/ProfileIntroView.swift | 94 ++++++++++++++++++ 16 files changed, 308 insertions(+), 1 deletion(-) create mode 100644 Projects/DesignSystem/DesignCore/Resources/Images/Images.xcassets/heart-with-arrow.imageset/Contents.json create mode 100644 Projects/DesignSystem/DesignCore/Resources/Images/Images.xcassets/heart-with-arrow.imageset/heart-with-arrow.png create mode 100644 Projects/DesignSystem/DesignCore/Resources/Images/Images.xcassets/heart-with-arrow.imageset/heart-with-arrow@2x.png create mode 100644 Projects/DesignSystem/DesignCore/Resources/Images/Images.xcassets/heart-with-arrow.imageset/heart-with-arrow@3x.png create mode 100644 Projects/DesignSystem/DesignCore/Resources/Images/Images.xcassets/magnifying-glass.imageset/Contents.json create mode 100644 Projects/DesignSystem/DesignCore/Resources/Images/Images.xcassets/magnifying-glass.imageset/magnifying-glass.png create mode 100644 Projects/DesignSystem/DesignCore/Resources/Images/Images.xcassets/magnifying-glass.imageset/magnifying-glass@2x.png create mode 100644 Projects/DesignSystem/DesignCore/Resources/Images/Images.xcassets/magnifying-glass.imageset/magnifying-glass@3x.png create mode 100644 Projects/Features/SignUp/Sources/ProfileInput/ProfileIntro/ProfileIntroIntent.swift create mode 100644 Projects/Features/SignUp/Sources/ProfileInput/ProfileIntro/ProfileIntroModel.swift create mode 100644 Projects/Features/SignUp/Sources/ProfileInput/ProfileIntro/ProfileIntroView.swift diff --git a/Projects/App/Sources/Debug/AuthInfoView.swift b/Projects/App/Sources/Debug/AuthInfoView.swift index a1f08f4..5649600 100644 --- a/Projects/App/Sources/Debug/AuthInfoView.swift +++ b/Projects/App/Sources/Debug/AuthInfoView.swift @@ -155,6 +155,14 @@ struct AuthDebugInfoView: View { dismissButton: .default(Text("확인")) ) } + .toolbarRole(.navigationStack) + .toolbar { + ToolbarItem(placement: .topBarTrailing) { + Button("로그아웃", role: .destructive) { + AppCoordinator.shared.logout() + } + } + } } // 클립보드에 복사하는 함수 diff --git a/Projects/App/Sources/Navigation/NavigationStack.swift b/Projects/App/Sources/Navigation/NavigationStack.swift index 8197b6f..8e80590 100644 --- a/Projects/App/Sources/Navigation/NavigationStack.swift +++ b/Projects/App/Sources/Navigation/NavigationStack.swift @@ -40,6 +40,9 @@ extension PathType { case .authAgreement(let input): AuthAgreementView(input) + case .profileIntro(let input): + ProfileIntroView(input) + case .authGreeting(let input): AuthGreetingView(input) case .authProfileGender(let input): diff --git a/Projects/Core/CommonKit/Sources/AppCoordinator.swift b/Projects/Core/CommonKit/Sources/AppCoordinator.swift index d349216..06ce403 100644 --- a/Projects/Core/CommonKit/Sources/AppCoordinator.swift +++ b/Projects/Core/CommonKit/Sources/AppCoordinator.swift @@ -122,4 +122,11 @@ public final class AppCoordinator: ObservableObject { } } } + + public func logout() { + TokenManager.accessToken = nil + TokenManager.refreshToken = nil + TokenManager.registerToken = nil + AuthState.change(.loggedOut) + } } diff --git a/Projects/Core/CommonKit/Sources/Path/PathTypes.swift b/Projects/Core/CommonKit/Sources/Path/PathTypes.swift index 8666e05..f9686d7 100644 --- a/Projects/Core/CommonKit/Sources/Path/PathTypes.swift +++ b/Projects/Core/CommonKit/Sources/Path/PathTypes.swift @@ -69,6 +69,8 @@ public enum PathType: Hashable { case .authPhoneVerify: return "전화번호 인증" case .authAgreement: return "이용 약관" + case .profileIntro: return "프로필 입력 인트로" + case .authGreeting: return "가입 후 환영" case .authProfileGender: return "성별 입력" case .authProfileAge: return "나이 입력" @@ -90,6 +92,7 @@ public enum SignUpSubViewType: Hashable { case authPhoneVerify(SMSSendResponse) case authAgreement(input: SignUpFormDomain) + case profileIntro(input: SignUpFormDomain) case authGreeting(input: SignUpFormDomain) case authProfileGender(input: SignUpFormDomain) case authProfileAge(input: SignUpFormDomain) @@ -108,6 +111,8 @@ public enum SignUpSubViewType: Hashable { public func hash(into hasher: inout Hasher) { switch self { + case .profileIntro: + hasher.combine(-1) case .authPhoneInput: hasher.combine(0) case .authPhoneVerify: diff --git a/Projects/DesignSystem/DesignCore/Resources/Images/Images.xcassets/heart-with-arrow.imageset/Contents.json b/Projects/DesignSystem/DesignCore/Resources/Images/Images.xcassets/heart-with-arrow.imageset/Contents.json new file mode 100644 index 0000000..041e9b4 --- /dev/null +++ b/Projects/DesignSystem/DesignCore/Resources/Images/Images.xcassets/heart-with-arrow.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "heart-with-arrow.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "heart-with-arrow@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "heart-with-arrow@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Projects/DesignSystem/DesignCore/Resources/Images/Images.xcassets/heart-with-arrow.imageset/heart-with-arrow.png b/Projects/DesignSystem/DesignCore/Resources/Images/Images.xcassets/heart-with-arrow.imageset/heart-with-arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..68ebd9150c7e7300330dacf50aeeac8fd5fc4f7e GIT binary patch literal 3514 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 literal 0 HcmV?d00001 diff --git a/Projects/DesignSystem/DesignCore/Resources/Images/Images.xcassets/heart-with-arrow.imageset/heart-with-arrow@2x.png b/Projects/DesignSystem/DesignCore/Resources/Images/Images.xcassets/heart-with-arrow.imageset/heart-with-arrow@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..7228a20c6dc440c4af1f6f64737c68a31919bcdc GIT binary patch literal 10339 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�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 Z`M=T&1?B1MoAUqw002ovPDHLkV1n+^0k8l7 literal 0 HcmV?d00001 diff --git a/Projects/DesignSystem/DesignCore/Resources/Images/Images.xcassets/magnifying-glass.imageset/Contents.json b/Projects/DesignSystem/DesignCore/Resources/Images/Images.xcassets/magnifying-glass.imageset/Contents.json new file mode 100644 index 0000000..669c4e9 --- /dev/null +++ b/Projects/DesignSystem/DesignCore/Resources/Images/Images.xcassets/magnifying-glass.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "magnifying-glass.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "magnifying-glass@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "magnifying-glass@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Projects/DesignSystem/DesignCore/Resources/Images/Images.xcassets/magnifying-glass.imageset/magnifying-glass.png b/Projects/DesignSystem/DesignCore/Resources/Images/Images.xcassets/magnifying-glass.imageset/magnifying-glass.png new file mode 100644 index 0000000000000000000000000000000000000000..dcd7cf28bbd39a897f5e70cae3babf3a91ff3aaa GIT binary patch literal 3681 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 literal 0 HcmV?d00001 diff --git a/Projects/DesignSystem/DesignCore/Resources/Images/Images.xcassets/magnifying-glass.imageset/magnifying-glass@2x.png b/Projects/DesignSystem/DesignCore/Resources/Images/Images.xcassets/magnifying-glass.imageset/magnifying-glass@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..f704ece8e4ab07cf7d08fa9ad36b6accfc107569 GIT binary patch literal 10977 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 P00000NkvXXu0mjf@F*?~ literal 0 HcmV?d00001 diff --git a/Projects/DesignSystem/DesignCore/Resources/Images/Images.xcassets/magnifying-glass.imageset/magnifying-glass@3x.png b/Projects/DesignSystem/DesignCore/Resources/Images/Images.xcassets/magnifying-glass.imageset/magnifying-glass@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..13872ce310ea8c01c02f2db422a13979762d5d31 GIT binary patch literal 20946 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 FV1lOn4oUz3 literal 0 HcmV?d00001 diff --git a/Projects/Features/SignUp/Sources/AuthSignUp/AuthAgreement/AuthAgreementIntent.swift b/Projects/Features/SignUp/Sources/AuthSignUp/AuthAgreement/AuthAgreementIntent.swift index d20bc08..aaf753f 100644 --- a/Projects/Features/SignUp/Sources/AuthSignUp/AuthAgreement/AuthAgreementIntent.swift +++ b/Projects/Features/SignUp/Sources/AuthSignUp/AuthAgreement/AuthAgreementIntent.swift @@ -53,7 +53,7 @@ extension AuthAgreementIntent: AuthAgreementIntent.Intentable { func onTapNextButton() { Task { await AppCoordinator.shared.changeRootView( - .signUp(.authGreeting(input: input.input)) + .signUp(.profileIntro(input: input.input)) ) } } diff --git a/Projects/Features/SignUp/Sources/ProfileInput/ProfileIntro/ProfileIntroIntent.swift b/Projects/Features/SignUp/Sources/ProfileInput/ProfileIntro/ProfileIntroIntent.swift new file mode 100644 index 0000000..a2d6679 --- /dev/null +++ b/Projects/Features/SignUp/Sources/ProfileInput/ProfileIntro/ProfileIntroIntent.swift @@ -0,0 +1,66 @@ +// +// ProfileIntroIntent.swift +// SignUp +// +// Created by 김지수 on 11/20/24. +// Copyright © 2024 com.weave. All rights reserved. +// + +import Foundation +import CommonKit +import CoreKit +import Model + +//MARK: - Intent +class ProfileIntroIntent { + private weak var model: ProfileIntroModelActionable? + private let input: DataModel + + // MARK: Life cycle + init( + model: ProfileIntroModelActionable, + input: DataModel + ) { + self.input = input + self.model = model + + Task { + try? await Task.sleep(for: .milliseconds(2000)) + await pushNextView() + } + } +} + +//MARK: - Intentable +extension ProfileIntroIntent { + protocol Intentable { + // content + func pushNextView() async + func onTapNextButton() + + // default + func onAppear() + func task() async + } + + struct DataModel { + let input: SignUpFormDomain + } +} + +//MARK: - Intentable +extension ProfileIntroIntent: ProfileIntroIntent.Intentable { + // default + @MainActor + func pushNextView() async { + AppCoordinator.shared.changeRootView( + .signUp(.authProfileGender(input: input.input)) + ) + } + func onAppear() {} + + func task() async {} + + // content + func onTapNextButton() {} +} diff --git a/Projects/Features/SignUp/Sources/ProfileInput/ProfileIntro/ProfileIntroModel.swift b/Projects/Features/SignUp/Sources/ProfileInput/ProfileIntro/ProfileIntroModel.swift new file mode 100644 index 0000000..0d07458 --- /dev/null +++ b/Projects/Features/SignUp/Sources/ProfileInput/ProfileIntro/ProfileIntroModel.swift @@ -0,0 +1,78 @@ +// +// ProfileIntroModel.swift +// SignUp +// +// Created by 김지수 on 11/20/24. +// Copyright © 2024 com.weave. All rights reserved. +// + +import Foundation +import CommonKit +import CoreKit + +final class ProfileIntroModel: ObservableObject { + + //MARK: Stateful + protocol Stateful { + // content + var isValidated: Bool { get } + + // default + var isLoading: Bool { get } + + // error + var showErrorView: ErrorModel? { get } + var showErrorAlert: ErrorModel? { get } + } + + //MARK: State Properties + // content + @Published var isValidated: Bool = false + + // default + @Published var isLoading: Bool = false + + // error + @Published var showErrorView: ErrorModel? + @Published var showErrorAlert: ErrorModel? +} + +extension ProfileIntroModel: ProfileIntroModel.Stateful {} + +//MARK: - Actionable +protocol ProfileIntroModelActionable: AnyObject { + // content + func setValidation(value: Bool) + + // default + func setLoading(status: Bool) + + // error + func showErrorView(error: ErrorModel) + func showErrorAlert(error: ErrorModel) + func resetError() +} + +extension ProfileIntroModel: ProfileIntroModelActionable { + // content + func setValidation(value: Bool) { + isValidated = value + } + + // default + func setLoading(status: Bool) { + isLoading = status + } + + // error + func showErrorView(error: ErrorModel) { + showErrorView = error + } + func showErrorAlert(error: ErrorModel) { + showErrorAlert = error + } + func resetError() { + showErrorView = nil + showErrorAlert = nil + } +} diff --git a/Projects/Features/SignUp/Sources/ProfileInput/ProfileIntro/ProfileIntroView.swift b/Projects/Features/SignUp/Sources/ProfileInput/ProfileIntro/ProfileIntroView.swift new file mode 100644 index 0000000..a1ce01e --- /dev/null +++ b/Projects/Features/SignUp/Sources/ProfileInput/ProfileIntro/ProfileIntroView.swift @@ -0,0 +1,94 @@ +// +// ProfileIntroView.swift +// SignUp +// +// Created by 김지수 on 11/20/24. +// Copyright © 2024 com.weave. All rights reserved. +// + +import SwiftUI +import CoreKit +import DesignCore +import CommonKit +import Model + +public struct ProfileIntroView: View { + + @StateObject var container: MVIContainer + + @State var isShowIcon: Bool = false + @State var isShowText: Bool = false + + private var intent: ProfileIntroIntent.Intentable { container.intent } + private var state: ProfileIntroModel.Stateful { container.model } + + public init(_ input: SignUpFormDomain) { + let model = ProfileIntroModel() + let intent = ProfileIntroIntent( + model: model, + input: .init(input: input) + ) + let container = MVIContainer( + intent: intent as ProfileIntroIntent.Intentable, + model: model as ProfileIntroModel.Stateful, + modelChangePublisher: model.objectWillChange + ) + self._container = StateObject(wrappedValue: container) + } + + public var body: some View { + ZStack { + VStack { + Spacer() + LinearGradient( + colors: [ + .init(hex: 0xF3DDE5).opacity(0.0), + .init(hex: 0xF3DDE5) + ], + startPoint: .top, + endPoint: .bottom + ) + .frame(height: Device.height * 0.5) + } + + VStack(spacing: 24) { + DesignCore.Images.magnifyingGlass.image + .resizable() + .frame(width: 48, height: 48) + .opacity(isShowIcon ? 1 : 0) + .offset(y: isShowIcon ? -32 : 0) + + Text("만나서 반가워요!\n이제 당신이 어떤 사람인지 알려주세요.") + .typography(.semibold_20) + .multilineTextAlignment(.center) + .foregroundStyle(DesignCore.Colors.grey500) + .opacity(isShowText ? 1 : 0) + .offset(y: isShowText ? -32 : 0) + } + .animation(.easeInOut, value: isShowIcon) + .animation(.easeInOut, value: isShowText) + } + .ignoresSafeArea(.all) + .textureBackground() + .setPopNavigation { + AppCoordinator.shared.pop() + } + .setLoading(state.isLoading) + .task { + await intent.task() + try? await Task.sleep(for: .milliseconds(250)) + isShowIcon = true + try? await Task.sleep(for: .milliseconds(150)) + isShowText = true + } + .onAppear { + intent.onAppear() + } + } +} + +#Preview { + NavigationView { + ProfileIntroView(.mock) + } +} From f066224ae5736ad30465c5ff4a5531db242b2e12 Mon Sep 17 00:00:00 2001 From: Jisu Kim Date: Thu, 21 Nov 2024 00:30:28 +0900 Subject: [PATCH 2/4] =?UTF-8?q?[WEAV-135]=20=EC=9D=B4=EC=83=81=ED=98=95=20?= =?UTF-8?q?=EC=9E=85=EB=A0=A5=20=EC=9D=B8=ED=8A=B8=EB=A1=9C=20=EB=B7=B0=20?= =?UTF-8?q?=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Sources/Navigation/NavigationStack.swift | 2 + .../CommonKit/Sources/Path/PathTypes.swift | 5 + .../DreamPartnerIntroIntent.swift | 66 +++++++++++++ .../DreamPartnerIntroModel.swift | 78 +++++++++++++++ .../DreamPartnerIntroView.swift | 94 +++++++++++++++++++ .../DreamPartnerJobModel.swift | 83 ++++++++++++++++ .../AuthName/AuthNameInputIntent.swift | 2 +- .../ProfileIntro/ProfileIntroIntent.swift | 2 +- 8 files changed, 330 insertions(+), 2 deletions(-) create mode 100644 Projects/Features/SignUp/Sources/DreamPartnerInput/DreamPartnerIntro/DreamPartnerIntroIntent.swift create mode 100644 Projects/Features/SignUp/Sources/DreamPartnerInput/DreamPartnerIntro/DreamPartnerIntroModel.swift create mode 100644 Projects/Features/SignUp/Sources/DreamPartnerInput/DreamPartnerIntro/DreamPartnerIntroView.swift create mode 100644 Projects/Features/SignUp/Sources/DreamPartnerInput/DreamPartnerIntro/DreamPartnerJobModel.swift diff --git a/Projects/App/Sources/Navigation/NavigationStack.swift b/Projects/App/Sources/Navigation/NavigationStack.swift index 8e80590..4d40e20 100644 --- a/Projects/App/Sources/Navigation/NavigationStack.swift +++ b/Projects/App/Sources/Navigation/NavigationStack.swift @@ -58,6 +58,8 @@ extension PathType { case .authName(let input): AuthNameInputView(input) + case .dreamPartnerIntro(let input): + DreamPartnerIntroView(input) case .dreamPartnerAgeRange(let input): DreamPartnerAgeView(input) case .dreamPartnerJobOccupation(let input): diff --git a/Projects/Core/CommonKit/Sources/Path/PathTypes.swift b/Projects/Core/CommonKit/Sources/Path/PathTypes.swift index f9686d7..f1271f4 100644 --- a/Projects/Core/CommonKit/Sources/Path/PathTypes.swift +++ b/Projects/Core/CommonKit/Sources/Path/PathTypes.swift @@ -52,6 +52,7 @@ public enum PathType: Hashable { .signUp(.authRegion(input: .mock)), .signUp(.authPhoneInput), + .signUp(.dreamPartnerIntro(input: .mock)), .signUp(.dreamPartnerAgeRange(input: .mock)) ] #endif @@ -79,6 +80,7 @@ public enum PathType: Hashable { case .authRegion: return "내 지역, 선호 지역 입력" case .authName: return "이름 입력" + case .dreamPartnerIntro: return "이상형 입력 인트로" case .dreamPartnerAgeRange: return "이상형 나이대" case .dreamPartnerJobOccupation: return "이상형 직업" case .dreamPartnerDistance: return "이상형과의 거리" @@ -101,6 +103,7 @@ public enum SignUpSubViewType: Hashable { case authRegion(input: SignUpFormDomain) case authName(input: SignUpFormDomain) + case dreamPartnerIntro(input: SignUpFormDomain) case dreamPartnerAgeRange(input: SignUpFormDomain) case dreamPartnerJobOccupation(input: SignUpFormDomain) case dreamPartnerDistance(input: SignUpFormDomain) @@ -134,6 +137,8 @@ public enum SignUpSubViewType: Hashable { case .authName: hasher.combine(9) + case .dreamPartnerIntro: + hasher.combine(-2) case .dreamPartnerAgeRange: hasher.combine(10) case .dreamPartnerJobOccupation: diff --git a/Projects/Features/SignUp/Sources/DreamPartnerInput/DreamPartnerIntro/DreamPartnerIntroIntent.swift b/Projects/Features/SignUp/Sources/DreamPartnerInput/DreamPartnerIntro/DreamPartnerIntroIntent.swift new file mode 100644 index 0000000..21fd22a --- /dev/null +++ b/Projects/Features/SignUp/Sources/DreamPartnerInput/DreamPartnerIntro/DreamPartnerIntroIntent.swift @@ -0,0 +1,66 @@ +// +// DreamPartnerIntroIntent.swift +// SignUp +// +// Created by 김지수 on 11/21/24. +// Copyright © 2024 com.weave. All rights reserved. +// + +import Foundation +import CommonKit +import CoreKit +import Model + +//MARK: - Intent +class DreamPartnerIntroIntent { + private weak var model: DreamPartnerIntroModelActionable? + private let input: DataModel + + // MARK: Life cycle + init( + model: DreamPartnerIntroModelActionable, + input: DataModel + ) { + self.input = input + self.model = model + + Task { + try? await Task.sleep(for: .milliseconds(2500)) + await pushNextView() + } + } +} + +//MARK: - Intentable +extension DreamPartnerIntroIntent { + protocol Intentable { + // content + func pushNextView() async + func onTapNextButton() + + // default + func onAppear() + func task() async + } + + struct DataModel { + let input: SignUpFormDomain + } +} + +//MARK: - Intentable +extension DreamPartnerIntroIntent: DreamPartnerIntroIntent.Intentable { + // default + func onAppear() {} + + func task() async {} + + // content + @MainActor + func pushNextView() async { + AppCoordinator.shared.changeRootView( + .signUp(.dreamPartnerAgeRange(input: input.input)) + ) + } + func onTapNextButton() {} +} diff --git a/Projects/Features/SignUp/Sources/DreamPartnerInput/DreamPartnerIntro/DreamPartnerIntroModel.swift b/Projects/Features/SignUp/Sources/DreamPartnerInput/DreamPartnerIntro/DreamPartnerIntroModel.swift new file mode 100644 index 0000000..0f4d0b3 --- /dev/null +++ b/Projects/Features/SignUp/Sources/DreamPartnerInput/DreamPartnerIntro/DreamPartnerIntroModel.swift @@ -0,0 +1,78 @@ +// +// DreamPartnerIntroModel.swift +// SignUp +// +// Created by 김지수 on 11/21/24. +// Copyright © 2024 com.weave. All rights reserved. +// + +import Foundation +import CommonKit +import CoreKit + +final class DreamPartnerIntroModel: ObservableObject { + + //MARK: Stateful + protocol Stateful { + // content + var isValidated: Bool { get } + + // default + var isLoading: Bool { get } + + // error + var showErrorView: ErrorModel? { get } + var showErrorAlert: ErrorModel? { get } + } + + //MARK: State Properties + // content + @Published var isValidated: Bool = false + + // default + @Published var isLoading: Bool = false + + // error + @Published var showErrorView: ErrorModel? + @Published var showErrorAlert: ErrorModel? +} + +extension DreamPartnerIntroModel: DreamPartnerIntroModel.Stateful {} + +//MARK: - Actionable +protocol DreamPartnerIntroModelActionable: AnyObject { + // content + func setValidation(value: Bool) + + // default + func setLoading(status: Bool) + + // error + func showErrorView(error: ErrorModel) + func showErrorAlert(error: ErrorModel) + func resetError() +} + +extension DreamPartnerIntroModel: DreamPartnerIntroModelActionable { + // content + func setValidation(value: Bool) { + isValidated = value + } + + // default + func setLoading(status: Bool) { + isLoading = status + } + + // error + func showErrorView(error: ErrorModel) { + showErrorView = error + } + func showErrorAlert(error: ErrorModel) { + showErrorAlert = error + } + func resetError() { + showErrorView = nil + showErrorAlert = nil + } +} diff --git a/Projects/Features/SignUp/Sources/DreamPartnerInput/DreamPartnerIntro/DreamPartnerIntroView.swift b/Projects/Features/SignUp/Sources/DreamPartnerInput/DreamPartnerIntro/DreamPartnerIntroView.swift new file mode 100644 index 0000000..b5da906 --- /dev/null +++ b/Projects/Features/SignUp/Sources/DreamPartnerInput/DreamPartnerIntro/DreamPartnerIntroView.swift @@ -0,0 +1,94 @@ +// +// DreamPartnerIntroView.swift +// SignUp +// +// Created by 김지수 on 11/21/24. +// Copyright © 2024 com.weave. All rights reserved. +// + +import SwiftUI +import CoreKit +import DesignCore +import CommonKit +import Model + +public struct DreamPartnerIntroView: View { + + @StateObject var container: MVIContainer + + @State var isShowIcon: Bool = false + @State var isShowText: Bool = false + + private var intent: DreamPartnerIntroIntent.Intentable { container.intent } + private var state: DreamPartnerIntroModel.Stateful { container.model } + + public init(_ input: SignUpFormDomain) { + let model = DreamPartnerIntroModel() + let intent = DreamPartnerIntroIntent( + model: model, + input: .init(input: input) + ) + let container = MVIContainer( + intent: intent as DreamPartnerIntroIntent.Intentable, + model: model as DreamPartnerIntroModel.Stateful, + modelChangePublisher: model.objectWillChange + ) + self._container = StateObject(wrappedValue: container) + } + + public var body: some View { + ZStack { + VStack { + Spacer() + LinearGradient( + colors: [ + .init(hex: 0xF3DDE5).opacity(0.0), + .init(hex: 0xF3DDE5) + ], + startPoint: .top, + endPoint: .bottom + ) + .frame(height: Device.height * 0.5) + } + + VStack(spacing: 24) { + DesignCore.Images.heartWithArrow.image + .resizable() + .frame(width: 48, height: 48) + .opacity(isShowIcon ? 1 : 0) + .offset(y: isShowIcon ? -32 : 0) + + Text("이제 당신의 취향을 알고 싶어요!\n어떤 상대를 만나면 좋을 지 알려주세요.") + .typography(.semibold_20) + .multilineTextAlignment(.center) + .foregroundStyle(DesignCore.Colors.grey500) + .opacity(isShowText ? 1 : 0) + .offset(y: isShowText ? -32 : 0) + } + .animation(.easeInOut, value: isShowIcon) + .animation(.easeInOut, value: isShowText) + } + .ignoresSafeArea(.all) + .textureBackground() + .setPopNavigation { + AppCoordinator.shared.pop() + } + .setLoading(state.isLoading) + .task { + await intent.task() + try? await Task.sleep(for: .milliseconds(250)) + isShowIcon = true + try? await Task.sleep(for: .milliseconds(150)) + isShowText = true + } + .onAppear { + intent.onAppear() + } + } +} + +#Preview { + NavigationView { + DreamPartnerIntroView(.mock) + } +} diff --git a/Projects/Features/SignUp/Sources/DreamPartnerInput/DreamPartnerIntro/DreamPartnerJobModel.swift b/Projects/Features/SignUp/Sources/DreamPartnerInput/DreamPartnerIntro/DreamPartnerJobModel.swift new file mode 100644 index 0000000..1a23044 --- /dev/null +++ b/Projects/Features/SignUp/Sources/DreamPartnerInput/DreamPartnerIntro/DreamPartnerJobModel.swift @@ -0,0 +1,83 @@ +// +// DreamPartnerJobModel.swift +// DesignPreview +// +// Created by 김지수 on 10/25/24. +// Copyright © 2024 com.weave. All rights reserved. +// + +import Foundation +import CommonKit +import CoreKit +import DesignCore + +final class DreamPartnerJobModel: ObservableObject { + + //MARK: Stateful + protocol Stateful { + // content + var selectedJobArray: [JobOccupation] { get } + var isValidated: Bool { get } + + // default + var isLoading: Bool { get } + + // error + var showErrorView: ErrorModel? { get } + var showErrorAlert: ErrorModel? { get } + } + + //MARK: State Properties + // content + @Published var selectedJobArray: [JobOccupation] = [] + var isValidated: Bool { + selectedJobArray.isNotEmpty + } + + // default + @Published var isLoading: Bool = false + + // error + @Published var showErrorView: ErrorModel? + @Published var showErrorAlert: ErrorModel? +} + +extension DreamPartnerJobModel: DreamPartnerJobModel.Stateful {} + +//MARK: - Actionable +protocol DreamPartnerJobModelActionable: AnyObject { + // content + func setSelectedJobArray(_ jobs: [JobOccupation]) + + // default + func setLoading(status: Bool) + + // error + func showErrorView(error: ErrorModel) + func showErrorAlert(error: ErrorModel) + func resetError() +} + +extension DreamPartnerJobModel: DreamPartnerJobModelActionable { + // content + func setSelectedJobArray(_ jobs: [JobOccupation]) { + selectedJobArray = jobs + } + + // default + func setLoading(status: Bool) { + isLoading = status + } + + // error + func showErrorView(error: ErrorModel) { + showErrorView = error + } + func showErrorAlert(error: ErrorModel) { + showErrorAlert = error + } + func resetError() { + showErrorView = nil + showErrorAlert = nil + } +} diff --git a/Projects/Features/SignUp/Sources/ProfileInput/AuthName/AuthNameInputIntent.swift b/Projects/Features/SignUp/Sources/ProfileInput/AuthName/AuthNameInputIntent.swift index 8882716..56466d4 100644 --- a/Projects/Features/SignUp/Sources/ProfileInput/AuthName/AuthNameInputIntent.swift +++ b/Projects/Features/SignUp/Sources/ProfileInput/AuthName/AuthNameInputIntent.swift @@ -67,7 +67,7 @@ extension AuthNameInputIntent: AuthNameInputIntent.Intentable { func pushNextView(payload: SignUpFormDomain) { AppCoordinator.shared.push( .signUp( - .dreamPartnerAgeRange( + .dreamPartnerIntro( input: payload ) ) diff --git a/Projects/Features/SignUp/Sources/ProfileInput/ProfileIntro/ProfileIntroIntent.swift b/Projects/Features/SignUp/Sources/ProfileInput/ProfileIntro/ProfileIntroIntent.swift index a2d6679..c989409 100644 --- a/Projects/Features/SignUp/Sources/ProfileInput/ProfileIntro/ProfileIntroIntent.swift +++ b/Projects/Features/SignUp/Sources/ProfileInput/ProfileIntro/ProfileIntroIntent.swift @@ -25,7 +25,7 @@ class ProfileIntroIntent { self.model = model Task { - try? await Task.sleep(for: .milliseconds(2000)) + try? await Task.sleep(for: .milliseconds(2500)) await pushNextView() } } From 57cb1c6d2cf88d80a20db5d86ac80a0570a2b0f4 Mon Sep 17 00:00:00 2001 From: Jisu Kim Date: Thu, 21 Nov 2024 00:36:58 +0900 Subject: [PATCH 3/4] =?UTF-8?q?[WEAV-135]=20=EA=B0=80=EC=9E=85=20=ED=94=8C?= =?UTF-8?q?=EB=A1=9C=EC=9A=B0=20back=20button=20=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DreamPartnerAge/DreamPartnerAgeView.swift | 2 +- .../ProfileInput/AuthProfileAge/AuthProfileAgeInputView.swift | 4 ++-- .../AuthProfileGenderInput/AuthProfileGenderInputView.swift | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Projects/Features/SignUp/Sources/DreamPartnerInput/DreamPartnerAge/DreamPartnerAgeView.swift b/Projects/Features/SignUp/Sources/DreamPartnerInput/DreamPartnerAge/DreamPartnerAgeView.swift index edd5d04..fc16aad 100644 --- a/Projects/Features/SignUp/Sources/DreamPartnerInput/DreamPartnerAge/DreamPartnerAgeView.swift +++ b/Projects/Features/SignUp/Sources/DreamPartnerInput/DreamPartnerAge/DreamPartnerAgeView.swift @@ -137,7 +137,7 @@ public struct DreamPartnerAgeView: View { } .ignoresSafeArea(.keyboard) .textureBackground() - .setPopNavigation { + .setNavigation(showLeftBackButton: false) { AppCoordinator.shared.pop() } .setLoading(state.isLoading) diff --git a/Projects/Features/SignUp/Sources/ProfileInput/AuthProfileAge/AuthProfileAgeInputView.swift b/Projects/Features/SignUp/Sources/ProfileInput/AuthProfileAge/AuthProfileAgeInputView.swift index 8ff1265..af83b75 100644 --- a/Projects/Features/SignUp/Sources/ProfileInput/AuthProfileAge/AuthProfileAgeInputView.swift +++ b/Projects/Features/SignUp/Sources/ProfileInput/AuthProfileAge/AuthProfileAgeInputView.swift @@ -137,8 +137,8 @@ public struct AuthProfileAgeInputView: View { .ignoresSafeArea() .padding(.top, 10) .textureBackground() - .setNavigation(showLeftBackButton: false) { - + .setPopNavigation { + AppCoordinator.shared.pop() } .setLoading(state.isLoading) .onTapGesture { diff --git a/Projects/Features/SignUp/Sources/ProfileInput/AuthProfileGenderInput/AuthProfileGenderInputView.swift b/Projects/Features/SignUp/Sources/ProfileInput/AuthProfileGenderInput/AuthProfileGenderInputView.swift index 670d8b0..07ec8c7 100644 --- a/Projects/Features/SignUp/Sources/ProfileInput/AuthProfileGenderInput/AuthProfileGenderInputView.swift +++ b/Projects/Features/SignUp/Sources/ProfileInput/AuthProfileGenderInput/AuthProfileGenderInputView.swift @@ -83,7 +83,7 @@ public struct AuthProfileGenderInputView: View { } .padding(.top, 10) .textureBackground() - .setPopNavigation { + .setNavigation(showLeftBackButton: false) { AppCoordinator.shared.pop() } .setLoading(state.isLoading) From 4b27e4667f51fdff983e76ba3e37deb17103e75f Mon Sep 17 00:00:00 2001 From: Jisu Kim Date: Thu, 21 Nov 2024 00:44:16 +0900 Subject: [PATCH 4/4] =?UTF-8?q?[WEAV-135]=20=EC=A4=91=EB=B3=B5=20=ED=8C=8C?= =?UTF-8?q?=EC=9D=BC=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DreamPartnerJobModel.swift | 83 ------------------- 1 file changed, 83 deletions(-) delete mode 100644 Projects/Features/SignUp/Sources/DreamPartnerInput/DreamPartnerIntro/DreamPartnerJobModel.swift diff --git a/Projects/Features/SignUp/Sources/DreamPartnerInput/DreamPartnerIntro/DreamPartnerJobModel.swift b/Projects/Features/SignUp/Sources/DreamPartnerInput/DreamPartnerIntro/DreamPartnerJobModel.swift deleted file mode 100644 index 1a23044..0000000 --- a/Projects/Features/SignUp/Sources/DreamPartnerInput/DreamPartnerIntro/DreamPartnerJobModel.swift +++ /dev/null @@ -1,83 +0,0 @@ -// -// DreamPartnerJobModel.swift -// DesignPreview -// -// Created by 김지수 on 10/25/24. -// Copyright © 2024 com.weave. All rights reserved. -// - -import Foundation -import CommonKit -import CoreKit -import DesignCore - -final class DreamPartnerJobModel: ObservableObject { - - //MARK: Stateful - protocol Stateful { - // content - var selectedJobArray: [JobOccupation] { get } - var isValidated: Bool { get } - - // default - var isLoading: Bool { get } - - // error - var showErrorView: ErrorModel? { get } - var showErrorAlert: ErrorModel? { get } - } - - //MARK: State Properties - // content - @Published var selectedJobArray: [JobOccupation] = [] - var isValidated: Bool { - selectedJobArray.isNotEmpty - } - - // default - @Published var isLoading: Bool = false - - // error - @Published var showErrorView: ErrorModel? - @Published var showErrorAlert: ErrorModel? -} - -extension DreamPartnerJobModel: DreamPartnerJobModel.Stateful {} - -//MARK: - Actionable -protocol DreamPartnerJobModelActionable: AnyObject { - // content - func setSelectedJobArray(_ jobs: [JobOccupation]) - - // default - func setLoading(status: Bool) - - // error - func showErrorView(error: ErrorModel) - func showErrorAlert(error: ErrorModel) - func resetError() -} - -extension DreamPartnerJobModel: DreamPartnerJobModelActionable { - // content - func setSelectedJobArray(_ jobs: [JobOccupation]) { - selectedJobArray = jobs - } - - // default - func setLoading(status: Bool) { - isLoading = status - } - - // error - func showErrorView(error: ErrorModel) { - showErrorView = error - } - func showErrorAlert(error: ErrorModel) { - showErrorAlert = error - } - func resetError() { - showErrorView = nil - showErrorAlert = nil - } -}