Skip to content

Instantly share code, notes, and snippets.

@nataliaconde
Created February 20, 2023 20:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nataliaconde/6650b81d255110cc057ef7d156472e40 to your computer and use it in GitHub Desktop.
Save nataliaconde/6650b81d255110cc057ef7d156472e40 to your computer and use it in GitHub Desktop.
// store/storage.js
import {create} from "zustand";
import {persist} from "zustand/middleware";
const useGlobalStore = create(
persist(
(set, get) => ({
tasks: [],
addTask: (params) => {
set((state) => ({
tasks: [...state.tasks, {id: state.tasks.length + 1, ...params}],
}));
},
deleteTask: (params) => {
set((state) => ({
tasks: state.tasks.filter((task) => task.id !== params),
}));
},
markTaskAsDone: (params) => {
set((state) => ({
tasks: state.tasks.map((task) => {
if (task.id === params) return {...task, isDone: true};
return task;
}),
}));
},
markTaskAsUndone: (params) => {
set((state) => ({
tasks: state.tasks.map((task) => {
if (task.id === params) return {...task, isDone: false};
return task;
}),
}));
},
clearTasks: () => {
set(() => ({
tasks: [],
}));
}
}),
{name: "nextjs-todo"}
)
);
export default useGlobalStore;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment