Files

42 lines
1.1 KiB
TypeScript

import { fallbackHome, fallbackPages, fallbackServices } from "@/lib/fallback-data";
import { HomePayload, Page, Service } from "@/lib/types";
const API_URL = process.env.NEXT_PUBLIC_API_URL || "http://localhost:8000/api";
async function request<T>(path: string, fallback: T): Promise<T> {
try {
const response = await fetch(`${API_URL}${path}`, {
next: { revalidate: 60 },
});
if (!response.ok) {
return fallback;
}
return (await response.json()) as T;
} catch {
return fallback;
}
}
export function getHomeData(): Promise<HomePayload> {
return request("/home/", fallbackHome);
}
export function getPages(): Promise<Page[]> {
return request("/pages/", fallbackPages);
}
export function getPage(slug: string): Promise<Page | null> {
return request(`/pages/${slug}/`, fallbackPages.find((item) => item.slug === slug) || null);
}
export function getServices(): Promise<Service[]> {
return request("/services/", fallbackServices);
}
export function getService(slug: string): Promise<Service | null> {
return request(`/services/${slug}/`, fallbackServices.find((item) => item.slug === slug) || null);
}