import React from "react";
import { View, Dimensions, ScrollView } from "react-native";
import { LinearGradient } from "expo-linear-gradient";
import { useRouter } from "expo-router";
import {
tw,
useManualRefresh,
useMarkDataFetchers,
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 FloatingCartBar from "@/components/floating-cart-bar";
import TabLayoutWrapper from "@/components/TabLayoutWrapper";
const { width: screenWidth } = Dimensions.get("window");
const itemWidth = screenWidth * 0.45;
const rowListContent = { paddingBottom: 16 };
interface OffersRowProps {
title: string;
subtitle: string;
products: any[];
onProductPress: (id: number) => void;
}
const OffersRow = ({ title, subtitle, products, onProductPress }: OffersRowProps) => {
const renderItem = ({ item }: { item: any }) => (
onProductPress(item.id)}
showDeliveryInfo={false}
useAddToCartDialog={true}
miniView={true}
/>
);
return (
{title}
{subtitle}
{products.length === 0 ? (
No {title.toLowerCase()} available right now
) : (
item.id.toString()}
horizontal
showsHorizontalScrollIndicator={false}
contentContainerStyle={rowListContent}
renderItem={renderItem}
removeClippedSubviews={true}
/>
)}
);
};
export default function Offers() {
const router = useRouter();
const { data, isLoading, error, refetch } =
trpc.user.product.getOffersPage.useQuery();
const combos = data?.combos || [];
const offers = data?.offers || [];
useManualRefresh(() => {
refetch();
});
useMarkDataFetchers(() => {
refetch();
});
if (isLoading) {
return (
Loading offers...
);
}
if (error) {
return (
Oops!
Failed to load offers
);
}
const handleProductPress = (id: number) => {
router.push(`/(drawer)/(tabs)/order-again/product-detail/${id}`);
};
return (
);
}