diff --git a/src/pages/AdminUserDetail.tsx b/src/pages/AdminUserDetail.tsx index bdbe566..053a023 100644 --- a/src/pages/AdminUserDetail.tsx +++ b/src/pages/AdminUserDetail.tsx @@ -313,6 +313,7 @@ export default function AdminUserDetail() { const [referrerSearchQuery, setReferrerSearchQuery] = useState(''); const [showReferrerSearch, setShowReferrerSearch] = useState(false); const [referrerSearchResults, setReferrerSearchResults] = useState([]); + const [referrerSearchLoading, setReferrerSearchLoading] = useState(false); const referrerSearchRef = useRef(null); // Panel info & node usage @@ -443,7 +444,7 @@ export default function AdminUserDetail() { try { setReferralsLoading(true); const data = await adminUsersApi.getReferrals(userId, 0, 50); - setReferrals(data.users); + setReferrals(data.users || []); } catch { } finally { setReferralsLoading(false); @@ -953,17 +954,29 @@ export default function AdminUserDetail() { useEffect(() => { if (referrerSearchQuery.length < 2 || !showReferrerSearch) { setReferrerSearchResults([]); + setReferrerSearchLoading(false); return; } + setReferrerSearchLoading(true); + let cancelled = false; const timer = setTimeout(async () => { try { const data = await adminUsersApi.getUsers({ search: referrerSearchQuery, limit: 10 }); - setReferrerSearchResults(data.users || []); + if (!cancelled) { + setReferrerSearchResults(data.users || []); + setReferrerSearchLoading(false); + } } catch { - setReferrerSearchResults([]); + if (!cancelled) { + setReferrerSearchResults([]); + setReferrerSearchLoading(false); + } } }, 300); - return () => clearTimeout(timer); + return () => { + cancelled = true; + clearTimeout(timer); + }; }, [referrerSearchQuery, showReferrerSearch]); // Referrals tab: close search dropdown on click outside @@ -3064,11 +3077,13 @@ export default function AdminUserDetail() { )} )} - {referrerSearchQuery.length >= 2 && referrerSearchResults.length === 0 && ( -
- {t('admin.users.detail.referrals.noUsersFound')} -
- )} + {referrerSearchQuery.length >= 2 && + !referrerSearchLoading && + referrerSearchResults.length === 0 && ( +
+ {t('admin.users.detail.referrals.noUsersFound')} +
+ )} ) : (
@@ -3110,7 +3125,9 @@ export default function AdminUserDetail() { {t('admin.users.detail.referrals.commission')}
- {user.referral.commission_percent ?? t('admin.users.detail.referrals.default')}% + {user.referral.commission_percent != null + ? `${user.referral.commission_percent}%` + : t('admin.users.detail.referrals.default')}