import { AUTH_USER_ID, CLAIM_NAME } from "@/src/shared/config"; import { fetchType, getFetch } from "@/components/ui/api"; import { DEV_URL_FO } from "@/components/ui/config"; import { getCookie } from "@common/components/lib/cookie"; import type { FacilityInfo, SubsInfo } from "./type"; const tokenId = getCookie(AUTH_USER_ID); const Authorization = getCookie(CLAIM_NAME); const checkWrRegList = async () => { const wrRegList = await getFetch(fetchType.WR, `/reuseFc/pubFc`); return wrRegList; }; const getRuseFclt = async ( page: string, sggOrCity: string, searchTxt?: string ) => { const checkWrRegListRes = await checkWrRegList(); let url = `/prcsFclt/ruseInfo/${page ? page : 1}/5/A/${sggOrCity ? sggOrCity : "0"}/0/1/SW`; const ruseList = checkWrRegListRes.data.filter((item: string) => item !== ""); if (searchTxt) { url = url + `/${searchTxt}`; } const response = await fetch(DEV_URL_FO + url, { method: "POST", headers: { "Content-Type": "application/json", [AUTH_USER_ID]: tokenId ?? "", [CLAIM_NAME]: Authorization ?? "", }, body: JSON.stringify(ruseList), }); const hasuList = await response.json().then((res: any) => { const data = res.data .map((item: any) => { return { ...item, fctCpc: Number(item.fctCpc) || 0, searchNm: item.fctNm, searchPk: item.bscFctNm, }; }) .filter((hasu:any) => ruseList.find((ruse:any) => hasu.bscFctCd === ruse)); return { data: data, count: res.count }; }); return hasuList; }; export type DmMapActions = { findRuseFclt(sggOrCity: string, searchTxt: string): void; setSubsInfo(subsInfo: SubsInfo[]): void; }; export type DmMapType = { map: { ruseFcltList: FacilityInfo[]; subsInfo: SubsInfo[]; }; }; export const dmMapState: DmMapType = { map: { ruseFcltList: [], // subsInfo: [ // { // ruseUtztnFcltNm: "수원제1,2 재이용1", // 재이용시설명 // ruseUtztnFcltCd: "41110PB001R1", // }, // { // ruseUtztnFcltNm: "낙양 재이용1", // 재이용시설명 // ruseUtztnFcltCd: "41150SW001R1", // }, // { // ruseUtztnFcltNm: "서남 재이용1", // 재이용시설명 // ruseUtztnFcltCd: "11500PB001R1", // }, // ], subsInfo:[] }, }; export type DmMapStore = DmMapType & DmMapActions; export const DmMapReducer = (set: any): DmMapActions => { return { findRuseFclt: async (sggOrCity: string, searchTxt: string) => { const ruseFcltList = await getRuseFclt("1", sggOrCity, searchTxt); set((state: DmMapType) => ({ ...state, map: { ...state.map, ruseFcltList: ruseFcltList.data, }, })); }, setSubsInfo: async (subsInfo: SubsInfo[]) => { set((state: DmMapType) => ({ ...state, map: { ...state.map, subsInfo: subsInfo, }, })); }, }; };