import React, { useState } from "react"; import { View, FlatList, } from "react-native"; import { Image } from 'expo-image'; import { useRouter } from "expo-router"; import { theme, tw, useManualRefresh, useMarkDataFetchers, MyFlatList, MyText, MyTouchableOpacity, } from "common-ui"; import MaterialIcons from "@expo/vector-icons/MaterialIcons"; import { Ionicons } from "@expo/vector-icons"; import { trpc } from "@/src/trpc-client"; import { LinearGradient } from "expo-linear-gradient"; import TabLayoutWrapper from "@/components/TabLayoutWrapper"; import FloatingCartBar from "@/components/floating-cart-bar"; import { useFocusEffect } from "expo-router"; import { useNavigationStore } from "@/src/store/navigationStore"; const StoreCard = ({ item, router, }: { item: any; router: any; }) => { const sampleProducts = item.sampleProducts || []; const remainingCount = item.productCount - sampleProducts.length; const navigateToStore = () => router.push(`/(drawer)/(tabs)/stores/store-detail/${item.id}`); return ( {/* Top Header Section - Touchable */} {!item.signedImageUrl && ( )} {item.name} {item.productCount} Items {/* Horizontal Scrollable Product Collection */} product.id.toString()} renderItem={({ item: product }) => ( {product.name} )} ListFooterComponent={remainingCount > 0 ? ( +{remainingCount} Discover ) : null} /> Explore Store ); }; export default function Stores() { const router = useRouter(); const { data: storesData, isLoading, error, refetch, } = trpc.user.stores.getStores.useQuery(); const stores = storesData?.stores || []; useManualRefresh(refetch); useMarkDataFetchers(() => refetch()); const { isNavigatedFromHome, setNavigatedFromHome, selectedStoreId, setSelectedStoreId } = useNavigationStore(); useFocusEffect(() => { if (isNavigatedFromHome && selectedStoreId) { setNavigatedFromHome(false); setSelectedStoreId(null); router.push(`/(drawer)/(tabs)/stores/store-detail/${selectedStoreId}`); } }); if (isLoading) { return ( Opening Marketplace... ); } if (error) { return ( Store Fetch Failed We couldn't reach our vendor network. refetch()} style={tw`bg-brand600 px-8 py-3 rounded-2xl shadow-lg shadow-brand200`} > Retry ); } return ( } keyExtractor={(item) => item.id.toString()} contentContainerStyle={tw`pb-32 px-3`} showsVerticalScrollIndicator={false} ListHeaderComponent={ Our Outlets Our Stores Experience the finest selection of premium meat, poultry, fresh fruits, vegetables, and dairy directly from our own stores. } ListEmptyComponent={ No Stores Available } /> ); }