diff --git a/Projects/Domain/StudentDomain/Interface/DTO/Request/InputStudentInformationRequestDTO.swift b/Projects/Domain/StudentDomain/Interface/DTO/Request/InputStudentInformationRequestDTO.swift index 92fd7a06..59326efb 100644 --- a/Projects/Domain/StudentDomain/Interface/DTO/Request/InputStudentInformationRequestDTO.swift +++ b/Projects/Domain/StudentDomain/Interface/DTO/Request/InputStudentInformationRequestDTO.swift @@ -9,7 +9,6 @@ public struct InputStudentInformationRequestDTO: Encodable { public let languageCertificates: [LanguageCertificate] public let major: String public let militaryService: MilitaryServiceType - public let portfolioURL: String public let profileImgURL: String public let regions: [String] public let salary: Int @@ -26,7 +25,6 @@ public struct InputStudentInformationRequestDTO: Encodable { languageCertificates: [LanguageCertificate], major: String, militaryService: MilitaryServiceType, - portfolioURL: String, profileImgURL: String, regions: [String], salary: Int, @@ -42,7 +40,6 @@ public struct InputStudentInformationRequestDTO: Encodable { self.languageCertificates = languageCertificates self.major = major self.militaryService = militaryService - self.portfolioURL = portfolioURL self.profileImgURL = profileImgURL self.regions = regions self.salary = salary @@ -60,7 +57,6 @@ public struct InputStudentInformationRequestDTO: Encodable { case languageCertificates case major case militaryService - case portfolioURL = "portfolioUrl" case profileImgURL = "profileImgUrl" case regions case salary diff --git a/Projects/Feature/InputInformationBaseFeature/Sources/InputInformationPageTitleView.swift b/Projects/Feature/InputInformationBaseFeature/Sources/InputInformationPageTitleView.swift index 63bec655..5efa592a 100644 --- a/Projects/Feature/InputInformationBaseFeature/Sources/InputInformationPageTitleView.swift +++ b/Projects/Feature/InputInformationBaseFeature/Sources/InputInformationPageTitleView.swift @@ -21,8 +21,6 @@ public struct InputInformationPageTitleView: View { public var body: some View { VStack(spacing: 16) { - SMSPageControl(pageCount: pageCount, selectedPage: selectedPage) - .padding(.horizontal, 20) SMSSeparator() diff --git a/Projects/Feature/InputInformationFeature/Sources/Intent/InputInformationIntent.swift b/Projects/Feature/InputInformationFeature/Sources/Intent/InputInformationIntent.swift index a8bc6972..0f8ca92f 100644 --- a/Projects/Feature/InputInformationFeature/Sources/Intent/InputInformationIntent.swift +++ b/Projects/Feature/InputInformationFeature/Sources/Intent/InputInformationIntent.swift @@ -58,7 +58,6 @@ final class InputInformationIntent: InputInformationIntentProtocol { languageCertificates: state.languages, major: inputProfileInfo.major, militaryService: militaryServiceType, - portfolioURL: inputProfileInfo.portfoiloURL, profileImgURL: profileImageURL, regions: inputWorkInfo.workRegion, salary: inputWorkInfo.salary, @@ -107,7 +106,7 @@ final class InputInformationIntent: InputInformationIntentProtocol { extension InputInformationIntent: InputProfileDelegate { func completeToInputProfile(input: InputProfileInformationObject) { model?.updateInputProfileInformationObject(object: input) - model?.nextButtonDidTap() + inputInformationDelegate?.completeToInputInformation() } } diff --git a/Projects/Feature/InputProfileInfoFeature/Interface/InputProfileDelegate.swift b/Projects/Feature/InputProfileInfoFeature/Interface/InputProfileDelegate.swift index 11187218..f6b52348 100644 --- a/Projects/Feature/InputProfileInfoFeature/Interface/InputProfileDelegate.swift +++ b/Projects/Feature/InputProfileInfoFeature/Interface/InputProfileDelegate.swift @@ -10,7 +10,6 @@ public struct InputProfileInformationObject { public let introduce: String public let contactEmail: String public let major: String - public let portfoiloURL: String public let techStacks: [String] public init( @@ -19,7 +18,6 @@ public struct InputProfileInformationObject { introduce: String, contactEmail: String, major: String, - portfoiloURL: String, techStacks: [String] ) { self.profileImageData = profileImageData @@ -27,7 +25,6 @@ public struct InputProfileInformationObject { self.introduce = introduce self.contactEmail = contactEmail self.major = major - self.portfoiloURL = portfoiloURL self.techStacks = techStacks } } diff --git a/Projects/Feature/InputProfileInfoFeature/Sources/Intent/InputProfileInfoIntent.swift b/Projects/Feature/InputProfileInfoFeature/Sources/Intent/InputProfileInfoIntent.swift index 4b14872e..f4b83cac 100644 --- a/Projects/Feature/InputProfileInfoFeature/Sources/Intent/InputProfileInfoIntent.swift +++ b/Projects/Feature/InputProfileInfoFeature/Sources/Intent/InputProfileInfoIntent.swift @@ -31,10 +31,6 @@ final class InputProfileInfoIntent: InputProfileInfoIntentProtocol { model?.updateMajor(major: major) } - func updatePortfolioURL(portfolioURL: String) { - model?.updatePortfolioURL(portfolioURL: portfolioURL) - } - func techStackAppendIsRequired() { model?.updateIsPresentedTeckStackAppend(isPresented: true) } @@ -81,7 +77,7 @@ final class InputProfileInfoIntent: InputProfileInfoIntentProtocol { model?.updateProfileImage(imageResult: imageResult) } - func nextButtonDidTap(state: any InputProfileInfoStateProtocol) { + func completeButtonDidTap(state: any InputProfileInfoStateProtocol) { var errorSet = Set() if state.profileImage == nil { errorSet.insert(.profile) @@ -101,10 +97,6 @@ final class InputProfileInfoIntent: InputProfileInfoIntentProtocol { errorSet.insert(.major) } - let urlValidator = URLValidator() - if !urlValidator.validate(state.portfolioURL) { - errorSet.insert(.portfoilo) - } model?.updateErrorFieldSet(set: errorSet) guard @@ -119,7 +111,6 @@ final class InputProfileInfoIntent: InputProfileInfoIntentProtocol { introduce: state.introduce, contactEmail: state.email, major: state.major, - portfoiloURL: state.portfolioURL, techStacks: state.techStacks ) inputProfileDelegate?.completeToInputProfile(input: input) diff --git a/Projects/Feature/InputProfileInfoFeature/Sources/Intent/InputProfileInfoIntentProtocol.swift b/Projects/Feature/InputProfileInfoFeature/Sources/Intent/InputProfileInfoIntentProtocol.swift index c7d81c12..fbb8eb21 100644 --- a/Projects/Feature/InputProfileInfoFeature/Sources/Intent/InputProfileInfoIntentProtocol.swift +++ b/Projects/Feature/InputProfileInfoFeature/Sources/Intent/InputProfileInfoIntentProtocol.swift @@ -5,7 +5,6 @@ protocol InputProfileInfoIntentProtocol { func updateIntroduce(introduce: String) func updateEmail(email: String) func updateMajor(major: String) - func updatePortfolioURL(portfolioURL: String) func techStackAppendIsRequired() func techStackAppendDismissed() func techStackAppendDidComplete(techStacks: [String]) @@ -17,7 +16,7 @@ protocol InputProfileInfoIntentProtocol { func imageMethodPickerIsRequired() func imageMethodPickerDismissed() func imageDidSelected(imageResult: PickedImageResult?) - func nextButtonDidTap(state: any InputProfileInfoStateProtocol) + func completeButtonDidTap(state: any InputProfileInfoStateProtocol) func cameraIsRequired() func cameraDismissed() func activeSelfEntering() diff --git a/Projects/Feature/InputProfileInfoFeature/Sources/Model/InputProfileInfoModel.swift b/Projects/Feature/InputProfileInfoFeature/Sources/Model/InputProfileInfoModel.swift index 49166129..5cad54ac 100644 --- a/Projects/Feature/InputProfileInfoFeature/Sources/Model/InputProfileInfoModel.swift +++ b/Projects/Feature/InputProfileInfoFeature/Sources/Model/InputProfileInfoModel.swift @@ -6,7 +6,6 @@ final class InputProfileInfoModel: ObservableObject, InputProfileInfoStateProtoc @Published var email: String = "" @Published var major: String = "" @Published var majorList: [String] = [] - @Published var portfolioURL: String = "" @Published var techStacks: [String] = [] @Published var isPresentedMajorSheet: Bool = false @Published var isPresentedImagePicker: Bool = false @@ -19,8 +18,7 @@ final class InputProfileInfoModel: ObservableObject, InputProfileInfoStateProtoc var isDisabledNextButton: Bool { introduce.isEmpty || email.isEmpty || - major.isEmpty || - portfolioURL.isEmpty + major.isEmpty } } @@ -41,10 +39,6 @@ extension InputProfileInfoModel: InputProfileInfoActionProtocol { self.majorList = majorList } - func updatePortfolioURL(portfolioURL: String) { - self.portfolioURL = portfolioURL - } - func updateTeckStacks(techStacks: [String]) { self.techStacks = techStacks } diff --git a/Projects/Feature/InputProfileInfoFeature/Sources/Model/InputProfileInfoModelProtocol.swift b/Projects/Feature/InputProfileInfoFeature/Sources/Model/InputProfileInfoModelProtocol.swift index 27c537a0..fca5b0a6 100644 --- a/Projects/Feature/InputProfileInfoFeature/Sources/Model/InputProfileInfoModelProtocol.swift +++ b/Projects/Feature/InputProfileInfoFeature/Sources/Model/InputProfileInfoModelProtocol.swift @@ -14,7 +14,6 @@ protocol InputProfileInfoStateProtocol { var email: String { get } var major: String { get } var majorList: [String] { get } - var portfolioURL: String { get } var techStacks: [String] { get } var isPresentedMajorSheet: Bool { get } var isPresentedImagePicker: Bool { get } @@ -32,7 +31,6 @@ protocol InputProfileInfoActionProtocol: AnyObject { func updateEmail(email: String) func updateMajor(major: String) func updateMajorList(majorList: [String]) - func updatePortfolioURL(portfolioURL: String) func updateTeckStacks(techStacks: [String]) func removeTeckStacks(techStack: String) func updateIsPresentedTeckStackAppend(isPresented: Bool) diff --git a/Projects/Feature/InputProfileInfoFeature/Sources/Scene/InputProfileInfoView.swift b/Projects/Feature/InputProfileInfoFeature/Sources/Scene/InputProfileInfoView.swift index 3c7821d8..8d47903a 100644 --- a/Projects/Feature/InputProfileInfoFeature/Sources/Scene/InputProfileInfoView.swift +++ b/Projects/Feature/InputProfileInfoFeature/Sources/Scene/InputProfileInfoView.swift @@ -117,21 +117,6 @@ struct InputProfileInfoView: View { ) .titleWrapper("분야") - SMSTextField( - "E.g. https://github.com", - text: Binding( - get: { state.portfolioURL }, - set: intent.updatePortfolioURL(portfolioURL:) - ), - errorText: "URL 형식에 맞게 입력해주세요", - isError: state.inputProfileErrorFieldSet.contains(.portfoilo) - ) { - intent.techStackAppendIsRequired() - } - .keyboardType(.URL) - .focused($focusField, equals: .portfoilo) - .titleWrapper("포트폴리오 URL") - VStack(spacing: 8) { HStack(spacing: 8) { SMSIcon(.magnifyingglass) @@ -180,8 +165,8 @@ struct InputProfileInfoView: View { .titleWrapper("세부스택 (최대 5개)") } - CTAButton(text: "다음") { - intent.nextButtonDidTap(state: state) + CTAButton(text: "완료") { + intent.completeButtonDidTap(state: state) } .disabled(state.isDisabledNextButton) .padding(.bottom, 32) diff --git a/Projects/Feature/InputProfileInfoFeature/Tests/InputProfileInfoFeatureTest.swift b/Projects/Feature/InputProfileInfoFeature/Tests/InputProfileInfoFeatureTest.swift index bf38e1c6..bfd47f43 100644 --- a/Projects/Feature/InputProfileInfoFeature/Tests/InputProfileInfoFeatureTest.swift +++ b/Projects/Feature/InputProfileInfoFeature/Tests/InputProfileInfoFeatureTest.swift @@ -64,15 +64,6 @@ final class InputProfileInfoFeatureTests: XCTestCase { XCTAssertEqual(sut.model.major, uuid) } - func test_update_portfoiloURL() { - sut.intent.updatePortfolioURL(portfolioURL: "A") - XCTAssertEqual(sut.model.portfolioURL, "A") - - let uuid = UUID().uuidString - sut.intent.updatePortfolioURL(portfolioURL: uuid) - XCTAssertEqual(sut.model.portfolioURL, uuid) - } - func test_bottomSheet_intet() async throws { sut.intent.majorSheetIsRequired() XCTAssertEqual(sut.model.isPresentedMajorSheet, true)