import { BaseBox, BoxButtonOnFooter, ButtonCenteredOnly, ButtonCustom, ViewWrapper } from "@/components"; import API_STRORAGE from "@/constants/base-url-api-strorage"; import DIRECTORY_ID from "@/constants/directory-id"; import DUMMY_IMAGE from "@/constants/dummy-image-value"; import { useAuth } from "@/hooks/use-auth"; import { apiFileDelete } from "@/service/api-client/api-file"; import { apiGetOnePortofolio, apiUpdatePortofolio, } from "@/service/api-client/api-portofolio"; import { uploadFileService } from "@/service/upload-service"; import pickImage from "@/utils/pickImage"; import { Image } from "expo-image"; import { router, useLocalSearchParams } from "expo-router"; import { useEffect, useState } from "react"; import Toast from "react-native-toast-message"; export default function PortofolioEditLogo() { const { id } = useLocalSearchParams(); const [logoId, setLogoId] = useState(); const [imageUri, setImageUri] = useState(null); const [isLoading, setIsLoading] = useState(false); const { token } = useAuth(); useEffect(() => { onLoadData(id as string); }, [id]); const onLoadData = async (id: string) => { const response = await apiGetOnePortofolio({ id: id }); console.log( "Response portofolio >>", JSON.stringify(response.data.logoId, null, 2) ); setLogoId(response.data.logoId); }; async function onUpload() { try { setIsLoading(true); const response = await uploadFileService({ imageUri, dirId: DIRECTORY_ID.portofolio_logo, }); if (response.success) { const fileId = response.data.id; const responseUpdate = await apiUpdatePortofolio({ id: id as string, data: { fileId }, category: "logo", }); if (!responseUpdate.success) { Toast.show({ type: "error", text1: "Info", text2: responseUpdate.message, }); return; } if (logoId) { const deletePrevFile = await apiFileDelete({ token: token as string, id: logoId as string, }); if (!deletePrevFile.success) { console.log("error delete prev file >>", deletePrevFile.message); } } Toast.show({ type: "success", text1: "Sukses", text2: "Logo berhasil diupdate", }); router.back(); } } catch (error) { Toast.show({ type: "error", text1: "Gagal", text2: error as string, }); } finally { setIsLoading(false); } } const image = imageUri ? ( ) : ( ); const buttonFooter = ( { onUpload(); }} > Update ); return ( <> {image} { pickImage({ setImageUri, }); }} > Upload ); }