69 lines
2.0 KiB
TypeScript
69 lines
2.0 KiB
TypeScript
import { create } from 'zustand'
|
|
import { Suitable, suitableApi } from '@/api/suitable'
|
|
|
|
interface SuitableState {
|
|
// // 검색 결과 리스트
|
|
// searchResults: Suitable[]
|
|
// // 초기 데이터 로드
|
|
// fetchInitializeData: () => Promise<void>
|
|
// // 검색 결과 설정
|
|
// setSearchResults: (results: Suitable[]) => void
|
|
// // 검색 결과 초기화
|
|
// resetSearchResults: () => void
|
|
|
|
// 선택된 아이템 리스트
|
|
selectedItems: Suitable[]
|
|
// 선택된 아이템 추가
|
|
addSelectedItem: (item: Suitable) => void
|
|
// 선택된 아이템 제거
|
|
removeSelectedItem: (itemId: number) => void
|
|
// 선택된 아이템 모두 제거
|
|
clearSelectedItems: () => void
|
|
}
|
|
|
|
export const useSuitableStore = create<SuitableState>((set) => ({
|
|
// // 초기 상태
|
|
// searchResults: [],
|
|
|
|
// // 초기 데이터 로드
|
|
// fetchInitializeData: async () => {
|
|
// const suitables = await fetchInitialSuitablee()
|
|
// set({ searchResults: suitables })
|
|
// },
|
|
|
|
// // 검색 결과 설정
|
|
// setSearchResults: (results) => set({ searchResults: results }),
|
|
|
|
// // 검색 결과 초기화
|
|
// resetSearchResults: () => set({ searchResults: [] }),
|
|
|
|
// 초기 상태
|
|
selectedItems: [],
|
|
|
|
// 선택된 아이템 추가 (중복 방지)
|
|
addSelectedItem: (item) =>
|
|
set((state) => ({
|
|
selectedItems: state.selectedItems.some((i) => i.id === item.id) ? state.selectedItems : [...state.selectedItems, item],
|
|
})),
|
|
|
|
// 선택된 아이템 제거
|
|
removeSelectedItem: (itemId) =>
|
|
set((state) => ({
|
|
selectedItems: state.selectedItems.filter((item) => item.id !== itemId),
|
|
})),
|
|
|
|
// 선택된 아이템 모두 제거
|
|
clearSelectedItems: () => set({ selectedItems: [] }),
|
|
}))
|
|
|
|
// // 전체 데이터 초기화 함수
|
|
// async function fetchInitialSuitablee() {
|
|
// try {
|
|
// const suitable = await suitableApi.getList()
|
|
// return suitable
|
|
// } catch (error) {
|
|
// console.error('초기 데이터 로드 실패:', error)
|
|
// return []
|
|
// }
|
|
// }
|