Files
frontend/apps/sn/app/store/useReportTabStore.ts
T
swcho d898121764 refactor, add:
- searchModal Store 패턴을 사용하여 상태 관리 및 UI, 비즈니스로직 분리
- tsconfig.json에 import paths 추가
2025-09-08 14:49:23 +09:00

43 lines
1.5 KiB
TypeScript

import useReportTab, { type Folder, type ReportDataFile } from '../(map-layout)/map/searchModal/useReportTab';
import { create } from 'zustand';
import { getDcData } from '@/components/lib/api';
interface useReportTabStoreType {
isOpen: boolean;
files: ReportDataFile[];
dcTree: Folder[];
dcFiles: ReportDataFile[];
setIsOpen: (open: boolean) => void;
setFiles: (files: ReportDataFile[]) => void;
fetchDcTree: (clsfSystmNm: string) => void;
fetchDcFiles: (clsfSystmNm: string) => void;
}
export const useReportTabStore = create<useReportTabStoreType>((set, get) => ({
isOpen: false,
files: [],
dcTree: [],
dcFiles: [],
setIsOpen: (open: boolean) => set({ isOpen: open }),
setFiles: (files: ReportDataFile[]) => set({ files }),
fetchDcTree: async (clsfSystmNm: string) => {
const { dcTree } = get();
try {
const result = await getDcData("/api/v1/dc/clsf?clsfSystmNm=" + clsfSystmNm);
if (result && JSON.stringify(result) !== JSON.stringify(dcTree))
set({ dcTree: result });
} catch (error) {
console.error('Failed to fetch DC tree:', error);
}
},
fetchDcFiles: async (clsfSystmNm: string) => {
const { getDcFiles } = useReportTab();
const { dcFiles } = get();
try {
const result = await getDcFiles(clsfSystmNm);
if (result && JSON.stringify(result) !== JSON.stringify(dcFiles))
set({ dcFiles: result });
} catch (error) {
console.error('Failed to fetch DC files:', error);
}
}
}));