import { View, Text, ScrollView, RefreshControl } from "react-native"; import { useRouter } from "expo-router"; import { useState, useCallback } from "react"; import { Ionicons } from "@expo/vector-icons"; import { useTheme } from "../../../components/theme"; import { usePaginatedQuery } from "convex/react"; import { api } from "../../../convex/_generated/api"; import { useAuth } from "../../_layout"; import { PostCard } from "../../../components/post-card"; import { Button } from "../../../components/ui/button"; import { Loading } from "../../../components/ui/loading"; export default function PostsScreen() { const theme = useTheme(); const router = useRouter(); const { isAuthenticated } = useAuth(); const [refreshing, setRefreshing] = useState(false); const postsResult = usePaginatedQuery( api.posts.listPaginated, {}, { initialNumItems: 20 } ); const onRefresh = useCallback(() => { setRefreshing(true); setTimeout(() => setRefreshing(false), 800); }, []); if (!isAuthenticated) { return ( Побарувања Потребна најава Најавете се за да ги видите побарувањата ); } return ( Побарувања Побарувања од клиенти } contentContainerStyle={{ padding: theme.spacing.md, gap: theme.spacing.sm, paddingBottom: 100 }} > {postsResult.status === "LoadingFirstPage" ? ( ) : postsResult.results.length === 0 ? ( Нема побарувања Сè уште нема побарувања ) : ( postsResult.results.map((post) => ( )) )} {postsResult.status === "CanLoadMore" && ( )} ); }