import { AvatarComp, ClickableCustom, Grid, NewWrapper, StackCustom, TextCustom, TextInputCustom, } from "@/components"; import { MainColor } from "@/constants/color-palet"; import { ICON_SIZE_SMALL, PAGINATION_DEFAULT_TAKE, } from "@/constants/constans-value"; import { usePagination } from "@/hooks/use-pagination"; import { apiAllUser } from "@/service/api-client/api-user"; import { Ionicons } from "@expo/vector-icons"; import { router, useFocusEffect } from "expo-router"; import _ from "lodash"; import { useCallback, useRef, useState } from "react"; import { RefreshControl, View } from "react-native"; import { createPaginationComponents } from "@/helpers/paginationHelpers"; export default function UserSearchMainView_V2() { const isInitialMount = useRef(true); const [search, setSearch] = useState(""); const { listData, loading, refreshing, hasMore, onRefresh, loadMore, isInitialLoad, } = usePagination({ fetchFunction: async (page, searchQuery) => { const response = await apiAllUser({ page: String(page), search: searchQuery || "", }); return response; }, pageSize: PAGINATION_DEFAULT_TAKE, searchQuery: search, }); // 🔁 Refresh otomatis saat kembali ke halaman ini useFocusEffect( useCallback(() => { if (isInitialMount.current) { // Skip saat pertama kali mount isInitialMount.current = false; return; } // Hanya refresh saat kembali dari screen lain onRefresh(); }, [onRefresh]), ); const renderHeader = () => ( <> } placeholder="Cari Pengguna" borderRadius={50} containerStyle={{ marginBottom: 0 }} /> ); const renderItem = ({ item }: { item: any }) => ( { console.log("Ke Profile"); router.push(`/profile/${item?.Profile?.id}`); }} > {item?.username} +{item?.nomor} {item?.Profile?.businessField && ( {item?.Profile?.businessField} )} ); const { ListEmptyComponent, ListFooterComponent } = createPaginationComponents({ loading, refreshing, listData, searchQuery: search, emptyMessage: "Tidak ada pengguna ditemukan", emptySearchMessage: "Tidak ada hasil pencarian", skeletonCount: 5, skeletonHeight: 150, loadingFooterText: "Memuat lebih banyak pengguna...", isInitialLoad, }); return ( <> } ListFooterComponent={ListFooterComponent} ListEmptyComponent={ListEmptyComponent} /> ); }