From df353161c632c7b0451f9584b6d1a646c12360f0 Mon Sep 17 00:00:00 2001 From: JaeSunEo Date: Thu, 22 Jan 2026 22:41:24 +0900 Subject: [PATCH 1/3] =?UTF-8?q?fix/=20#164=20QA=20=EC=88=98=EC=A0=95=20?= =?UTF-8?q?=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Calendar/SelectTreatment/SelectTreatmentView.swift | 6 ++---- .../Treatment/View/Treatment/TreatmentFilterView.swift | 10 ++++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Cherrish-iOS/Cherrish-iOS/Presentation/Feature/Calendar/SelectTreatment/SelectTreatmentView.swift b/Cherrish-iOS/Cherrish-iOS/Presentation/Feature/Calendar/SelectTreatment/SelectTreatmentView.swift index d946e562..29d02a17 100644 --- a/Cherrish-iOS/Cherrish-iOS/Presentation/Feature/Calendar/SelectTreatment/SelectTreatmentView.swift +++ b/Cherrish-iOS/Cherrish-iOS/Presentation/Feature/Calendar/SelectTreatment/SelectTreatmentView.swift @@ -76,12 +76,10 @@ extension SelectTreatmentView { VStack(alignment: .leading, spacing: 0){ TypographyText("시술 일정을 추가해볼게요.", style: .title1_sb_18, color: .gray1000) - .frame(height: 27.adjustedH) + .frame(height: 30.adjustedH) TypographyText("이미 생각해둔 시술이 있나요?", style: .title1_sb_18, color: .gray1000) - .frame(height: 27.adjustedH) + .frame(height: 30.adjustedH) - - Spacer() .frame(height: 4.adjustedH) TypographyText("시술을 선택하셨는지 확인할게요.", style: .body1_r_14, color: .gray700) diff --git a/Cherrish-iOS/Cherrish-iOS/Presentation/Feature/Calendar/Treatment/View/Treatment/TreatmentFilterView.swift b/Cherrish-iOS/Cherrish-iOS/Presentation/Feature/Calendar/Treatment/View/Treatment/TreatmentFilterView.swift index 0fdc7d20..1a1338cb 100644 --- a/Cherrish-iOS/Cherrish-iOS/Presentation/Feature/Calendar/Treatment/View/Treatment/TreatmentFilterView.swift +++ b/Cherrish-iOS/Cherrish-iOS/Presentation/Feature/Calendar/Treatment/View/Treatment/TreatmentFilterView.swift @@ -21,7 +21,8 @@ struct TreatmentFilterView: View { isDisabled: false ) .padding(.horizontal, 25.adjustedW) - .padding(.bottom, 8.adjustedH) + Spacer() + .frame(height: 8.adjustedH) ScrollView(.vertical, showsIndicators: false) { HStack(alignment: .top,spacing: 4) { TypographyText("◎", style: .body3_r_12, color: .gray600) @@ -33,14 +34,15 @@ struct TreatmentFilterView: View { color: .gray600 ) .lineLimit(2) - } - Spacer() - } .frame(height: 34.adjustedH) .padding(.horizontal, 25.adjustedW) + + Spacer() + .frame(height: 20.adjustedH) + if viewModel.treatments.isEmpty { Spacer() .frame(height: 148.adjustedH) From dcf8b7bcf969b714a93e4721ae48d3d1472bf048 Mon Sep 17 00:00:00 2001 From: JaeSunEo Date: Fri, 23 Jan 2026 00:42:21 +0900 Subject: [PATCH 2/3] =?UTF-8?q?fix:=20#=20164=20=EB=B2=84=EA=B7=B8=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../NoTreatment/NoTreatmentViewModel.swift | 24 ++++++++++++++++--- .../Treatment/TreatmentViewModel.swift | 24 ++++++++++++++++--- 2 files changed, 42 insertions(+), 6 deletions(-) diff --git a/Cherrish-iOS/Cherrish-iOS/Presentation/Feature/Calendar/Treatment/ViewModel/NoTreatment/NoTreatmentViewModel.swift b/Cherrish-iOS/Cherrish-iOS/Presentation/Feature/Calendar/Treatment/ViewModel/NoTreatment/NoTreatmentViewModel.swift index 2bfabc21..57aa331e 100644 --- a/Cherrish-iOS/Cherrish-iOS/Presentation/Feature/Calendar/Treatment/ViewModel/NoTreatment/NoTreatmentViewModel.swift +++ b/Cherrish-iOS/Cherrish-iOS/Presentation/Feature/Calendar/Treatment/ViewModel/NoTreatment/NoTreatmentViewModel.swift @@ -113,6 +113,10 @@ final class NoTreatmentViewModel: ObservableObject{ } func isDateTextFieldNotEmpty() -> Bool { + guard let scheduledDate = calendarTreatmentFlowState.selectedDate else { + return false + } + guard !year.isEmpty, !month.isEmpty, !day.isEmpty else { Task { @MainActor in updateWarning(state: .none) @@ -133,14 +137,28 @@ final class NoTreatmentViewModel: ObservableObject{ return false } + let today = Calendar.current.startOfDay(for: Date()) + if date < today { - updateWarning(state: .pastDate) - return false + if date < scheduledDate { + updateWarning(state: .pastDate) + return false + } + + } else { + if date < scheduledDate { + if date < today { + updateWarning(state: .pastDate) + } + updateWarning(state: .beforeProcedureDate) + return false + } } - + updateWarning(state: .none) return true + } diff --git a/Cherrish-iOS/Cherrish-iOS/Presentation/Feature/Calendar/Treatment/ViewModel/Treatment/TreatmentViewModel.swift b/Cherrish-iOS/Cherrish-iOS/Presentation/Feature/Calendar/Treatment/ViewModel/Treatment/TreatmentViewModel.swift index 2c5cc556..14af68ac 100644 --- a/Cherrish-iOS/Cherrish-iOS/Presentation/Feature/Calendar/Treatment/ViewModel/Treatment/TreatmentViewModel.swift +++ b/Cherrish-iOS/Cherrish-iOS/Presentation/Feature/Calendar/Treatment/ViewModel/Treatment/TreatmentViewModel.swift @@ -104,6 +104,10 @@ final class TreatmentViewModel: ObservableObject{ } func isDateTextFieldNotEmpty() -> Bool { + guard let scheduledDate = calendarTreatmentFlowState.selectedDate else { + return false + } + guard !year.isEmpty, !month.isEmpty, !day.isEmpty else { Task { @MainActor in updateWarning(state: .none) @@ -124,14 +128,28 @@ final class TreatmentViewModel: ObservableObject{ return false } + let today = Calendar.current.startOfDay(for: Date()) + if date < today { - updateWarning(state: .pastDate) - return false + if date < scheduledDate { + updateWarning(state: .pastDate) + return false + } + + } else { + if date < scheduledDate { + if date < today { + updateWarning(state: .pastDate) + } + updateWarning(state: .beforeProcedureDate) + return false + } } - + updateWarning(state: .none) return true + } From 5c857dfc59c23a3da24955966eb65ee75078bff3 Mon Sep 17 00:00:00 2001 From: JaeSunEo Date: Fri, 23 Jan 2026 05:13:09 +0900 Subject: [PATCH 3/3] =?UTF-8?q?fix:=20#164=20=EC=9A=94=EA=B5=AC=EC=82=AC?= =?UTF-8?q?=ED=95=AD=20=EB=B0=98=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../NoTreatment/NoTreatmentFilterView.swift | 25 +++++++++++++++---- .../View/Treatment/TreatmentFilterView.swift | 20 ++++++++++++--- 2 files changed, 37 insertions(+), 8 deletions(-) diff --git a/Cherrish-iOS/Cherrish-iOS/Presentation/Feature/Calendar/Treatment/View/NoTreatment/NoTreatmentFilterView.swift b/Cherrish-iOS/Cherrish-iOS/Presentation/Feature/Calendar/Treatment/View/NoTreatment/NoTreatmentFilterView.swift index 036cfffd..84fa5e28 100644 --- a/Cherrish-iOS/Cherrish-iOS/Presentation/Feature/Calendar/Treatment/View/NoTreatment/NoTreatmentFilterView.swift +++ b/Cherrish-iOS/Cherrish-iOS/Presentation/Feature/Calendar/Treatment/View/NoTreatment/NoTreatmentFilterView.swift @@ -10,6 +10,18 @@ import SwiftUI struct NoTreatmentFilterView: View { @ObservedObject var viewModel: NoTreatmentViewModel + + private let itemHeight: CGFloat = 34.adjustedH + private let spacing: CGFloat = 8.adjustedH + private let maxVisibleCount = 3 + + private var scrollViewHeight: CGFloat { + let count = min(viewModel.selectedTreatments.count, maxVisibleCount) + let contentHeight = CGFloat(count) * itemHeight + CGFloat(max(count - 1, 0)) * spacing + return contentHeight + 24.adjustedH + 40.adjustedH + } + + var body: some View { VStack(spacing: 0) { TitleHeaderView(title: viewModel.selectedCategory?.title ?? "") @@ -29,16 +41,19 @@ struct NoTreatmentFilterView: View { } else { viewModel.addTreatment(treatment) - } + } } ) .padding(.horizontal, 25.adjustedW) } Spacer() - .frame(height: 198.adjustedH) + .frame( + height: viewModel.selectedTreatments.isEmpty ? + 24.adjustedH : scrollViewHeight.adjustedH + 24.adjustedH + ) } - + } .task { await viewModel.fetchNoTreatments() @@ -58,7 +73,7 @@ private struct TitleHeaderView: View { TypographyText("관련 시술 리스트", style: .title1_sb_18, color: .gray1000) .frame(height: 27.adjustedH) Spacer() - + } @@ -93,6 +108,6 @@ private struct TitleHeaderView: View { .gray500() } .frame(height: 105.adjustedH ) - + } } diff --git a/Cherrish-iOS/Cherrish-iOS/Presentation/Feature/Calendar/Treatment/View/Treatment/TreatmentFilterView.swift b/Cherrish-iOS/Cherrish-iOS/Presentation/Feature/Calendar/Treatment/View/Treatment/TreatmentFilterView.swift index 1a1338cb..093b052b 100644 --- a/Cherrish-iOS/Cherrish-iOS/Presentation/Feature/Calendar/Treatment/View/Treatment/TreatmentFilterView.swift +++ b/Cherrish-iOS/Cherrish-iOS/Presentation/Feature/Calendar/Treatment/View/Treatment/TreatmentFilterView.swift @@ -9,13 +9,24 @@ import SwiftUI struct TreatmentFilterView: View { @ObservedObject var viewModel: TreatmentViewModel + + private let itemHeight: CGFloat = 34.adjustedH + private let spacing: CGFloat = 8.adjustedH + private let maxVisibleCount = 3 + + private var scrollViewHeight: CGFloat { + let count = min(viewModel.selectedTreatments.count, maxVisibleCount) + let contentHeight = CGFloat(count) * itemHeight + CGFloat(max(count - 1, 0)) * spacing + return contentHeight + 24.adjustedH + 40.adjustedH + } + var body: some View { VStack(spacing: 0) { TreatmentSearchBarTextField( text: $viewModel.searchText, onTap: { Task { - try await viewModel.fetchTreatments() + try await viewModel.fetchTreatments() } }, isDisabled: false @@ -64,7 +75,10 @@ struct TreatmentFilterView: View { .padding(.horizontal, 24.adjustedW) } Spacer() - .frame(height: 198.adjustedH) + .frame( + height: viewModel.selectedTreatments.isEmpty ? + 24.adjustedH : scrollViewHeight.adjustedH + 24.adjustedH + ) } } @@ -73,7 +87,7 @@ struct TreatmentFilterView: View { try await viewModel.fetchTreatments() } } - + } }