import React, { useState } from "react"; import { View, Dimensions, Image, Platform, Alert, ScrollView, } from "react-native"; import { LinearGradient } from "expo-linear-gradient"; import { useRouter } from "expo-router"; import { theme, tw, useManualRefresh, useMarkDataFetchers, LoadingDialog, AppContainer, MyFlatList, MyText, } from "common-ui"; import MaterialIcons from "@expo/vector-icons/MaterialIcons"; import ProductCard from "@/components/ProductCard"; import { trpc } from "@/src/trpc-client"; import { useGetCart, useAddToCart } from '@/hooks/cart-query-hooks'; import { useProductSlotIdentifier } from '@/hooks/useProductSlotIdentifier'; import FloatingCartBar from "@/components/floating-cart-bar"; import TabLayoutWrapper from "@/components/TabLayoutWrapper"; const { width: screenWidth } = Dimensions.get("window"); const itemWidth = (screenWidth - 48) / 2; // 2 items per row with padding export default function OrderAgain() { const router = useRouter(); const [isLoadingDialogOpen, setIsLoadingDialogOpen] = useState(false); const { data: recentProductsData, isLoading, error, refetch, } = trpc.user.order.getRecentlyOrderedProducts.useQuery({ limit: 20, }); const { data: cartData, refetch: refetchCart } = useGetCart(); const { addToCart = () => {} } = useAddToCart({ showSuccessAlert: false, showErrorAlert: false, refetchCart: true }) || {}; const { getQuickestSlot } = useProductSlotIdentifier(); const recentProducts = recentProductsData?.products || []; useManualRefresh(() => { refetch(); }); useMarkDataFetchers(() => { refetch(); }); const handleAddToCart = (productId: number) => { const slotId = getQuickestSlot(productId); if (!slotId) { Alert.alert("Error", "No available delivery slot for this product"); return; } setIsLoadingDialogOpen(true); addToCart(productId, 1, slotId, () => setIsLoadingDialogOpen(false)); }; const handleBuyNow = (productId: number) => { const slotId = getQuickestSlot(productId); if (!slotId) { Alert.alert("Error", "No available delivery slot for this product"); return; } setIsLoadingDialogOpen(true); addToCart(productId, 1, slotId, () => { setIsLoadingDialogOpen(false); router.push(`/(drawer)/(tabs)/home/cart?select=${productId}`); }); }; if (isLoading) { return ( Loading your recent orders... ); } if (error) { return ( Oops! Failed to load recent orders ); } return ( Order Again Reorder your favorite items quickly {/* White Section */} {/* Section Title */} Recently Ordered {recentProducts.length === 0 ? ( No recent orders Items you've ordered recently will appear here ) : ( {recentProducts.map((item, index) => ( router.push(`/(drawer)/(tabs)/order-again/product-detail/${item.id}`)} showDeliveryInfo={false} // iconType="flash" /> ))} )} ); }