diff --git a/src/app/api/weather/route.ts b/src/app/api/weather/route.ts index 1f9867f..afaf8a6 100644 --- a/src/app/api/weather/route.ts +++ b/src/app/api/weather/route.ts @@ -1,7 +1,10 @@ export const POST = async (req: Request) => { try { - const body: { lat: number; lng: number; temperatureUnit: 'C' | 'F' } = - await req.json(); + const body: { + lat: number; + lng: number; + measureUnit: 'Imperial' | 'Metric'; + } = await req.json(); if (!body.lat || !body.lng) { return Response.json( @@ -13,7 +16,9 @@ export const POST = async (req: Request) => { } const res = await fetch( - `https://api.open-meteo.com/v1/forecast?latitude=${body.lat}&longitude=${body.lng}¤t=weather_code,temperature_2m,is_day,relative_humidity_2m,wind_speed_10m&timezone=auto${body.temperatureUnit === 'C' ? '' : '&temperature_unit=fahrenheit'}`, + `https://api.open-meteo.com/v1/forecast?latitude=${body.lat}&longitude=${body.lng}¤t=weather_code,temperature_2m,is_day,relative_humidity_2m,wind_speed_10m&timezone=auto${ + body.measureUnit === 'Metric' ? '' : '&temperature_unit=fahrenheit' + }${body.measureUnit === 'Metric' ? '' : '&wind_speed_unit=mph'}`, ); const data = await res.json(); @@ -35,13 +40,15 @@ export const POST = async (req: Request) => { windSpeed: number; icon: string; temperatureUnit: 'C' | 'F'; + windSpeedUnit: 'm/s' | 'mph'; } = { temperature: data.current.temperature_2m, condition: '', humidity: data.current.relative_humidity_2m, windSpeed: data.current.wind_speed_10m, icon: '', - temperatureUnit: body.temperatureUnit, + temperatureUnit: body.measureUnit === 'Metric' ? 'C' : 'F', + windSpeedUnit: body.measureUnit === 'Metric' ? 'm/s' : 'mph', }; const code = data.current.weather_code; diff --git a/src/app/settings/page.tsx b/src/app/settings/page.tsx index 045226c..1b13c9c 100644 --- a/src/app/settings/page.tsx +++ b/src/app/settings/page.tsx @@ -148,7 +148,9 @@ const Page = () => { const [automaticImageSearch, setAutomaticImageSearch] = useState(false); const [automaticVideoSearch, setAutomaticVideoSearch] = useState(false); const [systemInstructions, setSystemInstructions] = useState(''); - const [temperatureUnit, setTemperatureUnit] = useState<'C' | 'F'>('C'); + const [measureUnit, setMeasureUnit] = useState<'Imperial' | 'Metric'>( + 'Metric', + ); const [savingStates, setSavingStates] = useState>({}); useEffect(() => { @@ -211,7 +213,9 @@ const Page = () => { setSystemInstructions(localStorage.getItem('systemInstructions')!); - setTemperatureUnit(localStorage.getItem('temperatureUnit')! as 'C' | 'F'); + setMeasureUnit( + localStorage.getItem('measureUnit')! as 'Imperial' | 'Metric', + ); setIsLoading(false); }; @@ -371,8 +375,8 @@ const Page = () => { localStorage.setItem('embeddingModel', value); } else if (key === 'systemInstructions') { localStorage.setItem('systemInstructions', value); - } else if (key === 'temperatureUnit') { - localStorage.setItem('temperatureUnit', value.toString()); + } else if (key === 'measureUnit') { + localStorage.setItem('measureUnit', value.toString()); } } catch (err) { console.error('Failed to save:', err); @@ -430,22 +434,22 @@ const Page = () => {

- Temperature Unit + Measurement Units