'use client'
import { useState } from 'react'
import { useRouter } from 'next/navigation'
import {
BigLoading,
ConfirmDeleteModal,
ConfirmUpdateModal,
HandleResponse,
PageContainer,
SliderForm,
} from 'components'
import { useDisclosure } from 'hooks'
import { SubmitHandler } from 'react-hook-form'
import {
useDeleteSliderMutation,
useGetSingleSliderQuery,
useUpdateSliderMutation,
} from '@/store/services'
import { useTitle, useUrlQuery } from '@/hooks'
const EditSliderPage = ({ params: { id: sliderId } }) => {
//? Assets
const { back } = useRouter()
const query = useUrlQuery()
const sliderName = query?.slider_name
const initialUpdataInfo = {}
//? States
const [updateInfo, setUpdateInfo] = useState(initialUpdataInfo)
//? Modals
const [isShowConfirmDeleteModal, confirmDeleteModalHandlers] = useDisclosure()
const [isShowConfirmUpdateModal, confirmUpdateModalHandlers] = useDisclosure()
//? Queries
//* Get Slider
const { data: selectedSlider, isLoading: isLoadingGetSelectedSlider } = useGetSingleSliderQuery({
id: sliderId,
})
//* Update Slider
const [
updateSlider,
{
data: dataUpdate,
isSuccess: isSuccessUpdate,
isError: isErrorUpdate,
error: errorUpdate,
isLoading: isLoadingUpdate,
},
] = useUpdateSliderMutation()
//* Delete Slider
const [
deleteSlider,
{
isSuccess: isSuccessDelete,
isError: isErrorDelete,
error: errorDelete,
data: dataDelete,
isLoading: isLoadingDelete,
},
] = useDeleteSliderMutation()
//? Handlers
//* Update
const updateHandler = data => {
setUpdateInfo(prev => ({ ...prev, ...selectedSlider.data, ...data }))
confirmUpdateModalHandlers.open()
}
const onConfirmUpdate = () => {
updateSlider({
id: sliderId,
body: updateInfo,
})
}
const onCancelUpdate = () => {
setUpdateInfo(initialUpdataInfo)
confirmUpdateModalHandlers.close()
}
const onSuccessUpdate = () => {
setUpdateInfo(initialUpdataInfo)
confirmUpdateModalHandlers.close()
console.log('isSuccessUpdate', isSuccessUpdate)
console.log('isErrorUpdate', isErrorUpdate)
back()
}
const onErrorUpdate = () => {
setUpdateInfo(initialUpdataInfo)
confirmUpdateModalHandlers.close()
}
//* Delete
const deleteHandler = () => confirmDeleteModalHandlers.open()
const onConfirmDelete = () => deleteSlider({ id: sliderId })
const onCancelDelete = () => confirmDeleteModalHandlers.close()
const onSuccessDelete = () => {
confirmDeleteModalHandlers.close()
back()
}
const onErrorDelete = () => confirmDeleteModalHandlers.close()
useTitle('编辑滑块' + ' ' + sliderName)
return (
<>
{(isSuccessDelete || isErrorDelete) && (
)}
{(isSuccessUpdate || isErrorUpdate) && (
)}
{isLoadingGetSelectedSlider ? (
) : selectedSlider ? (
) : null}
>
)
}
export default EditSliderPage