@@ -43,14 +43,13 @@ struct CafeMapCore: ReducerProtocol {
43
43
44
44
// MARK: NaverMapView
45
45
var currentCameraPosition = CLLocationCoordinate2D ( latitude: 37.4971 , longitude: 127.0287 )
46
- var cafeMarkerList : [ Cafe ] = [ ]
47
- var cafeList : [ Cafe ] = [ ]
46
+ var cafes : [ Cafe ] = [ ]
48
47
var shouldClearMarkers : Bool = false
49
48
let bottomFloatingButtons = BottomFloatingButton . allCases
50
- var isMovingToCurrentPosition = false
49
+ var isUpdatingCameraPosition = false
51
50
var isUpdatingMarkers = false
52
51
var shouldUpdateMarkers : Bool {
53
- return cafeMarkerList . isNotEmpty && isUpdatingMarkers
52
+ return cafes . isNotEmpty && isUpdatingMarkers
54
53
}
55
54
var isUpdatingBookmarkState = false
56
55
var shouldShowRefreshButtonView : Bool {
@@ -83,11 +82,12 @@ struct CafeMapCore: ReducerProtocol {
83
82
case cleardMarkers
84
83
case refreshButtonTapped
85
84
case updateCameraUpdateReason( NaverMapCameraUpdateReason )
86
- case cameraPositionMoved
85
+ case cameraPositionMoved( newCameraPosition : CLLocationCoordinate2D )
87
86
88
87
// MARK: Search
89
88
case infiniteScrollSearchPlaceResponse( TaskResult < CafeSearchResponse > )
90
89
case requestSearchPlaceResponse( TaskResult < CafeSearchResponse > , String )
90
+ case requestWaypointSearchPlaceResponse( TaskResult < CafeSearchResponse > )
91
91
92
92
// MARK: Temporary
93
93
case pushToSearchDetailForTest( cafeId: Int )
@@ -142,6 +142,26 @@ struct CafeMapCore: ReducerProtocol {
142
142
return . none
143
143
144
144
// MARK: Sub-Core Actions
145
+ case . cafeSearchAction( . searchPlacesByWaypoint( let waypoint) ) :
146
+ state. cafeSearchListState. title = waypoint. name
147
+ state. currentCameraPosition = CLLocationCoordinate2D (
148
+ latitude: waypoint. latitude, longitude: waypoint. longitude
149
+ )
150
+ state. cafeSearchState. searchTextSnapshot = " "
151
+ state. cafeSearchState. searchCameraPositionSnapshot = state. currentCameraPosition
152
+ return . run { send in
153
+ let result = await TaskResult {
154
+ let cafeRequest = SearchPlaceRequestValue (
155
+ searchText: " " , userLatitude: waypoint. latitude, userLongitude: waypoint. longitude,
156
+ maximumSearchDistance: 2000 , isOpened: nil , hasCommunalTable: nil ,
157
+ filters: nil , pageSize: 10 , pageableKey: nil
158
+ )
159
+ let cafeListData = try await placeAPIClient. searchPlaces ( by: cafeRequest)
160
+ return cafeListData
161
+ }
162
+ await send ( . requestWaypointSearchPlaceResponse( result) )
163
+ }
164
+
145
165
case . cafeSearchAction( . dismiss) :
146
166
switch state. cafeSearchState. previousViewType {
147
167
case . mainMapView:
@@ -162,7 +182,7 @@ struct CafeMapCore: ReducerProtocol {
162
182
case . cafeSearchListAction( . dismiss) :
163
183
return . send( . resetResult( . dismissSearchResultView) )
164
184
165
- case . cafeSearchAction( . requestSearchPlace ( let searchText) ) :
185
+ case . cafeSearchAction( . searchPlacesByRequestValue ( let searchText) ) :
166
186
let title = searchText
167
187
let cameraPosition = state. currentCameraPosition
168
188
let isOpened = state. cafeFilterInformation. isOpened
@@ -183,7 +203,7 @@ struct CafeMapCore: ReducerProtocol {
183
203
pageSize: 10 ,
184
204
pageableKey: nil
185
205
)
186
- let cafeSearchResponose = try await placeAPIClient. searchPlaces ( requestValue : cafeRequest)
206
+ let cafeSearchResponose = try await placeAPIClient. searchPlaces ( by : cafeRequest)
187
207
return cafeSearchResponose
188
208
}
189
209
await send ( . requestSearchPlaceResponse( result, title) )
@@ -210,7 +230,7 @@ struct CafeMapCore: ReducerProtocol {
210
230
pageSize: pageSize,
211
231
pageableKey: PageableKey ( lastCafeDistance: lastDistance)
212
232
)
213
- let cafeSearchResponse = try await placeAPIClient. searchPlaces ( requestValue : cafeRequest)
233
+ let cafeSearchResponse = try await placeAPIClient. searchPlaces ( by : cafeRequest)
214
234
return cafeSearchResponse
215
235
}
216
236
await send ( . infiniteScrollSearchPlaceResponse( result) )
@@ -224,7 +244,7 @@ struct CafeMapCore: ReducerProtocol {
224
244
case . bottomFloatingButtonTapped( let buttonType) :
225
245
switch buttonType {
226
246
case . currentLocationButton:
227
- state. isMovingToCurrentPosition = true
247
+ state. isUpdatingCameraPosition = true
228
248
return . send( . updateCurrentLocation)
229
249
case . bookmarkButton:
230
250
return . none
@@ -254,7 +274,7 @@ struct CafeMapCore: ReducerProtocol {
254
274
pageableKey: nil
255
275
)
256
276
257
- let cafeListData = try await placeAPIClient. searchPlaces ( requestValue : cafeRequest)
277
+ let cafeListData = try await placeAPIClient. searchPlaces ( by : cafeRequest)
258
278
return cafeListData. cafes
259
279
}
260
280
await send ( . cafeListResponse( result) )
@@ -263,7 +283,7 @@ struct CafeMapCore: ReducerProtocol {
263
283
case . cafeListResponse( let result) :
264
284
switch result {
265
285
case . success( let cafeList) :
266
- state. cafeMarkerList = cafeList
286
+ state. cafes = cafeList
267
287
return . none
268
288
case . failure( let error) :
269
289
debugPrint ( error)
@@ -281,7 +301,7 @@ struct CafeMapCore: ReducerProtocol {
281
301
return . none
282
302
283
303
case . movedToCurrentPosition:
284
- state. isMovingToCurrentPosition = false
304
+ state. isUpdatingCameraPosition = false
285
305
return . none
286
306
287
307
case . markersUpdated:
@@ -301,18 +321,19 @@ struct CafeMapCore: ReducerProtocol {
301
321
state. cameraUpdateReason = updateReason
302
322
return . none
303
323
304
- case . cameraPositionMoved:
324
+ case . cameraPositionMoved( let newCameraPosition) :
325
+ state. currentCameraPosition = newCameraPosition
305
326
state. isMovingCameraPosition = false
306
327
return . none
307
328
329
+ // MARK: Search
308
330
case . requestSearchPlaceResponse( let result, let title) :
309
331
switch result {
310
332
case . success( let searchResponse) :
311
333
if searchResponse. cafes. isEmpty {
312
334
return . send( . resetResult( . searchResultIsEmpty) )
313
335
}
314
- state. cafeList = searchResponse. cafes
315
- state. cafeMarkerList = searchResponse. cafes
336
+ state. cafes = searchResponse. cafes
316
337
state. isUpdatingMarkers = true
317
338
state. cafeSearchListState. cafeList = searchResponse. cafes
318
339
state. cafeSearchListState. hasNext = searchResponse. hasNext
@@ -323,7 +344,7 @@ struct CafeMapCore: ReducerProtocol {
323
344
latitude: cafe. latitude,
324
345
longitude: cafe. longitude
325
346
)
326
- state. isMovingToCurrentPosition = true
347
+ state. isUpdatingCameraPosition = true
327
348
state. cafeSearchListState. title = title
328
349
state. displayViewType = . searchResultView
329
350
state. cafeSearchState. previousViewType = . searchResultView
@@ -344,7 +365,7 @@ struct CafeMapCore: ReducerProtocol {
344
365
}
345
366
if removedDuplicationCafes. isNotEmpty {
346
367
state. cafeSearchListState. cafeList += cafeSearchResponse. cafes
347
- state. cafeMarkerList += cafeSearchResponse. cafes
368
+ state. cafes += cafeSearchResponse. cafes
348
369
state. isUpdatingMarkers = true
349
370
}
350
371
return . none
@@ -353,10 +374,30 @@ struct CafeMapCore: ReducerProtocol {
353
374
return . none
354
375
}
355
376
377
+ case . requestWaypointSearchPlaceResponse( let result) :
378
+ switch result {
379
+ case . success( let searchResponse) :
380
+ state. cafeSearchListState. hasNext = searchResponse. hasNext
381
+ if searchResponse. cafes. isEmpty {
382
+ return . send( . resetResult( . searchResultIsEmpty) )
383
+ }
384
+ state. cafes = searchResponse. cafes
385
+ state. selectedCafe = nil
386
+ state. isUpdatingMarkers = true
387
+ state. cafeSearchListState. cafeList = searchResponse. cafes
388
+ state. cafeSearchListState. hasNext = searchResponse. hasNext
389
+ state. isUpdatingCameraPosition = true
390
+ state. displayViewType = . searchResultView
391
+ state. cafeSearchState. previousViewType = . searchResultView
392
+ return . send( . cafeSearchAction( . dismiss) )
393
+ case . failure( let error) :
394
+ debugPrint ( error)
395
+ return . none
396
+ }
397
+
356
398
// MARK: Common
357
399
case . resetResult( let resetState) :
358
- state. cafeList = [ ]
359
- state. cafeMarkerList = [ ]
400
+ state. cafes = [ ]
360
401
state. cafeSearchListState. cafeList = [ ]
361
402
state. cafeSearchListState. hasNext = nil
362
403
state. cameraUpdateReason = . changedByDeveloper
0 commit comments