@@ -4,6 +4,7 @@ import { useSearchParams } from "next/navigation";
44import { useEffect } from "react" ;
55import { type Bounds , type Center , useStoreListQuery } from "@/features/map/lib" ;
66import { useStoreSearch } from "@/features/search" ;
7+ import { useToast } from "@/shared/lib/hooks" ;
78import { useFilterStore } from "@/shared/store" ;
89
910interface UseStoreListDataParams {
@@ -13,37 +14,47 @@ interface UseStoreListDataParams {
1314
1415/**
1516 * 지도에 표시할 가게 리스트 데이터 관리
16- * 검색 모드와 일반 모드 통합 관리
17+ *
18+ * 두 가지 모드 지원:
19+ * 1. 기본 모드: 지도 영역 기반 가게 목록 조회
20+ * 2. 검색 모드: 검색어 기반 가게 목록 조회
1721 */
1822export function useStoreListData ( { bounds, center } : UseStoreListDataParams ) {
1923 const searchParams = useSearchParams ( ) ;
20- const query = searchParams . get ( "query" ) ;
24+ const searchQuery = searchParams . get ( "query" ) ;
25+ const isSearchMode = ! ! searchQuery ;
2126
2227 const { filters } = useFilterStore ( ) ;
2328
24- // 일반 모드: 지도 기반 스토어 목록
25- const { storeList : baseStoreList , isFetching : isBaseFetching } = useStoreListQuery ( {
29+ const { showToast } = useToast ( ) ;
30+
31+ // 기본 모드: 지도 기반 스토어 목록
32+ const { storeList : mapStoreList , isFetching : isMapFetching } = useStoreListQuery ( {
2633 filters,
2734 center,
2835 bounds,
2936 limit : 30 ,
30- enabled : ! query ,
37+ enabled : ! isSearchMode ,
3138 } ) ;
3239
3340 // 검색 모드: 검색어 기반 스토어 목록
3441 const { searchStoreList, isPending, searchStores } = useStoreSearch ( ) ;
3542
3643 useEffect ( ( ) => {
37- if ( query ) {
38- searchStores ( { query } ) ;
44+ if ( isSearchMode ) {
45+ searchStores ( { query : searchQuery } ) ;
3946 }
40- } , [ query , searchStores ] ) ;
47+ } , [ isSearchMode , searchQuery , searchStores ] ) ;
4148
42- const isSearchMode = ! ! query ;
49+ useEffect ( ( ) => {
50+ if ( ! isSearchMode && ! isMapFetching && mapStoreList . length === 0 ) {
51+ showToast ( { message : "아직 이 지역은 준비 중이에요." } ) ;
52+ }
53+ } , [ isSearchMode , isMapFetching , mapStoreList . length , showToast ] ) ;
4354
4455 return {
45- storeList : isSearchMode ? searchStoreList : baseStoreList ,
46- isFetching : isSearchMode ? isPending : isBaseFetching ,
56+ storeList : isSearchMode ? searchStoreList : mapStoreList ,
57+ isFetching : isSearchMode ? isPending : isMapFetching ,
4758 isSearchMode,
4859 } ;
4960}
0 commit comments