diff --git a/app/(tabs)/beneficiaries/[id]/equipment-status.tsx b/app/(tabs)/beneficiaries/[id]/equipment-status.tsx index 70f4754..c69bb60 100644 --- a/app/(tabs)/beneficiaries/[id]/equipment-status.tsx +++ b/app/(tabs)/beneficiaries/[id]/equipment-status.tsx @@ -91,9 +91,10 @@ export default function EquipmentStatusScreen() { const [isRefreshing, setIsRefreshing] = useState(false); const [error, setError] = useState(null); const [isConfirming, setIsConfirming] = useState(false); + const [isNavigatingAway, setIsNavigatingAway] = useState(false); const loadBeneficiary = useCallback(async () => { - if (!id) return; + if (!id || isNavigatingAway) return; if (!isRefreshing) { setIsLoading(true); @@ -105,6 +106,9 @@ export default function EquipmentStatusScreen() { if (response.ok && response.data) { setBeneficiary(response.data); + // Skip auto-redirects if user is navigating away + if (isNavigatingAway) return; + // Self-guard: Redirect if user has devices - shouldn't be on this page if (hasBeneficiaryDevices(response.data)) { router.replace(`/(tabs)/beneficiaries/${id}`); @@ -126,7 +130,7 @@ export default function EquipmentStatusScreen() { setIsLoading(false); setIsRefreshing(false); } - }, [id, isRefreshing]); + }, [id, isRefreshing, isNavigatingAway]); useEffect(() => { loadBeneficiary(); @@ -193,7 +197,10 @@ export default function EquipmentStatusScreen() { {/* Header */} - router.push('/(tabs)/beneficiaries')}> + { + setIsNavigatingAway(true); + router.replace('/(tabs)/beneficiaries'); + }}> {beneficiary.name} @@ -285,7 +292,10 @@ export default function EquipmentStatusScreen() { styles.backToLovedOnesButton, pressed && { opacity: 0.7 } ]} - onPress={() => router.dismissAll()} + onPress={() => { + setIsNavigatingAway(true); + router.replace('/(tabs)/beneficiaries'); + }} > Back to My Loved Ones