'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