Skip to content

Commit 120e41b

Browse files
committed
[fix] #196 검색 ui 변경사항 반영
1 parent 5303656 commit 120e41b

File tree

3 files changed

+77
-92
lines changed

3 files changed

+77
-92
lines changed

Projects/DSKit/Sources/Components/PokitCalendar.swift

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,7 @@ public struct PokitCalendar: View {
181181
let isSelected = isStartDate || isEndDate
182182
let backgoundColor: Color = .pokit(.bg(.brand)).opacity(isSelected ? 1 : isContains ? 0.2 : 0)
183183
let day = calendar.component(.day, from: date)
184+
let isFuture = date > .now
184185

185186
Button {
186187
dayButtonTapped(
@@ -192,13 +193,14 @@ public struct PokitCalendar: View {
192193
} label: {
193194
Text("\(day)")
194195
.pokitFont(.b1(.m))
195-
.foregroundStyle(isCurrentMonth ? textColor : .pokit(.text(.tertiary)))
196+
.foregroundStyle(isCurrentMonth && !isFuture ? textColor : .pokit(.text(.tertiary)))
196197
.frame(width: width, height: width)
197198
.background {
198199
RoundedRectangle(cornerRadius: 8, style: .continuous)
199200
.fill(backgoundColor)
200201
}
201202
}
203+
.disabled(isFuture)
202204
}
203205

204206
private func dates(_ date: Date) -> [Date] {

Projects/Feature/FeatureSetting/Sources/Search/PokitSearchFeature.swift

Lines changed: 8 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -96,8 +96,8 @@ public struct PokitSearchFeature {
9696
case 카테고리_버튼_눌렀을때
9797
case 모아보기_버튼_눌렀을때
9898
case 기간_버튼_눌렀을때
99-
case 카테고리_태그_눌렀을때(category: BaseCategoryItem)
100-
case 즐겨찾기_태그_눌렀을때
99+
case 카테고리_태그_눌렀을때
100+
case 컨텐츠_타입_태그_눌렀을때
101101
case 안읽음_태그_눌렀을때
102102
case 전체_삭제_버튼_눌렀을때
103103
case 정렬_버튼_눌렀을때
@@ -236,17 +236,7 @@ private extension PokitSearchFeature {
236236
return .send(.inner(.filterBottomSheet(filterType: .contentType)))
237237

238238
case .기간_버튼_눌렀을때:
239-
guard
240-
state.domain.condition.startDate != nil &&
241-
state.domain.condition.endDate != nil
242-
/// - 선택된 기간이 없을 경우
243-
else { return .send(.inner(.filterBottomSheet(filterType: .date))) }
244-
state.domain.condition.startDate = nil
245-
state.domain.condition.endDate = nil
246-
return .run { send in
247-
await send(.inner(.기간_업데이트(startDate: nil, endDate: nil)))
248-
await send(.inner(.페이징_초기화), animation: .pokitDissolve)
249-
}
239+
return .send(.inner(.filterBottomSheet(filterType: .date)))
250240

251241
case .카테고리_버튼_눌렀을때:
252242
return .send(.inner(.filterBottomSheet(filterType: .pokit)))
@@ -287,20 +277,14 @@ private extension PokitSearchFeature {
287277

288278
return .merge(effectBox)
289279

290-
case let .카테고리_태그_눌렀을때(category):
291-
state.categoryFilter.remove(category)
292-
return .run { send in
293-
await send(.inner(.카테고리_ID_목록_업데이트))
294-
await send(.inner(.페이징_초기화))
295-
}
280+
case .카테고리_태그_눌렀을때:
281+
return .send(.inner(.filterBottomSheet(filterType: .pokit)))
296282

297-
case .즐겨찾기_태그_눌렀을때:
298-
state.domain.condition.favorites = false
299-
return .send(.inner(.페이징_초기화))
283+
case .컨텐츠_타입_태그_눌렀을때:
284+
return .send(.inner(.filterBottomSheet(filterType: .contentType)))
300285

301286
case .안읽음_태그_눌렀을때:
302-
state.domain.condition.isRead = false
303-
return .send(.inner(.페이징_초기화))
287+
return .send(.inner(.filterBottomSheet(filterType: .contentType)))
304288

305289
case .로딩중일때:
306290
return .send(.async(.컨텐츠_검색_페이징_API))

Projects/Feature/FeatureSetting/Sources/Search/PokitSearchView.swift

Lines changed: 66 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -111,28 +111,31 @@ private extension PokitSearchView {
111111
.padding(.horizontal, 20)
112112
}
113113

114+
@ViewBuilder
114115
var recentSearch: some View {
115-
VStack(spacing: 20) {
116-
recentSearchTitle
117-
118-
if store.isSearching {
119-
filterToolbar
120-
} else if store.isAutoSaveSearch {
121-
if store.recentSearchTexts.isEmpty {
122-
Text("검색 내역이 없습니다.")
116+
if store.isSearching {
117+
filterToolbar
118+
} else {
119+
VStack(spacing: 20) {
120+
recentSearchTitle
121+
122+
if store.isAutoSaveSearch {
123+
if store.recentSearchTexts.isEmpty {
124+
Text("검색 내역이 없습니다.")
125+
.pokitFont(.b3(.r))
126+
.foregroundStyle(.pokit(.text(.tertiary)))
127+
.pokitBlurReplaceTransition(.pokitDissolve)
128+
.padding(.vertical, 5)
129+
} else {
130+
recentSearchList
131+
}
132+
} else {
133+
Text("최근 검색 저장 기능이 꺼져있습니다.")
123134
.pokitFont(.b3(.r))
124135
.foregroundStyle(.pokit(.text(.tertiary)))
125136
.pokitBlurReplaceTransition(.pokitDissolve)
126137
.padding(.vertical, 5)
127-
} else {
128-
recentSearchList
129138
}
130-
} else {
131-
Text("최근 검색 저장 기능이 꺼져있습니다.")
132-
.pokitFont(.b3(.r))
133-
.foregroundStyle(.pokit(.text(.tertiary)))
134-
.pokitBlurReplaceTransition(.pokitDissolve)
135-
.padding(.vertical, 5)
136139
}
137140
}
138141
}
@@ -195,68 +198,64 @@ private extension PokitSearchView {
195198
)
196199
}
197200

201+
@ViewBuilder
198202
var categoryFilterButton: some View {
199-
Group {
200-
if store.categoryFilter.isEmpty {
201-
PokitIconRChip(
202-
"포킷",
203-
icon: .icon(.arrowDown),
204-
state: .default(.primary),
205-
size: .small,
206-
action: { send(.카테고리_버튼_눌렀을때) }
207-
)
208-
} else {
209-
ForEach(store.categoryFilter) { category in
210-
PokitIconRChip(
211-
category.categoryName,
212-
state: .stroke(.primary),
213-
size: .small,
214-
action: { send(.카테고리_태그_눌렀을때(category: category), animation: .pokitSpring) }
215-
)
216-
.pokitBlurReplaceTransition(.pokitDissolve)
217-
}
218-
}
203+
if store.categoryFilter.isEmpty {
204+
PokitIconRChip(
205+
"포킷",
206+
icon: .icon(.arrowDown),
207+
state: .default(.primary),
208+
size: .small,
209+
action: { send(.카테고리_버튼_눌렀을때) }
210+
)
211+
} else {
212+
let firstName = store.categoryFilter.first?.categoryName ?? ""
213+
let text = store.categoryFilter.count == 1
214+
? firstName
215+
: firstName + "\(store.categoryFilter.count - 1)"
216+
217+
PokitIconRChip(
218+
text,
219+
icon: .icon(.arrowDown),
220+
state: .stroke(.primary),
221+
size: .small,
222+
action: { send(.카테고리_태그_눌렀을때, animation: .pokitSpring) }
223+
)
224+
.pokitBlurReplaceTransition(.pokitDissolve)
219225
}
220226
}
221227

228+
@ViewBuilder
222229
var contentTypeFilterButton: some View {
223-
Group {
224-
if !store.favoriteFilter && !store.unreadFilter {
225-
PokitIconRChip(
226-
"모아보기",
227-
icon: .icon(.arrowDown),
228-
state: .default(.primary),
229-
size: .small,
230-
action: { send(.모아보기_버튼_눌렀을때) }
231-
)
232-
} else {
233-
if store.favoriteFilter {
234-
PokitIconRChip(
235-
"즐겨찾기",
236-
state: .stroke(.primary),
237-
size: .small,
238-
action: { send(.즐겨찾기_태그_눌렀을때, animation: .pokitSpring) }
239-
)
240-
.pokitBlurReplaceTransition(.pokitDissolve)
241-
}
242-
243-
if store.unreadFilter {
244-
PokitIconRChip(
245-
"안읽음",
246-
state: .stroke(.primary),
247-
size: .small,
248-
action: { send(.안읽음_태그_눌렀을때, animation: .pokitSpring) }
249-
)
250-
.pokitBlurReplaceTransition(.pokitDissolve)
251-
}
252-
}
230+
if !store.favoriteFilter && !store.unreadFilter {
231+
PokitIconRChip(
232+
"모아보기",
233+
icon: .icon(.arrowDown),
234+
state: .default(.primary),
235+
size: .small,
236+
action: { send(.모아보기_버튼_눌렀을때) }
237+
)
238+
} else {
239+
let contentTypes = [
240+
store.favoriteFilter ? "즐겨찾기" : nil,
241+
store.unreadFilter ? "안읽음" : nil
242+
].compactMap(\.self).joined(separator: ", ")
243+
244+
PokitIconRChip(
245+
contentTypes,
246+
icon: .icon(.arrowDown),
247+
state: .stroke(.primary),
248+
size: .small,
249+
action: { send(.컨텐츠_타입_태그_눌렀을때, animation: .pokitSpring) }
250+
)
251+
.pokitBlurReplaceTransition(.pokitDissolve)
253252
}
254253
}
255254

256255
var dateFilterButton: some View {
257256
PokitIconRChip(
258257
store.dateFilterText,
259-
icon: store.dateFilterText == "기간" ? .icon(.arrowDown) : .icon(.x),
258+
icon: .icon(.arrowDown),
260259
state: store.dateFilterText == "기간" ? .default(.primary) : .stroke(.primary),
261260
size: .small,
262261
action: { send(.기간_버튼_눌렀을때, animation: .pokitSpring) }

0 commit comments

Comments
 (0)