import React, { useState } from 'react'; import { View, TouchableOpacity } from 'react-native'; import { Image } from 'expo-image'; import { useRouter } from 'expo-router'; import { AppContainer, MyText, tw, MyFlatList, MyTextInput } from 'common-ui'; import { trpc } from '@/src/trpc-client'; import Ionicons from '@expo/vector-icons/Ionicons'; interface UserItemProps { item: any; onPress: (userId: string) => void; } const UserItem: React.FC = ({ item, onPress }) => ( onPress(item.id)} > {item.image ? ( ) : ( )} {item.name} {item.email} {item.mobile} ); export default function Users() { const router = useRouter(); const [search, setSearch] = useState(''); const { data, isLoading, fetchNextPage, hasNextPage, refetch, } = trpc.admin.staffUser.getUsers.useInfiniteQuery( { search }, { getNextPageParam: (lastPage) => lastPage.nextCursor, } ); const users = data?.pages.flatMap(page => page.users) || []; const handleUserPress = (userId: string) => { router.push(`/user-details/${userId}`); }; return ( } keyExtractor={(item) => item.id.toString()} onRefresh={refetch} onEndReached={() => { if (hasNextPage) { fetchNextPage(); } }} onEndReachedThreshold={0.5} ListEmptyComponent={ No users found } /> ); }