You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

authSlice.js 799B

12345678910111213141516171819202122232425262728293031
  1. import { createSlice } from "@reduxjs/toolkit";
  2. import { createSelector } from "reselect";
  3. const authSlice = createSlice({
  4. name: "auth",
  5. initialState: { user: null, token: null },
  6. reducers: {
  7. setCredentials: (state, action) => {
  8. const { user, jwt, refreshToken } = action.payload;
  9. state.user = user;
  10. state.token = { jwt, refreshToken };
  11. },
  12. logOut: (state) => {
  13. state.user = null;
  14. state.token = null;
  15. },
  16. },
  17. });
  18. export const { setCredentials, logOut } = authSlice.actions;
  19. export default authSlice.reducer;
  20. export const authSelector = (state) => state.auth;
  21. export const selectCurrentUser = createSelector(
  22. authSelector,
  23. (state) => state.user
  24. );
  25. export const selectCurrentToken = createSelector(
  26. authSelector,
  27. (state) => state.token
  28. );