import { useCallback, useRef, useState } from 'react'; import { useNavigate } from 'react-router-dom'; import { useAuth } from '@/contexts/AuthContext.tsx'; import { Organization } from '@/types.ts'; import { useNavigation } from '@/hooks/useNavigation.tsx'; import { useOrganizations } from '@/hooks/useOrganizations.ts'; import { useUI } from '@/hooks/useUI.ts'; export const useLandingPage = () => { const { viewOrganization } = useNavigation(); const { openAddOrgWizard } = useUI(); const { organizations } = useOrganizations(); const { isAuthenticated } = useAuth(); const navigate = useNavigate(); const addOrgButtonRef = useRef(null); const [searchTerm, setSearchTerm] = useState(''); const onNavigateToMap = useCallback( (sector?: string) => { navigate(`/map${sector ? `?sector=${sector}` : ''}`); }, [navigate] ); const onNavigate = useCallback( (page: string) => { navigate(`/${page}`); window.scrollTo(0, 0); }, [navigate] ); const onNavigateToAdmin = useCallback(() => { navigate('/admin'); }, [navigate]); const onAddOrganizationClick = useCallback(() => { if (!isAuthenticated) { navigate('/login'); return; } openAddOrgWizard(); }, [isAuthenticated, navigate, openAddOrgWizard]); const onSearchSubmit = useCallback(() => { if (searchTerm.trim()) { navigate(`/map?search=${searchTerm.trim()}`); } }, [searchTerm, navigate]); const onViewOrganization = useCallback( (org: Organization) => { viewOrganization(org); }, [viewOrganization] ); return { addOrgButtonRef, onNavigateToMap, onAddOrganizationClick, onViewOrganization, onNavigate, onNavigateToAdmin, organizations, searchTerm, setSearchTerm, onSearchSubmit, }; };