75 lines
1.9 KiB
JavaScript
75 lines
1.9 KiB
JavaScript
'use client'
|
|
|
|
import { useContext, useEffect } from 'react'
|
|
import { useAxios } from '../useAxios'
|
|
import { SessionContext } from '@/app/SessionProvider'
|
|
import { QcastContext } from '@/app/QcastProvider'
|
|
import { checkSession } from '@/lib/authActions'
|
|
import { useRouter } from 'next/navigation'
|
|
|
|
export const useMainContentsController = () => {
|
|
const { session } = useContext(SessionContext)
|
|
const { promiseGet } = useAxios()
|
|
const { setQcastState, setIsGlobalLoading } = useContext(QcastContext)
|
|
const router = useRouter()
|
|
|
|
useEffect(() => {
|
|
checkSession().then((res) => {
|
|
if (!res) {
|
|
router.replace('/login', undefined, { shallow: true })
|
|
}
|
|
})
|
|
setIsGlobalLoading(true)
|
|
}, [])
|
|
|
|
/**
|
|
* 최근 물건 목록 조회
|
|
*/
|
|
const fetchObjectList = async () => {
|
|
try {
|
|
const apiUrl = `/api/main-page/object/${session?.storeId}/list`
|
|
await promiseGet({
|
|
url: apiUrl,
|
|
}).then((res) => {
|
|
if (res.status === 200) {
|
|
setQcastState({
|
|
saleStoreId: res.data.saleStoreId,
|
|
saleStoreName: res.data.saleStoreName,
|
|
objectList: res.data.objectList,
|
|
businessCharger: res.data.businessCharger,
|
|
businessChargerMail: res.data.businessChargerMail,
|
|
})
|
|
setIsGlobalLoading(false)
|
|
} else {
|
|
setQcastState({
|
|
saleStoreId: '',
|
|
saleStoreName: '',
|
|
objectList: [],
|
|
businessCharger: null,
|
|
businessChargerMail: null,
|
|
})
|
|
setIsGlobalLoading(false)
|
|
}
|
|
})
|
|
} catch (error) {
|
|
setIsGlobalLoading(false)
|
|
console.error('MAIN API fetching error:', error)
|
|
}
|
|
}
|
|
|
|
const initObjectList = () => {
|
|
setQcastState({
|
|
saleStoreId: '',
|
|
saleStoreName: '',
|
|
objectList: [],
|
|
businessCharger: null,
|
|
businessChargerMail: null,
|
|
})
|
|
}
|
|
|
|
return {
|
|
fetchObjectList,
|
|
initObjectList,
|
|
}
|
|
}
|