import {Stack, useLocalSearchParams} from "expo-router"; import {Box} from "@/components/ui/box"; import {Button, ButtonText} from "@/components/ui/button"; import {Card} from "@/components/ui/card"; import {Heading} from "@/components/ui/heading"; import {Image} from "@/components/ui/image"; import {Text} from "@/components/ui/text"; import {VStack} from "@/components/ui/vstack"; import {Icon, FavouriteIcon} from "@/components/ui/icon"; import {useQuery} from "@tanstack/react-query"; import {getImageByNoticeId, getNoticeById} from "@/api/notices"; import {ActivityIndicator} from "react-native"; import {useEffect, useState} from "react"; export default function NoticeDetails() { const {id} = useLocalSearchParams(); const [image, setImage] = useState(null); const [isImageLoading, setIsImageLoading] = useState(true); const { data: notice, isLoading, error, } = useQuery({ queryKey: ["notices", id], queryFn: () => getNoticeById(Number(id)), }); useEffect(() => { const fetchImage = async () => { setIsImageLoading(true); if (notice) { try { const imageData = await getImageByNoticeId(notice.noticeId); setImage(imageData); } catch (err) { console.error("Błąd przy pobieraniu obrazu:", err); } finally { setIsImageLoading(false); } } }; fetchImage(); }, [notice]); if (isLoading) { return ; } if (error) { return Błąd, spróbuj ponownie póżniej; } return ( {isImageLoading ? ( ) : ( image )} {notice.title} {notice.price}zł ); }