"use client"; import { useEffect, useState } from "react"; import { RefreshCcw, Wind, Plane } from "lucide-react"; import { Button } from "@/components/ui/button"; import { Card } from "@/components/ui/card"; import { MetarTable } from "@/components/metar-table"; import { CallsignSearch } from "@/components/callsign-search"; import { mainAirports, secondaryAirports, fetchAirportData, getUTCtime } from "@/lib/utils/metar"; import { useToast } from "@/components/ui/use-toast"; export default function Home() { const [loading, setLoading] = useState(false); const [lastUpdated, setLastUpdated] = useState(""); const [metarData, setMetarData] = useState([]); const { toast } = useToast(); const fetchData = async () => { setLoading(true); try { const allAirports = [...mainAirports, ...secondaryAirports]; const promises = allAirports.map(airport => fetchAirportData(airport)); const results = await Promise.all(promises); const validResults = results.filter(Boolean); if (validResults.length === 0) { throw new Error("Unable to fetch METAR data for any airport"); } setMetarData(validResults); setLastUpdated(getUTCtime()); } catch (error) { console.error("Failed to fetch METAR data:", error); toast({ title: "Error", description: "Failed to fetch METAR data. Please try again later.", variant: "destructive", }); } finally { setLoading(false); } }; useEffect(() => { fetchData(); const interval = setInterval(fetchData, 300000); // Refresh every 5 minutes return () => clearInterval(interval); }, []); return (

CZQM Ops Support Tool

Last updated: {lastUpdated || "--:-- UTC"}

Callsign Decode

); }