feat: redesign dashboard around place search

This commit is contained in:
zv
2026-06-01 19:05:31 +02:00
parent 6c2e731c60
commit 0632c67beb
18 changed files with 374 additions and 139 deletions

View File

@@ -0,0 +1,21 @@
"use client";
import { useEffect, useState } from "react";
import { useQuery } from "@tanstack/react-query";
import { fetchLocations } from "@/lib/location-api";
import type { Language } from "@/lib/i18n";
export function useLocationSearch(query: string, language: Language) {
const [debouncedQuery, setDebouncedQuery] = useState(query);
useEffect(() => {
const timeout = window.setTimeout(() => setDebouncedQuery(query.trim()), 300);
return () => window.clearTimeout(timeout);
}, [query]);
return useQuery({
queryKey: ["location-search", debouncedQuery, language],
queryFn: ({ signal }) => fetchLocations(debouncedQuery, language, signal),
enabled: debouncedQuery.length >= 2,
staleTime: 24 * 60 * 60 * 1000,
retry: 1,
});
}

View File

@@ -0,0 +1,15 @@
"use client";
import { useQuery } from "@tanstack/react-query";
import { fetchMeteoStationPositions } from "@/lib/imgw-api";
import { QUERY_GC_TIME, QUERY_STALE_TIME } from "@/lib/constants";
export function useMeteoStationPositions() {
return useQuery({
queryKey: ["meteo-station-positions"],
queryFn: ({ signal }) => fetchMeteoStationPositions(signal),
staleTime: QUERY_STALE_TIME,
gcTime: QUERY_GC_TIME,
retry: 2,
});
}