import { useCallback } from 'react'; import { useLocation, useNavigate } from 'react-router-dom'; /** * رفتار یکسانِ «بازگشت» در کل پنل: اگر کاربر از صفحهٔ دیگری داخل خود پنل آمده باشد، * یک قدم در تاریخچه برمی‌گردد؛ اگر صفحه مستقیم باز شده باشد (لینک مستقیم، رفرش، * بوکمارک) تاریخچه‌ای برای برگشتن نیست و به صفحهٔ والدِ همان بخش می‌رود. * * تشخیص «ورود مستقیم» با `location.key === 'default'` انجام می‌شود — همان چیزی که * React Router برای اولین ورودیِ تاریخچه می‌گذارد؛ `history.length` قابل اتکا نیست * چون تب‌های قبلی مرورگر هم در آن شمرده می‌شوند. */ export function useGoBack(fallback: string): () => void { const navigate = useNavigate(); const location = useLocation(); return useCallback(() => { if (location.key !== 'default') { navigate(-1); return; } navigate(fallback, { replace: true }); }, [navigate, location.key, fallback]); }