From 14ab8a72d6d4d287c1cda58c4cea78ed7cfe5601 Mon Sep 17 00:00:00 2001 From: "gpt-engineer-app[bot]" <159125892+gpt-engineer-app[bot]@users.noreply.github.com> Date: Thu, 2 Oct 2025 20:12:12 +0000 Subject: [PATCH] Fix search to use slugs --- src/components/search/AutocompleteSearch.tsx | 31 ++++++++++++++++++-- src/hooks/useSearch.tsx | 2 ++ 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/src/components/search/AutocompleteSearch.tsx b/src/components/search/AutocompleteSearch.tsx index 89bde165..24160beb 100644 --- a/src/components/search/AutocompleteSearch.tsx +++ b/src/components/search/AutocompleteSearch.tsx @@ -123,10 +123,37 @@ export function AutocompleteSearch({ navigate(`/parks/${searchResult.slug || searchResult.id}`); break; case 'ride': - navigate(`/rides/${searchResult.id}`); + const parkSlug = (searchResult.data as any).park?.slug; + const rideSlug = searchResult.slug; + if (parkSlug && rideSlug) { + navigate(`/parks/${parkSlug}/rides/${rideSlug}`); + } else { + navigate(`/rides/${searchResult.id}`); + } break; case 'company': - navigate(`/companies/${searchResult.id}`); + const companyType = (searchResult.data as any).company_type; + const companySlug = searchResult.slug; + if (companyType && companySlug) { + switch (companyType) { + case 'operator': + navigate(`/operators/${companySlug}`); + break; + case 'property_owner': + navigate(`/owners/${companySlug}`); + break; + case 'manufacturer': + navigate(`/manufacturers/${companySlug}`); + break; + case 'designer': + navigate(`/designers/${companySlug}`); + break; + default: + navigate(`/companies/${searchResult.id}`); + } + } else { + navigate(`/companies/${searchResult.id}`); + } break; } } diff --git a/src/hooks/useSearch.tsx b/src/hooks/useSearch.tsx index 1be7a64d..cd9dfea2 100644 --- a/src/hooks/useSearch.tsx +++ b/src/hooks/useSearch.tsx @@ -109,6 +109,7 @@ export function useSearch(options: UseSearchOptions = {}) { subtitle: `at ${ride.park?.name || 'Unknown Park'}`, image: ride.image_url, rating: ride.average_rating, + slug: ride.slug, data: ride }); }); @@ -129,6 +130,7 @@ export function useSearch(options: UseSearchOptions = {}) { title: company.name, subtitle: company.company_type?.replace('_', ' ').replace(/\b\w/g, l => l.toUpperCase()) || 'Company', image: company.logo_url, + slug: company.slug, data: company }); });