feat: Implement dynamic specialization search in the hero section and parse URL filters on the profiles page.

This commit is contained in:
pradeepkumar
2026-03-16 19:11:26 +05:30
parent fe0ef8cfba
commit 7dfa93adb5
2 changed files with 56 additions and 27 deletions

View File

@@ -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(() => {