diff --git a/src/app/api/weather/route.ts b/src/app/api/weather/route.ts index 7594aa9..1f9867f 100644 --- a/src/app/api/weather/route.ts +++ b/src/app/api/weather/route.ts @@ -1,6 +1,7 @@ export const POST = async (req: Request) => { try { - const body: { lat: number; lng: number } = await req.json(); + const body: { lat: number; lng: number; temperatureUnit: 'C' | 'F' } = + await req.json(); if (!body.lat || !body.lng) { return Response.json( @@ -12,7 +13,7 @@ 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`, + `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'}`, ); const data = await res.json(); @@ -33,12 +34,14 @@ export const POST = async (req: Request) => { humidity: number; windSpeed: number; icon: string; + temperatureUnit: 'C' | 'F'; } = { temperature: data.current.temperature_2m, condition: '', humidity: data.current.relative_humidity_2m, windSpeed: data.current.wind_speed_10m, icon: '', + temperatureUnit: body.temperatureUnit, }; const code = data.current.weather_code; diff --git a/src/app/settings/page.tsx b/src/app/settings/page.tsx index b91519e..045226c 100644 --- a/src/app/settings/page.tsx +++ b/src/app/settings/page.tsx @@ -148,6 +148,7 @@ const Page = () => { const [automaticImageSearch, setAutomaticImageSearch] = useState(false); const [automaticVideoSearch, setAutomaticVideoSearch] = useState(false); const [systemInstructions, setSystemInstructions] = useState(''); + const [temperatureUnit, setTemperatureUnit] = useState<'C' | 'F'>('C'); const [savingStates, setSavingStates] = useState>({}); useEffect(() => { @@ -210,6 +211,8 @@ const Page = () => { setSystemInstructions(localStorage.getItem('systemInstructions')!); + setTemperatureUnit(localStorage.getItem('temperatureUnit')! as 'C' | 'F'); + setIsLoading(false); }; @@ -368,6 +371,8 @@ const Page = () => { localStorage.setItem('embeddingModel', value); } else if (key === 'systemInstructions') { localStorage.setItem('systemInstructions', value); + } else if (key === 'temperatureUnit') { + localStorage.setItem('temperatureUnit', value.toString()); } } catch (err) { console.error('Failed to save:', err); @@ -416,13 +421,35 @@ const Page = () => { ) : ( config && (
- +

Theme

+
+

+ Temperature Unit +

+