import React from 'react'; import { View, Alert } from 'react-native'; import { tw, AppContainer } from 'common-ui'; import CouponForm from '@/src/components/CouponForm'; import { trpc } from '@/src/trpc-client'; import { useRouter } from 'expo-router'; export default function CreateCoupon() { const router = useRouter(); const createCoupon = trpc.admin.coupon.create.useMutation(); const createReservedCoupon = trpc.admin.coupon.createReservedCoupon.useMutation(); const { refetch: refetchCoupons } = trpc.admin.coupon.getAll.useInfiniteQuery( { limit: 20, search: '' }, { enabled: false, getNextPageParam: (lastPage) => lastPage.nextCursor, } ) const { refetch: refetchReservedCoupons } = trpc.admin.coupon.getReservedCoupons.useInfiniteQuery( { limit: 20, search: '' }, { enabled: false, getNextPageParam: (lastPage) => lastPage.nextCursor, } ) const handleCreateCoupon = (values: any) => { console.log('Form values:', values); // Debug log const { isReservedCoupon, ...rest } = values; // Transform targetUsers array to targetUser for backend compatibility const payload = { ...rest, targetUser: rest.targetUsers?.[0] || undefined, }; delete payload.targetUsers; console.log('Payload:', payload); // Debug log const mutation = isReservedCoupon ? createReservedCoupon : createCoupon; const isLoading = isReservedCoupon ? createReservedCoupon.isPending : createCoupon.isPending; if (isLoading) return; // Prevent double submission mutation.mutate(payload, { onSuccess: async () => { await refetchCoupons() await refetchReservedCoupons() Alert.alert('Success', `${isReservedCoupon ? 'Reserved coupon' : 'Coupon'} created successfully`, [ { text: 'OK', onPress: () => router.back() } ]); }, onError: (error: any) => { Alert.alert('Error', error.message || 'Failed to create coupon'); }, }); }; return ( ); }