diff --git a/package-kuring/Sources/Caches/Dependency/RecentSearch.swift b/package-kuring/Sources/Caches/Dependency/RecentSearch.swift index fdfdebf1..8b35b3fc 100644 --- a/package-kuring/Sources/Caches/Dependency/RecentSearch.swift +++ b/package-kuring/Sources/Caches/Dependency/RecentSearch.swift @@ -10,6 +10,7 @@ import Dependencies public struct RecentSearch { public var add: (_ keyword: String) -> Void public var remove: (_ keyword: String) -> Void + public var removeAll: () -> Void public var getAll: () -> [String] /// 최근 검색어 @@ -29,8 +30,12 @@ extension RecentSearch { keywords.removeAll { $0 == keyword } Self.recentKeywords = keywords + }, removeAll: { + Self.recentKeywords = [] + }, getAll: { Self.recentKeywords + } ) } diff --git a/package-kuring/Sources/Features/SearchFeatures/Search.swift b/package-kuring/Sources/Features/SearchFeatures/Search.swift index fb34e58c..1583c6aa 100644 --- a/package-kuring/Sources/Features/SearchFeatures/Search.swift +++ b/package-kuring/Sources/Features/SearchFeatures/Search.swift @@ -3,8 +3,10 @@ // See the 'License.txt' file for licensing information. // +import Caches import Models import Networks +import Dependencies import ComposableArchitecture @Reducer @@ -65,8 +67,10 @@ public struct SearchFeature { searchInfo: SearchInfo = .init(), focus: Field? = .search ) { + @Dependency(\.recentSearch) var recentSearch + self.staffDetail = staffDetail - self.recents = recents + self.recents = recentSearch.getAll() self.resultNotices = resultNotices self.resultStaffs = resultStaffs self.searchInfo = searchInfo @@ -125,6 +129,7 @@ public struct SearchFeature { } @Dependency(\.kuringLink) var kuringLink + @Dependency(\.recentSearch) var recentSearch public var body: some ReducerOf { BindingReducer() @@ -145,6 +150,8 @@ public struct SearchFeature { case .deleteAllRecentsButtonTapped: state.recents.removeAll() + recentSearch.removeAll() + return .none case .clearKeywordButtonTapped: @@ -159,6 +166,8 @@ public struct SearchFeature { // 최근 검색어 추가 if !state.recents.contains(state.searchInfo.text) { // 중복체크 state.recents.append(state.searchInfo.text) + + recentSearch.add(state.searchInfo.text) } state.searchInfo.searchPhase = .searching diff --git a/package-kuring/Sources/UIKit/SearchUI/SearchView.swift b/package-kuring/Sources/UIKit/SearchUI/SearchView.swift index a3c17506..c9328525 100644 --- a/package-kuring/Sources/UIKit/SearchUI/SearchView.swift +++ b/package-kuring/Sources/UIKit/SearchUI/SearchView.swift @@ -129,13 +129,13 @@ public struct SearchView: View { Button { store.send(.selectSearchType(.notice)) } label: { - SegmentView("공지", isSelect: store.searchInfo.searchType == .notice) + segmentView("공지", isSelect: store.searchInfo.searchType == .notice) } Button { store.send(.selectSearchType(.staff)) } label: { - SegmentView("교직원", isSelect: store.searchInfo.searchType == .staff) + segmentView("교직원", isSelect: store.searchInfo.searchType == .staff) } } .padding(5) @@ -224,7 +224,7 @@ public struct SearchView: View { } } - private func SegmentView(_ title: String, isSelect: Bool) -> some View { + private func segmentView(_ title: String, isSelect: Bool) -> some View { RoundedRectangle(cornerRadius: 10) .foregroundStyle(isSelect ? Color.Kuring.bg : .clear) .shadow( @@ -257,7 +257,6 @@ public struct SearchView: View { public init(store: StoreOf) { self.store = store -// UITableView } }