reducer.ts 1021 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import { Reducer } from "react";
  2. import { Action, ActionType } from "./actionTypes";
  3. export const defaultState = {
  4. loggingIn: false,
  5. loggedIn: false,
  6. userToken: null,
  7. username: null,
  8. };
  9. export type State = {
  10. loggingIn?: Boolean;
  11. loggedIn?: Boolean;
  12. userToken?: string;
  13. username?: string;
  14. error?: string;
  15. };
  16. const reducer: Reducer<State, Action> = (state, action) => {
  17. switch (action.type) {
  18. case "LOGIN_REQUEST":
  19. return {
  20. ...state,
  21. loggingIn: true,
  22. loggedIn: false,
  23. username: action.username,
  24. };
  25. case "LOGIN_SUCCESS":
  26. return {
  27. loggedIn: true,
  28. loggingIn: false,
  29. username: action.username,
  30. userToken: action.userToken,
  31. };
  32. case "LOGIN_FAILURE_DISMISS":
  33. return {
  34. ...state,
  35. error: undefined,
  36. };
  37. case "LOGIN_FAILURE":
  38. return {
  39. error: action.error,
  40. };
  41. case "LOGOUT":
  42. return {};
  43. default:
  44. return state;
  45. }
  46. };
  47. export default reducer;