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