import React from 'react' import { View, TouchableOpacity, Alert, Image, FlatList } from 'react-native' import { MaterialCommunityIcons } from '@expo/vector-icons' import { MyText, tw, MyTouchableOpacity, useManualRefresh, useMarkDataFetchers } from 'common-ui' import { trpc } from '@/src/trpc-client' import { useRouter } from 'expo-router' import dayjs from 'dayjs' import { LinearGradient } from 'expo-linear-gradient' export default function OffersList() { const router = useRouter() const { data, isLoading, refetch } = trpc.admin.offers.getAll.useQuery() const toggleSuspend = trpc.admin.offers.toggleSuspend.useMutation({ onSuccess: () => refetch(), }) const deleteOffer = trpc.admin.offers.delete.useMutation({ onSuccess: () => refetch(), }) const offers = data?.offers || [] useManualRefresh(() => refetch()) useMarkDataFetchers(() => refetch()) if (isLoading) { return ( Loading offers... ) } const handleToggleSuspend = (id: number) => { toggleSuspend.mutate({ id }) } const handleDelete = (id: number) => { Alert.alert('Delete Offer', 'Are you sure you want to delete this offer?', [ { text: 'Cancel', style: 'cancel' }, { text: 'Delete', style: 'destructive', onPress: () => deleteOffer.mutate({ id }) }, ]) } return ( item.id.toString()} contentContainerStyle={tw`p-4`} ListEmptyComponent={ No offers yet Create your first offer } renderItem={({ item: offer }: { item: any }) => ( router.push(`/offers/edit/${offer.id}` as any)} style={tw`bg-white border border-gray-200 rounded-2xl mb-4 overflow-hidden shadow-sm`} > {offer.images?.[0] ? ( ) : ( )} {offer.isSuspended && ( Suspended )} {offer.name} {offer.shortDescription && ( {offer.shortDescription} )} ₹{offer.price} {offer.marketPrice && Number(offer.marketPrice) > Number(offer.price) && ( ₹{offer.marketPrice} )} {offer.items?.length || 0} product{(offer.items?.length || 0) !== 1 ? 's' : ''} Added {dayjs(offer.addedOn).format('DD MMM, YYYY')} handleToggleSuspend(offer.id)} style={tw`flex-1 py-3 items-center ${offer.isSuspended ? 'bg-green-50' : 'bg-red-50'}`} > {offer.isSuspended ? 'Activate' : 'Suspend'} handleDelete(offer.id)} style={tw`flex-1 py-3 items-center bg-red-50 border-l border-gray-100`} > Delete )} /> router.push('/offers/add' as any)} style={{ position: 'absolute', bottom: 32, right: 24, zIndex: 100 }} > ) }