@@ -13,16 +13,8 @@ struct SearchStore {
1313 var error : String ? = nil
1414 var currentLocation : CLLocationCoordinate2D ?
1515 var paginationState : PaginationState = . init( )
16- var isFilterSheetPresented : Bool = false
1716
18- // Filter states
19- var selectedBudget : Int = 0
20- var hasWiFi : Bool = false
21- var hasPrivateRoom : Bool = false
22- var isNonSmoking : Bool = false
23- var hasParking : Bool = false
24- var selectedCuisine : Int = 0
25- var selectedDistance : Int = 3
17+ var filterState : SearchFilterStore . State = . init( )
2618
2719 static func == ( lhs: State , rhs: State ) -> Bool {
2820 lhs. shops == rhs. shops &&
@@ -31,14 +23,7 @@ struct SearchStore {
3123 lhs. currentLocation? . latitude == rhs. currentLocation? . latitude &&
3224 lhs. currentLocation? . longitude == rhs. currentLocation? . longitude &&
3325 lhs. paginationState == rhs. paginationState &&
34- lhs. isFilterSheetPresented == rhs. isFilterSheetPresented &&
35- lhs. selectedBudget == rhs. selectedBudget &&
36- lhs. hasWiFi == rhs. hasWiFi &&
37- lhs. hasPrivateRoom == rhs. hasPrivateRoom &&
38- lhs. isNonSmoking == rhs. isNonSmoking &&
39- lhs. hasParking == rhs. hasParking &&
40- lhs. selectedCuisine == rhs. selectedCuisine &&
41- lhs. selectedDistance == rhs. selectedDistance
26+ lhs. filterState == rhs. filterState
4227 }
4328 }
4429
@@ -50,17 +35,7 @@ struct SearchStore {
5035 case handleError( Error )
5136 case loadMore
5237 case updatePaginationState( PaginationState )
53-
54- // Filter actions
55- case toggleFilterSheet
56- case updateBudget( Int )
57- case toggleWiFi
58- case togglePrivateRoom
59- case toggleNonSmoking
60- case toggleParking
61- case updateCuisine( Int )
62- case updateDistance( Int )
63- case resetFilters
38+ case updateFilterState( SearchFilterStore . State )
6439 }
6540
6641 var body : some ReducerOf < Self > {
@@ -97,16 +72,16 @@ struct SearchStore {
9772 let request = ShopSearchRequestDTO (
9873 lat: location. latitude,
9974 lng: location. longitude,
100- range: state. selectedDistance,
75+ range: state. filterState . selectedDistance,
10176 count: nil ,
10277 keyword: text,
103- genre: state. selectedCuisine > 0 ? String ( state. selectedCuisine) : nil ,
78+ genre: state. filterState . selectedCuisine > 0 ? String ( state. filterState . selectedCuisine) : nil ,
10479 order: nil ,
10580 start: nil ,
106- budget: state. selectedBudget > 0 ? String ( state. selectedBudget) : nil ,
107- privateRoom: state. hasPrivateRoom ? true : nil ,
108- wifi: state. hasWiFi ? true : nil ,
109- nonSmoking: state. isNonSmoking ? true : nil ,
81+ budget: state. filterState . selectedBudget > 0 ? String ( state. filterState . selectedBudget) : nil ,
82+ privateRoom: state. filterState . hasPrivateRoom ? true : nil ,
83+ wifi: state. filterState . hasWiFi ? true : nil ,
84+ nonSmoking: state. filterState . isNonSmoking ? true : nil ,
11085 coupon: nil ,
11186 openNow: nil
11287 )
@@ -135,16 +110,16 @@ struct SearchStore {
135110 let request = ShopSearchRequestDTO (
136111 lat: location. latitude,
137112 lng: location. longitude,
138- range: state. selectedDistance,
113+ range: state. filterState . selectedDistance,
139114 count: nil ,
140115 keyword: state. searchText,
141- genre: state. selectedCuisine > 0 ? String ( state. selectedCuisine) : nil ,
116+ genre: state. filterState . selectedCuisine > 0 ? String ( state. filterState . selectedCuisine) : nil ,
142117 order: nil ,
143118 start: nil ,
144- budget: state. selectedBudget > 0 ? String ( state. selectedBudget) : nil ,
145- privateRoom: state. hasPrivateRoom ? true : nil ,
146- wifi: state. hasWiFi ? true : nil ,
147- nonSmoking: state. isNonSmoking ? true : nil ,
119+ budget: state. filterState . selectedBudget > 0 ? String ( state. filterState . selectedBudget) : nil ,
120+ privateRoom: state. filterState . hasPrivateRoom ? true : nil ,
121+ wifi: state. filterState . hasWiFi ? true : nil ,
122+ nonSmoking: state. filterState . isNonSmoking ? true : nil ,
148123 coupon: nil ,
149124 openNow: nil
150125 )
@@ -173,48 +148,12 @@ struct SearchStore {
173148 case let . updatePaginationState( paginationState) :
174149 state. paginationState = paginationState
175150 return . none
176-
177- case . toggleFilterSheet:
178- state. isFilterSheetPresented. toggle ( )
179- return . none
180-
181- case let . updateBudget( budget) :
182- state. selectedBudget = budget
183- return . none
184-
185- case . toggleWiFi:
186- state. hasWiFi. toggle ( )
187- return . none
188-
189- case . togglePrivateRoom:
190- state. hasPrivateRoom. toggle ( )
191- return . none
192-
193- case . toggleNonSmoking:
194- state. isNonSmoking. toggle ( )
195- return . none
196-
197- case . toggleParking:
198- state. hasParking. toggle ( )
199- return . none
200-
201- case let . updateCuisine( cuisine) :
202- state. selectedCuisine = cuisine
203- return . none
204-
205- case let . updateDistance( distance) :
206- state. selectedDistance = distance
207- return . none
208-
209- case . resetFilters:
210- state. selectedBudget = 0
211- state. hasWiFi = false
212- state. hasPrivateRoom = false
213- state. isNonSmoking = false
214- state. hasParking = false
215- state. selectedCuisine = 0
216- state. selectedDistance = 3
217- return . none
151+
152+ case let . updateFilterState( filterState) :
153+ state. filterState = filterState
154+ return . run { [ state] send in
155+ await send ( . search( state. searchText) )
156+ }
218157 }
219158 }
220159 }
0 commit comments