Fix: Await searchParams in home page for Next.js 15 compatibility
In Next.js 15, searchParams is a Promise that must be awaited before accessing its properties. The home page was directly accessing searchParams.search, searchParams.local_authority, etc., which resulted in all parameters being undefined. This caused all API calls to return all schools regardless of search/filter parameters. This fix brings the home page in line with the compare and rankings pages, which already correctly await searchParams. Fixes search, filter, and pagination functionality on the home page. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -7,14 +7,14 @@ import { fetchSchools, fetchFilters } from '@/lib/api';
|
||||
import { HomeView } from '@/components/HomeView';
|
||||
|
||||
interface HomePageProps {
|
||||
searchParams: {
|
||||
searchParams: Promise<{
|
||||
search?: string;
|
||||
local_authority?: string;
|
||||
school_type?: string;
|
||||
page?: string;
|
||||
postcode?: string;
|
||||
radius?: string;
|
||||
};
|
||||
}>;
|
||||
}
|
||||
|
||||
export const metadata = {
|
||||
@@ -26,18 +26,21 @@ export const metadata = {
|
||||
export const dynamic = 'force-dynamic';
|
||||
|
||||
export default async function HomePage({ searchParams }: HomePageProps) {
|
||||
// Await search params (Next.js 15 requirement)
|
||||
const params = await searchParams;
|
||||
|
||||
// Parse search params
|
||||
const page = parseInt(searchParams.page || '1');
|
||||
const radius = searchParams.radius ? parseInt(searchParams.radius) : undefined;
|
||||
const page = parseInt(params.page || '1');
|
||||
const radius = params.radius ? parseInt(params.radius) : undefined;
|
||||
|
||||
// Fetch data on server with error handling
|
||||
try {
|
||||
const [schoolsData, filtersData] = await Promise.all([
|
||||
fetchSchools({
|
||||
search: searchParams.search,
|
||||
local_authority: searchParams.local_authority,
|
||||
school_type: searchParams.school_type,
|
||||
postcode: searchParams.postcode,
|
||||
search: params.search,
|
||||
local_authority: params.local_authority,
|
||||
school_type: params.school_type,
|
||||
postcode: params.postcode,
|
||||
radius,
|
||||
page,
|
||||
page_size: 50,
|
||||
|
||||
Reference in New Issue
Block a user