xcage88

input

Nov 29th, 2023
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import React, { useEffect, useState, useRef } from 'react'
  2. import { getCookie } from 'cookies-next'
  3. import { useSelector, useDispatch } from 'react-redux'
  4. import { useRouter } from 'next/router'
  5. import Link from 'next/link'
  6.  
  7. // utils
  8. import { getData, deleteFile, postData, putData, postFile } from '@/utils/fetch'
  9. import { checkFile } from '@/utils/checkFile'
  10. import { ItemActiveType } from '@/utils/interface/life-activity'
  11.  
  12. // store
  13. import { IRootState } from '@/store'
  14. import { userLoginAzure, userLogout } from '@/store/azure-auth/actions'
  15. import cookieExpirationMiddleware from '@/middlewares/WithAuth'
  16. import * as yup from 'yup'
  17. import { yupResolver } from '@hookform/resolvers/yup'
  18.  
  19. // component
  20. import { Fragment } from '@fullcalendar/core/preact'
  21. import showDialog from '@/utils/showDialog'
  22. import { showMessage } from '@/components/reuseable/ShowMessage'
  23. import { useForm } from 'react-hook-form'
  24. import TextInput from '@/components/reuseable/TextInput'
  25. import Swal from 'sweetalert2'
  26. import Spinner from '@/components/reuseable/Spinner'
  27. import RichTextEditor from '@/pages/components/RichTextEditor'
  28. import CustomInputFile from '@/components/reuseable/core/input-file'
  29. import CustomInputFile2 from '@/components/reuseable/core/input-file2'
  30. import { setPageTitle } from '@/store/themeConfigSlice'
  31.  
  32. // props
  33. interface TopAgentProps {
  34.     token: any
  35.     name: any
  36.     username: any
  37.     itemActive: ItemActiveType
  38. }
  39.  
  40. // schema
  41. const schema = yup.object({
  42.     description: yup.string(),
  43.     altText: yup.string(),
  44.     linkImage: yup.string(),
  45.     title: yup.string(),
  46.     itemActivities: yup.array().of(
  47.         yup.object().shape(
  48.             {
  49.                 linkImage: yup.string(),
  50.                 altText: yup.string()
  51.             }
  52.         )
  53.     )
  54. })
  55.  
  56. function TopAgentInput({token, name, username, itemActive}: TopAgentProps): JSX.Element {
  57.  
  58.     const router = useRouter()
  59.     const dispatch = useDispatch()
  60.  
  61.     // state token
  62.     const {token: tokenBackup} = useSelector((state: IRootState) => state.azureAuth)
  63.  
  64.     // handle token
  65.     useEffect(() => {
  66.         if(token){
  67.             dispatch(userLoginAzure(token, name, username))
  68.         }
  69.     },[])
  70.  
  71.     useEffect(() => {
  72.  
  73.         // session token
  74.         const checkSession = async () => {
  75.             try {
  76.                 await getData('/users', { page: 1, limit: 1 })
  77.             } catch (error) {
  78.                 return false
  79.             }
  80.         }
  81.         checkSession()
  82.  
  83.         // token expired
  84.         const check = cookieExpirationMiddleware(token, tokenBackup)
  85.         if(check){
  86.             showMessage('Sesi telah berakhir, Silahkan masuk kembali', 'error')
  87.             dispatch(userLogout())
  88.             router.push('/auth/login-v2')
  89.         }
  90.     },[])
  91.  
  92.     // data by query
  93.     const {query} = useRouter()
  94.  
  95.     // validation
  96.     const {
  97.         register,
  98.         handleSubmit,
  99.         formState: {errors}
  100.     } = useForm({
  101.         resolver: yupResolver(schema)
  102.     })
  103.  
  104.     // form input
  105.     const [form, setForm] = useState({
  106.         description: query.description || '',
  107.         altText: query.alt_text || '',
  108.         linkImage: query.link_image,
  109.         title: query.title || '',
  110.         itemActivities:
  111.     })
  112.  
  113.     const [imageForm, setImageForm] = useState({
  114.         linkImage: itemActive?.link_image,
  115.         altText: itemActive?.alt_text || ''
  116.     })
  117.  
  118.     const inputFileRef = useRef<any>()
  119.     const inputFileRef1 = useRef<any>()
  120.     const inputFileRef2 = useRef<any>()
  121.     const inputFileRef3 = useRef<any>()
  122.     const inputFileRef4 = useRef<any>()
  123.     const inputFileRef5 = useRef<any>()
  124.     const inputFileRef6 = useRef<any>()
  125.     const inputFileRef7 = useRef<any>()
  126.     const inputFileRef8 = useRef<any>()
  127.     const inputFileRef9 = useRef<any>()
  128.     const inputFileRef10 = useRef<any>()
  129.     const [editorLoaded, setEditorLoaded] = useState(false)
  130.     const [isUpload, setIsUpload] = useState<boolean>(false)
  131.     const [isLoading, setIsLoading] = useState<boolean>(false)
  132.  
  133.     // handleInput
  134.     const handleChangeForm = (ev: any) => {
  135.         const {name, value} = ev.target
  136.  
  137.         if(name === 'description'){
  138.             const description = value
  139.             setForm({
  140.                 ...form,
  141.                 [name]: description
  142.             })
  143.         }else{
  144.             setForm({
  145.                 ...form,
  146.                 [name]: value
  147.             })
  148.         }
  149.     }
  150.  
  151.     const handleChangeForm2 = (ev: any) => {
  152.         const {value} = ev.target
  153.         const newValue = {}
  154.         setImageForm({
  155.             ...imageForm,
  156.             altText: value
  157.         })
  158.     }
  159.  
  160.     // handle cover
  161.     async function performPost(files: any){
  162.         if (files.length > 0) {
  163.             const check = checkFile(files[0], 'image');
  164.             try {
  165.                 if (check) {
  166.                     setIsUpload(true);
  167.                     if (form.linkImage) {
  168.                         await deleteFile({ paths: [form.linkImage] });
  169.                     }
  170.                     const extension = files[0].type.split('/')[1];
  171.  
  172.                     const original_filename = files[0].name.split(' ').join('_').toString().toLowerCase();
  173.                     const { data } = await postFile({ files: files[0], extension, original_filename });
  174.  
  175.                    
  176.                     setForm((prev) => ({
  177.                         ...prev,
  178.                         linkImage: data.data.files.filepath,
  179.                     }));
  180.                     // setImage([...newActive])
  181.                     setIsUpload(false);
  182.                 }
  183.             } catch (error: any) {
  184.                 await new Promise((resolve) => setTimeout(resolve, 1000));
  185.                 await performPost(files);
  186.             }
  187.         }
  188.     }
  189.  
  190.     const handlePostFile = async (ev: any) => {
  191.         const {files} = ev.target
  192.         try {
  193.             setIsLoading(true)
  194.             await performPost(files)
  195.             setIsLoading(false)
  196.         } catch (error: any) {
  197.             setIsLoading(false)
  198.         }
  199.     }
  200.  
  201.     // handle photo1
  202.     async function performPost2(files: any, value: any){
  203.         if (files.length > 0) {
  204.             const check = checkFile(files[0], 'image');
  205.             try {
  206.                 if (check) {
  207.                     setIsUpload(true);
  208.                     if (imageForm.linkImage) {
  209.                         await deleteFile({ paths: [imageForm.linkImage] });
  210.                     }
  211.                     const extension = files[0].type.split('/')[1];
  212.  
  213.                     const original_filename = files[0].name.split(' ').join('_').toString().toLowerCase();
  214.                     const { data } = await postFile({ files: files[0], extension, original_filename });
  215.                     // const newActive: any = Array.from(files).map((file: any) => ({
  216.                     //     linkImage: data.data.files.filepath,
  217.                     //     altText: file.name
  218.                     // }))
  219.                     // const newActive: any = ({
  220.                     //     linkImage: data.data.files.filepath,
  221.                     //     altText: value
  222.                     // })
  223.                     setImageForm((prev) => ({
  224.                         ...prev,
  225.                         linkImage: newActive
  226.                     }));
  227.                     // setImage([...image, newActive])
  228.                     // setIsUpload(false);
  229.                 }
  230.             } catch (error: any) {
  231.                 await new Promise((resolve) => setTimeout(resolve, 1000));
  232.                 await performPost(files);
  233.             }
  234.         }
  235.     }
  236.  
  237.     const handlePostFile2 = async (ev: any) => {
  238.         const {files, value} = ev.target
  239.         try {
  240.             setIsLoading(true)
  241.             await performPost2(files, value)
  242.             setIsLoading(false)
  243.         } catch (error: any) {
  244.             setIsLoading(false)
  245.         }
  246.     }
  247.  
  248.     useEffect(() => {
  249.         dispatch(setPageTitle('Tambah dan Ubah Activity List'));
  250.         setEditorLoaded(true);
  251.     }, []);
  252.  
  253.     useEffect(() => {
  254.         form.description === '<p><br></p>' && setForm({...form, description: ''})
  255.     },[form.description])
  256.  
  257.     const submitForm = async () => {
  258.         const requestBody = {
  259.             description: form.description,
  260.             linkImage: form.linkImage,
  261.             altText: form.altText,
  262.             title: form.title,
  263.             // itemActivities: form.itemActivities
  264.             itemActivities: [
  265.                 {
  266.                     linkImage: imageForm.linkImage,
  267.                     altText: imageForm.altText,
  268.                 }
  269.             ]
  270.         }
  271.  
  272.         if(!query.id){
  273.             try {
  274.                 setIsLoading(true)
  275.                 await postData('/lifefriend-activity', requestBody)
  276.                 showDialog('Tambah Data', 'success')
  277.                 router.push('./')
  278.                 setIsLoading(false)
  279.             } catch (error: any) {
  280.                 if(error.response.data.message){
  281.                     Swal.fire({
  282.                         html: `<div class="wrap-dialog-content">
  283.                                 <svg width="42" height="42" viewBox="0 0 42 42" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M42 4.23L37.77 0L21 16.77L4.23 0L0 4.23L16.77 21L0 37.77L4.23 42L21 25.23L37.77 42L42 37.77L25.23 21L42 4.23Z" fill="#E30008"/></svg><h3 class="title-dialog-action">Simpan data gagal, Judul sudah tersedia!</h3></div>`,
  284.                         imageWidth: 42,
  285.                         imageHeight: 42,
  286.                         confirmButtonText: 'OK!',
  287.                         confirmButtonColor: ' #ED1C24',
  288.                     })
  289.                 }else{
  290.                     showDialog('Tambah', 'failed')
  291.                 }
  292.                 setIsLoading(false)
  293.             }
  294.         }else{
  295.             try {
  296.                 setIsLoading(true)
  297.                 await putData(`/lifefriend-activity/${query.id}`, requestBody)
  298.                 showDialog('Edit data', 'success')
  299.                 router.push('./')
  300.                 setIsLoading(false)
  301.             } catch (error: any) {
  302.                 showDialog('Edit Data', 'failed')
  303.                 setIsLoading(false)
  304.             }
  305.         }
  306.     }
  307.  
  308.     console.log(form)
  309.     console.log(image)
  310.     console.log(imageForm)
  311.  
  312.     return (
  313.         <Fragment>
  314.             <div className='font-inter'>
  315.                 <div>
  316.                     <h5 className='title-banner text-lg dark:text-white'>
  317.                         {!query.id ? 'Tambah' : 'Edit '} Activity List
  318.                     </h5>
  319.                     <div className='subtitle-banner'>
  320.                         ({!query.id ? 'Tambah' : 'Edit'} data activity list)
  321.                     </div>
  322.                 </div>
  323.                 <form onSubmit={handleSubmit(submitForm)}>
  324.                     <div className="wrapper-form-addBanner mt-6">
  325.                         <div className='input-banner mb-5'>
  326.                             <label htmlFor="title" className='font-semibold text-[#787A7D]'>
  327.                                 <span className='text-[#ED1C24]'>*</span> Judul
  328.                             </label>
  329.                             <TextInput
  330.                                 type='text'
  331.                                 register={register}
  332.                                 name='title'
  333.                                 value={form.title}
  334.                                 onChange={handleChangeForm}
  335.                                 placeholder='Input Judul....'
  336.                                 errors={errors}
  337.                             />
  338.                         </div>
  339.                         <div className="input-banner mb-5">
  340.                             <div className="mb-2 flex gap-1">
  341.                                 <label htmlFor="description" className="font-semibold text-[#787A7D]">
  342.                                     <span className="text-[#ED1C24]">*</span> Deskripsi
  343.                                 </label>
  344.                             </div>
  345.                             <RichTextEditor name="description" form={form} setForm={setForm} editorLoaded={editorLoaded} />
  346.                         </div>
  347.                         <div className="input-banner mb-5">
  348.                             <label htmlFor="linkImage" className="font-semibold text-[#787A7D]">
  349.                                 <span className="text-[#ED1C24]">*</span> Cover Image
  350.                             </label>
  351.                             <CustomInputFile inputFileRef={inputFileRef} isUpload={isUpload} form={form} fileName="linkImage" onChange={handlePostFile} />
  352.                         </div>
  353.                         <div className='input-banner mb-5'>
  354.                             <label htmlFor="altText" className='font-semibold text-[#787A7D]'>
  355.                                 <span className='text-[#ED1C24]'>*</span> Alt Text Image
  356.                             </label>
  357.                             <TextInput
  358.                                 type='text'
  359.                                 register={register}
  360.                                 name='altText'
  361.                                 value={form.altText}
  362.                                 onChange={handleChangeForm}
  363.                                 placeholder='Input Bahasa....'
  364.                                 errors={errors}
  365.                             />
  366.                         </div>
  367.                     </div>
  368.                     <div className="wrapper-form-addBanner mt-6">
  369.                         <div className='flex items-center justify-between rounded-md border-2 border-dashed p-3 gap-4 mb-3'>
  370.                             <div className="input-banner w-full">
  371.                                 <label htmlFor="linkImage" className="font-semibold text-[#787A7D]">
  372.                                     <span className="text-[#ED1C24]">*</span> Image 1
  373.                                 </label>
  374.                                 <CustomInputFile2 inputFileRef={inputFileRef1} isUpload={isUpload} form={imageForm} fileName="linkImage" onChange={handlePostFile2}/>
  375.                             </div>
  376.                             <div className='input-banner w-full'>
  377.                                 <label htmlFor="itemActivities" className='font-semibold text-[#787A7D]'>
  378.                                     <span className='text-[#ED1C24]'>*</span> Alt Text Image
  379.                                 </label>
  380.                                 <TextInput
  381.                                     type='text'
  382.                                     register={register}
  383.                                     name='itemActivities'
  384.                                     value={imageForm.altText}
  385.                                     onChange={handlePostFile2}
  386.                                     placeholder='Alt Gambar...'
  387.                                     errors={errors}
  388.                                 />
  389.                             </div>
  390.                         </div>
  391.                         {/* <div className='flex items-center justify-between rounded-md border-2 border-dashed p-3 gap-4 mb-3'>
  392.                             <div className="input-banner w-full">
  393.                                 <label htmlFor="itemActivities2" className="font-semibold text-[#787A7D]">
  394.                                     <span className="text-[#ED1C24]">*</span> Image 2
  395.                                 </label>
  396.                                 <CustomInputFile2 inputFileRef={inputFileRef2} isUpload={isUpload} form={imageForm} fileName="itemActivities2" onChange={handlePostFile2}/>
  397.                             </div>
  398.                             <div className='input-banner w-full'>
  399.                                 <label htmlFor="altText" className='font-semibold text-[#787A7D]'>
  400.                                     <span className='text-[#ED1C24]'>*</span> Alt Text Image
  401.                                 </label>
  402.                                 <TextInput
  403.                                     type='text'
  404.                                     register={register}
  405.                                     name='altText'
  406.                                     value={imageForm.altText}
  407.                                     onChange={handleChangeForm2}
  408.                                     placeholder='Alt Gambar...'
  409.                                     errors={errors}
  410.                                 />
  411.                             </div>
  412.                         </div>
  413.                         <div className='flex items-center justify-between rounded-md border-2 border-dashed p-3 gap-4 mb-3'>
  414.                             <div className="input-banner w-full">
  415.                                 <label htmlFor="itemActivities" className="font-semibold text-[#787A7D]">
  416.                                     <span className="text-[#ED1C24]">*</span> Image 3
  417.                                 </label>
  418.                                 <CustomInputFile2 inputFileRef={inputFileRef3} isUpload={isUpload} form={imageForm} fileName="itemActivities" onChange={handlePostFile2}/>
  419.                             </div>
  420.                             <div className='input-banner w-full'>
  421.                                 <label htmlFor="altText" className='font-semibold text-[#787A7D]'>
  422.                                     <span className='text-[#ED1C24]'>*</span> Alt Text Image
  423.                                 </label>
  424.                                 <TextInput
  425.                                     type='text'
  426.                                     register={register}
  427.                                     name='altText'
  428.                                     value={imageForm.altText}
  429.                                     onChange={handleChangeForm2}
  430.                                     placeholder='Alt Gambar...'
  431.                                     errors={errors}
  432.                                 />
  433.                             </div>
  434.                         </div>
  435.                         <div className='flex items-center justify-between rounded-md border-2 border-dashed p-3 gap-4 mb-3'>
  436.                             <div className="input-banner w-full">
  437.                                 <label htmlFor="itemActivities" className="font-semibold text-[#787A7D]">
  438.                                     <span className="text-[#ED1C24]">*</span> Image 4
  439.                                 </label>
  440.                                 <CustomInputFile2 inputFileRef={inputFileRef4} isUpload={isUpload} form={imageForm} fileName="itemActivities" onChange={handlePostFile2}/>
  441.                             </div>
  442.                             <div className='input-banner w-full'>
  443.                                 <label htmlFor="altText" className='font-semibold text-[#787A7D]'>
  444.                                     <span className='text-[#ED1C24]'>*</span> Alt Text Image
  445.                                 </label>
  446.                                 <TextInput
  447.                                     type='text'
  448.                                     register={register}
  449.                                     name='altText'
  450.                                     value={imageForm.altText}
  451.                                     onChange={handleChangeForm2}
  452.                                     placeholder='Alt Gambar...'
  453.                                     errors={errors}
  454.                                 />
  455.                             </div>
  456.                         </div>
  457.                         <div className='flex items-center justify-between rounded-md border-2 border-dashed p-3 gap-4 mb-3'>
  458.                             <div className="input-banner w-full">
  459.                                 <label htmlFor="itemActivities" className="font-semibold text-[#787A7D]">
  460.                                     <span className="text-[#ED1C24]">*</span> Image 5
  461.                                 </label>
  462.                                 <CustomInputFile2 inputFileRef={inputFileRef5} isUpload={isUpload} form={imageForm} fileName="itemActivities" onChange={handlePostFile2}/>
  463.                             </div>
  464.                             <div className='input-banner w-full'>
  465.                                 <label htmlFor="altText" className='font-semibold text-[#787A7D]'>
  466.                                     <span className='text-[#ED1C24]'>*</span> Alt Text Image
  467.                                 </label>
  468.                                 <TextInput
  469.                                     type='text'
  470.                                     register={register}
  471.                                     name='altText'
  472.                                     value={imageForm.altText}
  473.                                     onChange={handleChangeForm2}
  474.                                     placeholder='Alt Gambar...'
  475.                                     errors={errors}
  476.                                 />
  477.                             </div>
  478.                         </div>
  479.                         <div className='flex items-center justify-between rounded-md border-2 border-dashed p-3 gap-4 mb-3'>
  480.                             <div className="input-banner w-full">
  481.                                 <label htmlFor="itemActivities" className="font-semibold text-[#787A7D]">
  482.                                     <span className="text-[#ED1C24]">*</span> Image 6
  483.                                 </label>
  484.                                 <CustomInputFile2 inputFileRef={inputFileRef6} isUpload={isUpload} form={imageForm} fileName="itemActivities" onChange={handlePostFile2}/>
  485.                             </div>
  486.                             <div className='input-banner w-full'>
  487.                                 <label htmlFor="altText" className='font-semibold text-[#787A7D]'>
  488.                                     <span className='text-[#ED1C24]'>*</span> Alt Text Image
  489.                                 </label>
  490.                                 <TextInput
  491.                                     type='text'
  492.                                     register={register}
  493.                                     name='altText'
  494.                                     value={imageForm.altText}
  495.                                     onChange={handleChangeForm2}
  496.                                     placeholder='Alt Gambar...'
  497.                                     errors={errors}
  498.                                 />
  499.                             </div>
  500.                         </div>
  501.                         <div className='flex items-center justify-between rounded-md border-2 border-dashed p-3 gap-4 mb-3'>
  502.                             <div className="input-banner w-full">
  503.                                 <label htmlFor="itemActivities" className="font-semibold text-[#787A7D]">
  504.                                     <span className="text-[#ED1C24]">*</span> Image 7
  505.                                 </label>
  506.                                 <CustomInputFile2 inputFileRef={inputFileRef7} isUpload={isUpload} form={imageForm} fileName="itemActivities" onChange={handlePostFile2}/>
  507.                             </div>
  508.                             <div className='input-banner w-full'>
  509.                                 <label htmlFor="altText" className='font-semibold text-[#787A7D]'>
  510.                                     <span className='text-[#ED1C24]'>*</span> Alt Text Image
  511.                                 </label>
  512.                                 <TextInput
  513.                                     type='text'
  514.                                     register={register}
  515.                                     name='altText'
  516.                                     value={imageForm.altText}
  517.                                     onChange={handleChangeForm2}
  518.                                     placeholder='Alt Gambar...'
  519.                                     errors={errors}
  520.                                 />
  521.                             </div>
  522.                         </div>
  523.                         <div className='flex items-center justify-between rounded-md border-2 border-dashed p-3 gap-4 mb-3'>
  524.                             <div className="input-banner w-full">
  525.                                 <label htmlFor="itemActivities" className="font-semibold text-[#787A7D]">
  526.                                     <span className="text-[#ED1C24]">*</span> Image 8
  527.                                 </label>
  528.                                 <CustomInputFile2 inputFileRef={inputFileRef8} isUpload={isUpload} form={imageForm} fileName="itemActivities" onChange={handlePostFile2}/>
  529.                             </div>
  530.                             <div className='input-banner w-full'>
  531.                                 <label htmlFor="altText" className='font-semibold text-[#787A7D]'>
  532.                                     <span className='text-[#ED1C24]'>*</span> Alt Text Image
  533.                                 </label>
  534.                                 <TextInput
  535.                                     type='text'
  536.                                     register={register}
  537.                                     name='altText'
  538.                                     value={imageForm.altText}
  539.                                     onChange={handleChangeForm2}
  540.                                     placeholder='Alt Gambar...'
  541.                                     errors={errors}
  542.                                 />
  543.                             </div>
  544.                         </div>
  545.                         <div className='flex items-center justify-between rounded-md border-2 border-dashed p-3 gap-4 mb-3'>
  546.                             <div className="input-banner w-full">
  547.                                 <label htmlFor="itemActivities" className="font-semibold text-[#787A7D]">
  548.                                     <span className="text-[#ED1C24]">*</span> Image 9
  549.                                 </label>
  550.                                 <CustomInputFile2 inputFileRef={inputFileRef9} isUpload={isUpload} form={imageForm} fileName="itemActivities" onChange={handlePostFile2}/>
  551.                             </div>
  552.                             <div className='input-banner w-full'>
  553.                                 <label htmlFor="altText" className='font-semibold text-[#787A7D]'>
  554.                                     <span className='text-[#ED1C24]'>*</span> Alt Text Image
  555.                                 </label>
  556.                                 <TextInput
  557.                                     type='text'
  558.                                     register={register}
  559.                                     name='altText'
  560.                                     value={imageForm.altText}
  561.                                     onChange={handleChangeForm2}
  562.                                     placeholder='Alt Gambar...'
  563.                                     errors={errors}
  564.                                 />
  565.                             </div>
  566.                         </div>
  567.                         <div className='flex items-center justify-between rounded-md border-2 border-dashed p-3 gap-4'>
  568.                             <div className="input-banner w-full">
  569.                                 <label htmlFor="itemActivities" className="font-semibold text-[#787A7D]">
  570.                                     <span className="text-[#ED1C24]">*</span> Image 10
  571.                                 </label>
  572.                                 <CustomInputFile2 inputFileRef={inputFileRef10} isUpload={isUpload} form={imageForm} fileName="itemActivities" onChange={handlePostFile2}/>
  573.                             </div>
  574.                             <div className='input-banner w-full'>
  575.                                 <label htmlFor="altText" className='font-semibold text-[#787A7D]'>
  576.                                     <span className='text-[#ED1C24]'>*</span> Alt Text Image
  577.                                 </label>
  578.                                 <TextInput
  579.                                     type='text'
  580.                                     register={register}
  581.                                     name='altText'
  582.                                     value={imageForm.altText}
  583.                                     onChange={handleChangeForm2}
  584.                                     placeholder='Alt Gambar...'
  585.                                     errors={errors}
  586.                                 />
  587.                             </div>
  588.                         </div> */}
  589.                     </div>
  590.                     <div className="mt-5 flex justify-end">
  591.                         <div className="flex gap-4">
  592.                             <Link href="/join/partner/top-agent" className="btn-delete-item-banner flex items-center">
  593.                                 Batal
  594.                             </Link>
  595.                             <button
  596.                                 type="submit"
  597.                                 className={`btn-add-item-banner flex items-center ${!form.description || !form.altText || !form.title || !imageForm.linkImage || !imageForm.altText || !form.linkImage || isLoading || isUpload ? 'btn-disabled ' : ''}`}
  598.                                 disabled={!form.description || !form.altText || !form.title || !imageForm.linkImage || !imageForm.altText || !form.linkImage ||  isLoading || isUpload ? true : false}
  599.                             >
  600.                                 {isLoading && <Spinner />}
  601.                                 {query.id ? 'Ubah' : 'Simpan'}
  602.                             </button>
  603.                         </div>
  604.                     </div>
  605.                 </form>
  606.             </div>
  607.         </Fragment>
  608.     )
  609. }
  610.  
  611. export default TopAgentInput
  612.  
  613. export async function getServerSideProps({req}:any) {
  614.     const token = getCookie('access_token', {req})
  615.     const name = getCookie('name', {req})
  616.     const username = getCookie('username', {req})
  617.  
  618.  
  619.     try {
  620.         return {
  621.             props: {
  622.                 token: token ? token : '',
  623.                 name: name ? name : '',
  624.                 username: username ? username : ''
  625.             }
  626.         }
  627.     } catch (error: any) {
  628.         return {
  629.             props: { token: token ? token : '', username: username ? username : '', name: name ? name : '' },
  630.         };
  631.     }
  632. }
  633.  
  634.  
Add Comment
Please, Sign In to add comment