diff --git a/src/components/widget.jsx b/src/components/widget.jsx index 0dd26535..72032b44 100644 --- a/src/components/widget.jsx +++ b/src/components/widget.jsx @@ -1,9 +1,10 @@ -import Weather from "components/widgets/weather/weather"; +import WeatherApi from "components/widgets/weather/weather"; import OpenWeatherMap from "components/widgets/openweathermap/weather"; import Resources from "components/widgets/resources/resources"; const widgetMappings = { - weather: Weather, + weather: WeatherApi, // This key will be deprecated in the future + weatherapi: WeatherApi, openweathermap: OpenWeatherMap, resources: Resources, }; diff --git a/src/components/widgets/openweathermap/weather.jsx b/src/components/widgets/openweathermap/weather.jsx index 43edc091..893eb3bd 100644 --- a/src/components/widgets/openweathermap/weather.jsx +++ b/src/components/widgets/openweathermap/weather.jsx @@ -8,33 +8,48 @@ export default function OpenWeatherMap({ options }) { `/api/widgets/openweathermap?lat=${options.latitude}&lon=${options.longitude}&apiKey=${options.apiKey}&duration=${options.cache}&units=${options.units}` ); - if (error) { + if (error || data?.cod == 401) { return ( -
- -
- API - Error +
+
+
+ +
+ API + Error +
+
); } if (!data) { - return
; + return
; } if (data.error) { - return
; + return
; } + return ( -
- data.sys.sunrise) && (data.dt < data.sys.sundown) ? "day" : "night"} /> -
- - {data.main.temp.toFixed(1)}° - - {data.weather[0].description.charAt(0).toUpperCase() + data.weather[0].description.slice(1)} +
+
+
+ data.sys.sunrise && data.dt < data.sys.sundown ? "day" : "night"} + /> +
+
+ + {options.label && `${options.label}, `} + {data.main.temp.toFixed(1)}° + + + {data.weather[0].description.charAt(0).toUpperCase() + data.weather[0].description.slice(1)} + +
); diff --git a/src/components/widgets/weather/weather.jsx b/src/components/widgets/weather/weather.jsx index 9ef3564d..72565872 100644 --- a/src/components/widgets/weather/weather.jsx +++ b/src/components/widgets/weather/weather.jsx @@ -3,33 +3,37 @@ import { BiError } from "react-icons/bi"; import Icon from "./icon"; -export default function Weather({ options }) { +export default function WeatherApi({ options }) { const { data, error } = useSWR( `/api/widgets/weather?lat=${options.latitude}&lon=${options.longitude}&apiKey=${options.apiKey}&duration=${options.cache}` ); if (error) { return ( -
- -
- API - Error +
+
+
+ +
+ API + Error +
+
); } if (!data) { - return
; + return
; } if (data.error) { - return
; + return
; } return ( -
+
diff --git a/src/pages/index.js b/src/pages/index.js index fc699b41..d994b2d8 100644 --- a/src/pages/index.js +++ b/src/pages/index.js @@ -17,6 +17,8 @@ const ColorToggle = dynamic(() => import("components/color-toggle"), { ssr: false, }); +const rightAlignedWidgets = ["weatherapi", "openweathermap", "weather"]; + export default function Home() { const { data: services, error: servicesError } = useSWR("/api/services"); const { data: bookmarks, error: bookmarksError } = useSWR("/api/bookmarks"); @@ -33,13 +35,13 @@ export default function Home() { {widgets && ( <> {widgets - .filter((widget) => widget.type !== "weather") + .filter((widget) => !rightAlignedWidgets.includes(widget.type)) .map((widget, i) => ( ))}
{widgets - .filter((widget) => widget.type === "weather") + .filter((widget) => rightAlignedWidgets.includes(widget.type)) .map((widget, i) => ( ))}