import React from 'react'; import { View, TouchableOpacity, Alert } from 'react-native'; import { useLocalSearchParams, useRouter } from 'expo-router'; import { AppContainer, MyText, tw } from 'common-ui'; import { trpc } from '@/src/trpc-client'; import MaterialIcons from '@expo/vector-icons/MaterialIcons'; import dayjs from 'dayjs'; export default function UserDetails() { const { id } = useLocalSearchParams<{ id: string }>(); const router = useRouter(); const { data: userData, isLoading, error, refetch } = trpc.admin.staffUser.getUserDetails.useQuery( { userId: id ? parseInt(id) : 0 }, { enabled: !!id } ); const updateSuspensionMutation = trpc.admin.staffUser.updateUserSuspension.useMutation({ onSuccess: () => { refetch(); Alert.alert('Success', 'User suspension status updated'); }, onError: (error: any) => { Alert.alert('Error', error.message || 'Failed to update suspension'); }, }); const handleToggleSuspension = () => { if (!userData) return; const newStatus = !userData.isSuspended; updateSuspensionMutation.mutate({ userId: userData.id, isSuspended: newStatus, }); }; if (isLoading) { return ( Loading user details... ); } if (error || !userData) { return ( Error {error?.message || "Failed to load user details"} router.back()} style={tw`mt-6 bg-gray-900 px-6 py-3 rounded-xl`} > Go Back ); } const user = userData; return ( {/* User Info */} {user.name || 'n/a'} User ID: {user.id} {user.mobile} {user.email} Added on {dayjs(user.addedOn).format('MMM DD, YYYY')} {user.lastOrdered ? `Last ordered ${dayjs(user.lastOrdered).format('MMM DD, YYYY')}` : 'No orders yet' } {/* Suspension Status */} {user.isSuspended ? 'Suspended' : 'Active'} {user.isSuspended ? 'User is suspended' : 'User is active'} {updateSuspensionMutation.isPending ? 'Updating...' : user.isSuspended ? 'Revoke Suspension' : 'Suspend User' } ); }