feat: Implement dynamic specialization search in the hero section and parse URL filters on the profiles page.
This commit is contained in:
@@ -405,6 +405,7 @@ function ProfilesPageContent() {
|
||||
const typeFromUrl = searchParams.get('type');
|
||||
const nameFromUrl = searchParams.get('name') || '';
|
||||
const locationFromUrl = searchParams.get('location') || '';
|
||||
const filtersFromUrl = searchParams.get('filters') || '';
|
||||
|
||||
// State for API data
|
||||
const [agents, setAgents] = useState<PublicAgentProfile[]>([]);
|
||||
@@ -422,13 +423,29 @@ function ProfilesPageContent() {
|
||||
const [activeTypeId, setActiveTypeId] = useState<string | null>(typeFromUrl);
|
||||
const [listingType, setListingType] = useState<'agents' | 'lenders'>('agents');
|
||||
const [isFilterModalOpen, setIsFilterModalOpen] = useState(false);
|
||||
const [filters, setFilters] = useState<FilterState>({});
|
||||
const [filters, setFilters] = useState<FilterState>(() => {
|
||||
if (filtersFromUrl) {
|
||||
try {
|
||||
return JSON.parse(filtersFromUrl) as FilterState;
|
||||
} catch {
|
||||
return {};
|
||||
}
|
||||
}
|
||||
return {};
|
||||
});
|
||||
|
||||
// Sync state when URL params change (e.g., browser back/forward, client-side navigation)
|
||||
useEffect(() => {
|
||||
setActiveTypeId(typeFromUrl);
|
||||
setSearchQuery(nameFromUrl);
|
||||
}, [typeFromUrl, nameFromUrl]);
|
||||
if (filtersFromUrl) {
|
||||
try {
|
||||
setFilters(JSON.parse(filtersFromUrl) as FilterState);
|
||||
} catch {
|
||||
// ignore invalid JSON
|
||||
}
|
||||
}
|
||||
}, [typeFromUrl, nameFromUrl, filtersFromUrl]);
|
||||
|
||||
// Fetch agent types and filter fields on mount
|
||||
useEffect(() => {
|
||||
|
||||
Reference in New Issue
Block a user