diff options
Diffstat (limited to 'public/projects/react-small-apps/apps/todos/src/store/users')
| -rw-r--r-- | public/projects/react-small-apps/apps/todos/src/store/users/users.slice.js | 39 | 
1 files changed, 39 insertions, 0 deletions
| diff --git a/public/projects/react-small-apps/apps/todos/src/store/users/users.slice.js b/public/projects/react-small-apps/apps/todos/src/store/users/users.slice.js new file mode 100644 index 0000000..ecce733 --- /dev/null +++ b/public/projects/react-small-apps/apps/todos/src/store/users/users.slice.js @@ -0,0 +1,39 @@ +import { createSlice, nanoid } from "@reduxjs/toolkit"; + +export const usersSlice = createSlice({ +  name: "users", +  initialState: [ +    { +      id: "demo", +      createdAt: new Date().toISOString(), +      username: "Demo", +      email: "demo@email.com", +      password: "demo", +    }, +  ], +  reducers: { +    addUser: { +      reducer: (state, action) => { +        state.push(action.payload); +      }, +      prepare: (username, email, password) => { +        const id = nanoid(); +        const createdAt = new Date().toISOString(); +        return { payload: { id, username, email, password, createdAt } }; +      }, +    }, +    deleteUser: (state, action) => { +      state.filter((user) => user.id !== action.payload); +    }, +    updateUser: (state, action) => { +      state.map((user) => { +        if (user.id !== action.payload.id) return user; +        return { ...user, ...action.payload }; +      }); +    }, +  }, +}); + +export const { addUser, deleteUser, updateUser } = usersSlice.actions; + +export default usersSlice.reducer; | 
