diff --git a/src/store/index.ts b/src/store/index.ts index e6fdbf0..1f724fa 100644 --- a/src/store/index.ts +++ b/src/store/index.ts @@ -1,9 +1,10 @@ import { configureStore } from "@reduxjs/toolkit"; import uiStateReducer from "./slices/uiState"; +import todoReducer from "./slices/todo"; const store = configureStore({ - reducer: { uiState: uiStateReducer }, + reducer: { uiState: uiStateReducer, todo: todoReducer }, }); export type RootState = ReturnType; diff --git a/src/store/slices/todo.ts b/src/store/slices/todo.ts new file mode 100644 index 0000000..359ccb8 --- /dev/null +++ b/src/store/slices/todo.ts @@ -0,0 +1,30 @@ +import { createSlice, PayloadAction } from "@reduxjs/toolkit"; + +import { TaskItemT } from "../../types"; + +const initialState: { tasks: TaskItemT[] } = { + tasks: [], +}; + +export const todoSlice = createSlice({ + name: "todo", + initialState, + reducers: { + add: (state, { payload }: PayloadAction) => { + state.tasks.push(payload); + }, + markDone: ( + state, + { payload }: PayloadAction<{ index: number; value: boolean }> + ) => { + state.tasks[payload.index].done = payload.value; + }, + remove: (state, { payload }: PayloadAction) => { + state.tasks.splice(payload); + }, + }, +}); + +export const { add, markDone, remove } = todoSlice.actions; + +export default todoSlice.reducer;