Files
ArtisanConnectFrontend/ArtisanConnect/app/(tabs)/notices.jsx

48 lines
1.2 KiB
JavaScript

import { FlatList, Text, ActivityIndicator, RefreshControl } from "react-native";
import { useState } from "react";
import { listNotices } from "@/api/notices";
import { useQuery } from "@tanstack/react-query";
import { NoticeCard } from "@/components/NoticeCard";
export default function Notices() {
const [refreshing, setRefreshing] = useState(false);
const { data, isLoading, error, refetch } = useQuery({
queryKey: ["notices"],
queryFn: listNotices,
});
if (isLoading) {
return <ActivityIndicator />;
}
if (error) {
console.log(error.message);
return <Text>Nie udało sie pobrać listy. {error.message}</Text>;
}
const onRefresh = async () => {
setRefreshing(true);
await refetch();
setRefreshing(false);
};
return (
<FlatList
key={2}
data={data}
numColumns={2}
columnContainerClassName="m-2"
columnWrapperClassName="gap-2 m-2"
renderItem={({ item }) => <NoticeCard notice={item} />}
refreshControl={
<RefreshControl
refreshing={refreshing || isLoading}
onRefresh={onRefresh}
colors={["#3b82f6"]}
tintColor="#3b82f6"
/>
}
/>
);
}