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
}
/>
);
}