import React from 'react'; import { View, Linking, TouchableOpacity, ActivityIndicator } from 'react-native'; import { Image } from 'expo-image'; import { MyText, tw, useManualRefresh, MyFlatList, useMarkDataFetchers, theme, MyTouchableOpacity } from 'common-ui'; import { MaterialIcons, Ionicons } from '@expo/vector-icons'; import { trpc } from '@/src/trpc-client'; import { useGetEssentialConsts } from '@/src/api-hooks/essential-consts.api'; import dayjs from 'dayjs'; import { useRouter } from 'expo-router'; interface ComplaintItemProps { item: any; } const ComplaintItem: React.FC = ({ item }) => ( {/* Header: ID, Date, Status */} Complaint #{item.id} {item.orderId && ( Order #{item.orderId} )} {dayjs(item.createdAt).format('MMM DD, YYYY • h:mm A')} {item.isResolved ? 'Resolved' : 'Pending'} {/* Complaint Body */} {item.complaintBody} {/* Admin Response */} {item.response && ( Support Response {item.response} )} {!item.response && !item.isResolved && ( We are reviewing your complaint... )} ); export default function Complaints() { const router = useRouter(); const { data, isLoading, error, refetch } = trpc.user.complaint.getAll.useQuery(); const complaints = data?.complaints || []; const { data: constsData } = useGetEssentialConsts(); useManualRefresh(() => refetch()); useMarkDataFetchers(() => { refetch(); }); if (isLoading) { return ( Loading complaints... ); } if (error) { return ( Oops! Failed to load complaints ); } return ( item.id.toString()} renderItem={({ item }) => } contentContainerStyle={tw`px-4 py-6`} ListHeaderComponent={ Need Help? { const phone = constsData?.supportMobile || '8688182552'; Linking.openURL(`tel:${phone}`); }} > Call Us {constsData?.supportMobile || '8688182552'} { const email = constsData?.supportEmail || 'qushammohd@gmail.com'; Linking.openURL(`mailto:${email}`); }} > Email {constsData?.supportEmail || 'qushammohd@gmail.com'} } ListEmptyComponent={ No Complaints You haven't raised any complaints yet. That's great! router.push('/(drawer)/(tabs)/home')} style={tw`mt-8 bg-brand500 px-6 py-3 rounded-xl shadow-sm`} > Continue Shopping } /> ); }