import ButtonBackHeader from "@/components/buttonBackHeader"; import ButtonSaveHeader from "@/components/buttonSaveHeader"; import { InputForm } from "@/components/inputForm"; import Styles from "@/constants/Styles"; import { apiEditBanner, apiGetBanner, apiGetBannerOne } from "@/lib/api"; import { setEntities } from "@/lib/bannerSlice"; import { useAuthSession } from "@/providers/AuthProvider"; import { Entypo } from "@expo/vector-icons"; import * as ImagePicker from "expo-image-picker"; import { router, Stack, useLocalSearchParams } from "expo-router"; import { useEffect, useState } from "react"; import { Image, Pressable, SafeAreaView, ScrollView, Text, ToastAndroid, View, } from "react-native"; import { useDispatch } from "react-redux"; export default function EditBanner() { const dispatch = useDispatch(); const { decryptToken, token } = useAuthSession(); const { id } = useLocalSearchParams<{ id: string }>(); const [selectedImage, setSelectedImage] = useState< string | undefined | { uri: string } >(undefined); const [title, setTitle] = useState(""); const [error, setError] = useState(false); const [imgForm, setImgForm] = useState(); const pickImageAsync = async () => { let result = await ImagePicker.launchImageLibraryAsync({ mediaTypes: ["images"], allowsEditing: true, quality: 1, aspect: [1535, 450], }); if (!result.canceled) { setSelectedImage(result.assets[0].uri); setImgForm(result.assets[0]); } else { alert("Tidak ada gambar yang dipilih"); } }; const handleLoadData = async () => { const hasil = await decryptToken(String(token?.current)); const data = await apiGetBannerOne({ user: hasil, id }); setSelectedImage({ uri: `https://wibu-storage.wibudev.com/api/files/${data.data.image}`, }); setTitle(data.data.title); }; useEffect(() => { handleLoadData(); }, []); function onValidate(val: string) { setTitle(val); if (val == "") { setError(true); } else { setError(false); } } const handleUpdateEntity = async () => { try { const hasil = await decryptToken(String(token?.current)); const fd = new FormData(); if (imgForm != undefined) { fd.append("file", { uri: imgForm.uri, type: imgForm.mimeType, name: imgForm.fileName, } as any); } else { fd.append("file", "undefined",); } fd.append( "data", JSON.stringify({ title, user: hasil, }) ); const updatedEntity = await apiEditBanner(fd, id) if (updatedEntity.success) { ToastAndroid.show("Berhasil mengupdate data", ToastAndroid.SHORT); apiGetBanner({ user: hasil }).then((data) => dispatch(setEntities(data.data)) ); router.back(); } else { ToastAndroid.show('Gagal mengupdate data', ToastAndroid.SHORT); } } catch (error) { console.error(error); ToastAndroid.show('Gagal mengupdate data', ToastAndroid.SHORT); } }; return ( ( { router.back(); }} /> ), headerTitle: "Edit Banner", headerTitleAlign: "center", headerRight: () => { handleUpdateEntity() }} category="update" />, }} /> {selectedImage != undefined ? ( ) : ( Mohon unggah gambar dalam resolusi 1535 x 450 piksel untuk memastikan )} ); }