feat(greeting): Ability to create, edit and remove custom events

This commit is contained in:
alexsparkes 2024-03-22 15:18:50 +00:00
parent 7876bd69fd
commit 40e04af5d4
3 changed files with 41 additions and 6 deletions

View File

@ -5,7 +5,6 @@ import { nth, convertTimezone } from 'utils/date';
import EventBus from 'utils/eventbus'; import EventBus from 'utils/eventbus';
import './greeting.scss'; import './greeting.scss';
import events from './events.json';
const isEventsEnabled = localStorage.getItem('events') !== 'false'; const isEventsEnabled = localStorage.getItem('events') !== 'false';
export default class Greeting extends PureComponent { export default class Greeting extends PureComponent {
@ -34,7 +33,10 @@ export default class Greeting extends PureComponent {
const month = time.getMonth(); const month = time.getMonth();
const date = time.getDate(); const date = time.getDate();
const event = events.find((e) => e.month - 1 === month && e.date === date); // Parse the customEvents from localStorage
const customEvents = JSON.parse(localStorage.getItem('customEvents') || '[]');
const event = customEvents.find((e) => e.month - 1 === month && e.date === date);
if (event) { if (event) {
message = variables.getMessage(event.id); message = variables.getMessage(event.id);
} }

View File

@ -77,6 +77,20 @@ const GreetingOptions = () => {
setCustomEvents(defaultEvents); setCustomEvents(defaultEvents);
} }
function updateEvent(index, updatedEvent) {
// Update the event in your state
setCustomEvents((prevEvents) => {
const newEvents = [...prevEvents];
newEvents[index] = updatedEvent;
return newEvents;
});
// Update the event in localStorage
const customEvents = JSON.parse(localStorage.getItem('customEvents') || '[]');
customEvents[index] = updatedEvent;
localStorage.setItem('customEvents', JSON.stringify(customEvents));
}
const AdditionalOptions = () => { const AdditionalOptions = () => {
return ( return (
<Row final={true}> <Row final={true}>
@ -158,7 +172,10 @@ const GreetingOptions = () => {
<TextareaAutosize <TextareaAutosize
value={event.name} value={event.name}
placeholder="Event Name" placeholder="Event Name"
onChange={(e) => this.message(e, true, index)} onChange={(e) => {
const updatedEvent = { ...event, name: e.target.value };
updateEvent(index, updatedEvent);
}}
varient="outlined" varient="outlined"
style={{ padding: '0' }} style={{ padding: '0' }}
/> />
@ -168,11 +185,27 @@ const GreetingOptions = () => {
<div className="messageAction"> <div className="messageAction">
<div className="eventDateControl"> <div className="eventDateControl">
<label>Month</label> <label>Month</label>
<input id="number" type="number" value={event.month} /> <input
id="month"
type="number"
value={event.month}
onChange={(e) => {
const updatedEvent = { ...event, month: parseInt(e.target.value, 10) };
updateEvent(index, updatedEvent);
}}
/>
</div> </div>
<div className="eventDateControl"> <div className="eventDateControl">
<label>Day</label> <label>Day</label>
<input id="number" type="number" value={event.date} /> <input
id="day"
type="number"
value={event.date}
onChange={(e) => {
const updatedEvent = { ...event, date: parseInt(e.target.value, 10) };
updateEvent(index, updatedEvent);
}}
/>
</div> </div>
<Button <Button
type="settings" type="settings"

View File

@ -273,6 +273,6 @@
}, },
{ {
"name": "customEvents", "name": "customEvents",
"value": "[]" "value": "[{\"id\":\"widgets.greeting.christmas\",\"name\":\"Merry Christmas\",\"month\":12,\"date\":25},{\"id\":\"widgets.greeting.newyear\",\"name\":\"Happy New Year\",\"month\":1,\"date\":1},{\"id\":\"widgets.greeting.halloween\",\"name\":\"Happy Halloween\",\"month\":10,\"date\":31},{\"id\":\"widgets.greeting.halloween\",\"name\":\"\",\"month\":10,\"date\":31}]"
} }
] ]