38 lines
1.2 KiB
TypeScript
38 lines
1.2 KiB
TypeScript
"use client"
|
|
import { useQuery } from '@tanstack/react-query'
|
|
import { getConfigMazeApi, getMainAffixApi, getSubAffixApi } from '@/lib/api'
|
|
import useAffixStore from '@/stores/affixStore'
|
|
import useMazeStore from '@/stores/mazeStore'
|
|
import { useEffect } from 'react'
|
|
import { toast } from 'react-toastify'
|
|
|
|
export const useFetchConfigData = () => {
|
|
|
|
const { setMapMainAffix, setMapSubAffix } = useAffixStore()
|
|
const { setAllMazeData } = useMazeStore()
|
|
|
|
const { data, error } = useQuery({
|
|
queryKey: ['initialConfigData'],
|
|
queryFn: async () => {
|
|
const [maze, main, sub] = await Promise.all([
|
|
getConfigMazeApi(),
|
|
getMainAffixApi(),
|
|
getSubAffixApi(),
|
|
])
|
|
return { maze, main, sub }
|
|
},
|
|
staleTime: 1000 * 60 * 5,
|
|
})
|
|
|
|
useEffect(() => {
|
|
if (data && !error) {
|
|
setAllMazeData(data.maze)
|
|
setMapMainAffix(data.main)
|
|
setMapSubAffix(data.sub)
|
|
}
|
|
else if (error) {
|
|
toast.error("Failed to load initial config data")
|
|
}
|
|
}, [data, error, setAllMazeData, setMapMainAffix, setMapSubAffix])
|
|
}
|