'use client'
import { useState } from 'react'
import { useRouter } from 'next/navigation'
import {
BannerForm,
BigLoading,
ConfirmDeleteModal,
ConfirmUpdateModal,
HandleResponse,
PageContainer,
} from 'components'
import { useDisclosure } from 'hooks'
import {
useDeleteBannerMutation,
useGetSingleBannerQuery,
useUpdateBannerMutation,
} from '@/store/services'
import { SubmitHandler } from 'react-hook-form'
import { useTitle, useUrlQuery } from '@/hooks'
const EditBannerPage = ({ params: { id: bannerId } }) => {
//? Assets
const { back } = useRouter()
const query = useUrlQuery()
const bannerName = query?.banner_name
const initialUpdataInfo = {}
//? Modals
const [isShowConfirmUpdateModal, confirmUpdateModalHandlers] = useDisclosure()
const [isShowConfirmDeleteModal, confirmDeleteModalHandlers] = useDisclosure()
//? States
const [updateInfo, setUpdateInfo] = useState(initialUpdataInfo)
//? Queries
//* Get Banner
const { data: selectedBanner, isLoading: isLoadingGetSelectedBanner } = useGetSingleBannerQuery({
id: bannerId,
})
//* Update Banner
const [
updateBanner,
{
data: dataUpdate,
isSuccess: isSuccessUpdate,
isError: isErrorUpdate,
error: errorUpdate,
isLoading: isLoadingUpdate,
},
] = useUpdateBannerMutation()
//* Delete Banner
const [
deleteBanner,
{
isSuccess: isSuccessDelete,
isError: isErrorDelete,
error: errorDelete,
data: dataDelete,
isLoading: isLoadingDelete,
},
] = useDeleteBannerMutation()
//? Handlers
//* Update
const updateHandler = data => {
setUpdateInfo(prev => ({ ...prev, ...selectedBanner.data, ...data }))
confirmUpdateModalHandlers.open()
}
const onConfirmUpdate = () => {
updateBanner({
id: bannerId,
body: updateInfo,
})
}
const onCancelUpdate = () => {
setUpdateInfo(initialUpdataInfo)
confirmUpdateModalHandlers.close()
}
const onSuccessUpdate = () => {
setUpdateInfo(initialUpdataInfo)
confirmUpdateModalHandlers.close()
back()
}
const onErrorUpdate = () => {
setUpdateInfo(initialUpdataInfo)
confirmUpdateModalHandlers.close()
}
//* Delete
const deleteHandler = () => confirmDeleteModalHandlers.open()
const onConfirmDelete = () => deleteBanner({ id: bannerId })
const onCancelDelete = () => confirmDeleteModalHandlers.close()
const onSuccessDelete = () => {
confirmDeleteModalHandlers.close()
back()
}
const onErrorDelete = () => confirmDeleteModalHandlers.close()
useTitle('编辑banner' + ' ' + bannerName)
return (
<>
{(isSuccessDelete || isErrorDelete) && (
)}
{(isSuccessUpdate || isErrorUpdate) && (
)}
{isLoadingGetSelectedBanner ? (
) : selectedBanner.data ? (
) : null}
>
)
}
export default EditBannerPage