From 90ed4d8d7c5af4fbd85ebd0de9b774264c341907 Mon Sep 17 00:00:00 2001 From: alexsparkes Date: Tue, 20 Feb 2024 21:36:33 +0000 Subject: [PATCH] refactor(greeting): Move events into static json file --- src/features/widgets/greeting/Greeting.jsx | 35 +++++++++---------- src/features/widgets/greeting/events.json | 17 +++++++++ src/features/widgets/weather/Expanded.jsx | 2 +- src/features/widgets/weather/Weather.jsx | 2 +- .../weather/{ => components}/WeatherIcon.jsx | 0 5 files changed, 36 insertions(+), 20 deletions(-) create mode 100644 src/features/widgets/greeting/events.json rename src/features/widgets/weather/{ => components}/WeatherIcon.jsx (100%) diff --git a/src/features/widgets/greeting/Greeting.jsx b/src/features/widgets/greeting/Greeting.jsx index 316799e1..d6ab0c21 100644 --- a/src/features/widgets/greeting/Greeting.jsx +++ b/src/features/widgets/greeting/Greeting.jsx @@ -5,7 +5,9 @@ import { nth, convertTimezone } from 'utils/date'; import EventBus from 'utils/eventbus'; import './greeting.scss'; +import events from './events.json'; +const isEventsEnabled = localStorage.getItem('events') !== 'false'; export default class Greeting extends PureComponent { constructor() { super(); @@ -24,7 +26,7 @@ export default class Greeting extends PureComponent { * @returns The message variable is being returned. */ doEvents(time, message) { - if (localStorage.getItem('events') === 'false') { + if (!isEventsEnabled) { return message; } @@ -32,15 +34,9 @@ export default class Greeting extends PureComponent { const month = time.getMonth(); const date = time.getDate(); - // If it's December 25th, set the greeting string to "Merry Christmas" - if (month === 11 && date === 25) { - message = variables.getMessage('widgets.greeting.christmas'); - // If the date is January 1st, set the greeting string to "Happy new year" - } else if (month === 0 && date === 1) { - message = variables.getMessage('widgets.greeting.newyear'); - // If it's October 31st, set the greeting string to "Happy Halloween" - } else if (month === 9 && date === 31) { - message = variables.getMessage('widgets.greeting.halloween'); + const event = events.find((e) => e.month - 1 === month && e.date === date); + if (event) { + message = variables.getMessage(event.id); } return message; @@ -67,14 +63,17 @@ export default class Greeting extends PureComponent { const hour = now.getHours(); - // Set the default greeting string to "Good evening" - let message = variables.getMessage('widgets.greeting.evening'); - // If it's before 12am, set the greeting string to "Good morning" - if (hour < 12) { - message = variables.getMessage('widgets.greeting.morning'); - // If it's before 6pm, set the greeting string to "Good afternoon" - } else if (hour < 18) { - message = variables.getMessage('widgets.greeting.afternoon'); + let message; + switch (true) { + case hour < 12: + message = variables.getMessage('widgets.greeting.morning'); + break; + case hour < 18: + message = variables.getMessage('widgets.greeting.afternoon'); + break; + default: + message = variables.getMessage('widgets.greeting.evening'); + break; } // Events and custom diff --git a/src/features/widgets/greeting/events.json b/src/features/widgets/greeting/events.json new file mode 100644 index 00000000..e7648213 --- /dev/null +++ b/src/features/widgets/greeting/events.json @@ -0,0 +1,17 @@ +[ + { + "id": "widgets.greeting.christmas", + "month": 12, + "date": 25 + }, + { + "id": "widgets.greeting.newyear", + "month": 1, + "date": 1 + }, + { + "id": "widgets.greeting.halloween", + "month": 10, + "date": 31 + } +] diff --git a/src/features/widgets/weather/Expanded.jsx b/src/features/widgets/weather/Expanded.jsx index 070c660a..4f6e0743 100644 --- a/src/features/widgets/weather/Expanded.jsx +++ b/src/features/widgets/weather/Expanded.jsx @@ -3,7 +3,7 @@ import { memo, useMemo } from 'react'; import { WiHumidity, WiWindy, WiBarometer, WiCloud } from 'react-icons/wi'; import { MdDisabledVisible } from 'react-icons/md'; -import WeatherIcon from './WeatherIcon'; +import WeatherIcon from './components/WeatherIcon'; import WindDirectionIcon from './WindDirectionIcon'; import { Tooltip } from 'components/Elements'; diff --git a/src/features/widgets/weather/Weather.jsx b/src/features/widgets/weather/Weather.jsx index 975efc68..7f2944d9 100644 --- a/src/features/widgets/weather/Weather.jsx +++ b/src/features/widgets/weather/Weather.jsx @@ -1,7 +1,7 @@ import variables from 'config/variables'; import { PureComponent } from 'react'; -import WeatherIcon from './WeatherIcon'; +import WeatherIcon from './components/WeatherIcon'; import Expanded from './Expanded'; import EventBus from 'utils/eventbus'; diff --git a/src/features/widgets/weather/WeatherIcon.jsx b/src/features/widgets/weather/components/WeatherIcon.jsx similarity index 100% rename from src/features/widgets/weather/WeatherIcon.jsx rename to src/features/widgets/weather/components/WeatherIcon.jsx