"use client"; import { RouterDonasi } from "@/app/lib/router_hipmi/router_donasi"; import { AspectRatio, Button, FileButton, Group, Image, Select, Stack, Text, TextInput, } from "@mantine/core"; import { IconCamera, IconUpload } from "@tabler/icons-react"; import { useAtom } from "jotai"; import { useRouter } from "next/navigation"; import { DIRECTORY_ID } from "@/app/lib"; import { MainColor } from "@/app_modules/_global/color/color_pallet"; import { ComponentGlobal_BoxUploadImage } from "@/app_modules/_global/component"; import ComponentGlobal_BoxInformation from "@/app_modules/_global/component/box_information"; import { funGlobal_UploadToStorage } from "@/app_modules/_global/fun"; import { ComponentGlobal_NotifikasiPeringatan } from "@/app_modules/_global/notif_global"; import { ComponentGlobal_NotifikasiGagal } from "@/app_modules/_global/notif_global/notifikasi_gagal"; import _ from "lodash"; import { useState } from "react"; import Donasi_funCreateTemporary from "../fun/create/fun_create_donasi_temporary"; import { gs_donasi_tabs_posting } from "../global_state"; import { MODEL_DONASI_ALL_MASTER } from "../model/interface"; export default function CreateDonasi({ masterKategori, masterDurasi, }: { masterKategori: MODEL_DONASI_ALL_MASTER[]; masterDurasi: MODEL_DONASI_ALL_MASTER[]; }) { const router = useRouter(); const [isLoading, setLoading] = useState(false); const [kategori, setKategori] = useState(masterKategori); const [durasi, setDurasi] = useState(masterDurasi); const [data, setData] = useState({ kategoriId: "", title: "", target: "", durasiId: "", }); const [targetDana, setTargetDana] = useState(""); const [file, setFile] = useState(null); const [img, setImg] = useState(); const [tabsPostingDonasi, setTabsPostingDonasi] = useAtom( gs_donasi_tabs_posting ); async function onCreate() { const body = { donasiMaster_KategoriId: data.kategoriId, donasiMaster_DurasiId: data.durasiId, title: data.title, target: targetDana, }; if (_.values(body).includes("")) return ComponentGlobal_NotifikasiPeringatan("Lengkapin Data"); try { setLoading(true); const uploadImage = await funGlobal_UploadToStorage({ file: file as File, dirId: DIRECTORY_ID.donasi_image, }); if (!uploadImage.success) { setLoading(false); return ComponentGlobal_NotifikasiPeringatan("Gagal upload file gambar"); } const res = await Donasi_funCreateTemporary({ data: body as any, fileId: uploadImage.data.id, }); if (res.status === 201) { setTabsPostingDonasi("Review"); router.push(RouterDonasi.create_cerita_penggalang + `${res.donasiId}`); setLoading(false); } else { ComponentGlobal_NotifikasiGagal(res.message); setLoading(false); } } catch (error) { console.log(error); } } return ( <> ({ value: e.id, label: e.name + " " + `hari`, }))} onChange={(val: string) => setData({ ...data, durasiId: val })} /> {img ? ( Foto ) : ( Upload Gambar )} {/* Upload Foto */} { try { const buffer = URL.createObjectURL( new Blob([new Uint8Array(await files.arrayBuffer())]) ); setImg(buffer); setFile(files); } catch (error) { console.log(error); } }} accept="image/png,image/jpeg" > {(props) => ( )} ); }