changes to groceries, todos

This commit is contained in:
ivic00
2024-09-12 23:04:41 +02:00
parent 53f7118656
commit f291f985a3
13 changed files with 444 additions and 137 deletions

View File

@ -56,6 +56,7 @@ interface IGroceryContext {
updateGroceryItem: (id: number, changes: Partial<IGrocery>) => void;
isAddingGrocery: boolean;
setIsAddingGrocery: (value: boolean) => void;
addGrocery: (grocery: IGrocery) => void;
}
const GroceryContext = createContext<IGroceryContext | undefined>(undefined);
@ -103,6 +104,17 @@ export const GroceryProvider: React.FC<{ children: React.ReactNode }> = ({
},
]);
const addGrocery = (grocery: IGrocery) => {
setGroceries((prevGroceries) => [
...prevGroceries,
{
...grocery,
id: prevGroceries.length ? prevGroceries[prevGroceries.length - 1].id + 1 : 0,
},
]);
};
const updateGroceryItem = (id: number, changes: Partial<IGrocery>) => {
setGroceries((prevGroceries) =>
prevGroceries.map((grocery) =>
@ -113,7 +125,7 @@ export const GroceryProvider: React.FC<{ children: React.ReactNode }> = ({
return (
<GroceryContext.Provider
value={{ groceries, iconMapping, updateGroceryItem, isAddingGrocery, setIsAddingGrocery }}
value={{ groceries, iconMapping, updateGroceryItem, isAddingGrocery, setIsAddingGrocery, addGrocery }}
>
{children}
</GroceryContext.Provider>

View File

@ -1,12 +1,22 @@
import { createContext, FC, ReactNode, useContext, useState } from "react";
export interface IToDo {
id: number;
title: string;
done: boolean;
date: Date;
date: Date | null;
points?: number;
rotate: boolean;
repeatType: string;
}
export const repeatOptions = [
{ label: "None", value: "None" },
{ label: "Every week", value: "Every week" },
{ label: "Once a month", value: "Once a month" },
{ label: "Once a year", value: "Once a year" },
];
interface IToDosContext {
toDos: IToDo[];
updateToDo: (id: number, changes: Partial<IToDo>) => void;
@ -25,6 +35,7 @@ export const ToDosContextProvider: FC<{ children: ReactNode }> = ({
done: false,
date: new Date(),
rotate: true,
repeatType: "Every week"
},
{
id: 1,
@ -32,6 +43,7 @@ export const ToDosContextProvider: FC<{ children: ReactNode }> = ({
done: false,
date: new Date(),
rotate: false,
repeatType: "Every week"
},
{
id: 2,
@ -39,6 +51,7 @@ export const ToDosContextProvider: FC<{ children: ReactNode }> = ({
done: false,
date: new Date(),
rotate: true,
repeatType: "Every week"
},
{
id: 3,
@ -47,6 +60,7 @@ export const ToDosContextProvider: FC<{ children: ReactNode }> = ({
date: new Date(Date.now() + 86400000),
points: 40,
rotate: false,
repeatType: "Every week"
},
{
id: 4,
@ -54,6 +68,7 @@ export const ToDosContextProvider: FC<{ children: ReactNode }> = ({
done: false,
date: new Date(Date.now() + 86400000),
rotate: false,
repeatType: "Once a Month"
},
{
id: 5,
@ -61,6 +76,7 @@ export const ToDosContextProvider: FC<{ children: ReactNode }> = ({
done: false,
date: new Date(Date.now() + 2 * 86400000),
rotate: true,
repeatType: "Once a Month"
},
{
id: 6,
@ -68,6 +84,23 @@ export const ToDosContextProvider: FC<{ children: ReactNode }> = ({
done: false,
date: new Date(Date.now() + 3 * 86400000),
rotate: false,
repeatType: "Once a year"
},
{
id: 7,
title: "Buy Nautica Voyage",
done: false,
date: null,
rotate: false,
repeatType: "None"
},
{
id: 8,
title: "Sell Dan's Xbox",
done: false,
date: null,
rotate: false,
repeatType: "None"
},
]);