import { adminPath } from '../../constants'; import type { NavKey } from '../components/BottomNav'; const STORAGE_KEY = 'admin-mobile-tab-history-v1'; type TabHistory = Partial>; function readHistory(): TabHistory { if (typeof window === 'undefined') { return {}; } try { const raw = window.localStorage.getItem(STORAGE_KEY); if (!raw) { return {}; } const parsed = JSON.parse(raw) as TabHistory; return parsed ?? {}; } catch { return {}; } } function writeHistory(history: TabHistory): void { if (typeof window === 'undefined') { return; } try { window.localStorage.setItem(STORAGE_KEY, JSON.stringify(history)); } catch { // Ignore storage errors. } } export function setTabHistory(key: NavKey, path: string): void { const history = readHistory(); history[key] = path; writeHistory(history); } export function getTabHistory(): TabHistory { return readHistory(); } function resolveDefaultTarget(key: NavKey, slug?: string | null): string { if (key === 'tasks') { return slug ? adminPath(`/mobile/events/${slug}/tasks`) : adminPath('/mobile/tasks'); } if (key === 'uploads') { return slug ? adminPath(`/mobile/events/${slug}/photos`) : adminPath('/mobile/uploads'); } if (key === 'profile') { return adminPath('/mobile/profile'); } return adminPath('/mobile/dashboard'); } function resolveEventScopedTarget(path: string, slug: string | null | undefined, key: NavKey): string { if (!slug) { return path; } if (key !== 'tasks' && key !== 'uploads') { return path; } const match = path.match(/\/event-admin\/mobile\/events\/([^/]+)\/(tasks|photos)(?:\/.*)?$/); if (!match) { return resolveDefaultTarget(key, slug); } const storedSlug = match[1]; if (storedSlug === slug) { return path; } return resolveDefaultTarget(key, slug); } export function resolveTabTarget(key: NavKey, slug?: string | null): string { const history = readHistory(); const stored = history[key]; const fallback = resolveDefaultTarget(key, slug); if (!stored) { return fallback; } return resolveEventScopedTarget(stored, slug, key); }