All files / atlas/src/contexts RegisterContext.js

25% Statements 6/24
0% Branches 0/15
33.33% Functions 1/3
25% Lines 6/24

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83                                                                                        3x   3x                             3x 1x   1x             3x                      
import React, { createContext, useReducer, useContext } from "react";
 
function formReducer(state, action) {
  switch (action.type) {
    case "CHANGE_STEP": 
      return { ...state, step: action.payload };
    case "RESULT_CHANGE": 
      return { ...state, subtitle: action.payload };
    case "TOGGLE_WARNING_BYPASS": 
      return { ...state, bypassWarning: action.payload };
    case "USERNAME_CHANGE":
      return { ...state, username: action.payload };
    case "EMAIL_CHANGE":
      return { ...state, email: action.payload };
    case "PASSWORD_CHANGE":
      return { ...state, password: action.payload };
    case "SAGITTA_CHANGE":
        return { ...state, sagitta: action.payload };
    case "HEIGHT_CHANGE":
        return { ...state, height: action.payload };
    case "WEIGHT_CHANGE":
        return { ...state, weight: action.payload };
    case "SUBMIT":
      return { ...state, isSubmitLoading: true };
    case "SUBMISSION_RECIEVED":
      return { ...state, isSubmitLoading: false, isSubmissionReceived: true };
    case "RESET":
        return { result: "",
        username: "",
        email: "",
        password: "",
        height: "",
        weight: "",
        sagitta: false,
        isSubmitLoading: false,
        isSubmissionReceived: false,
        isSubmissionProcessed: false,
        bypassWarning: false, 
      };
    default:
      throw new Error();
  }
}
 
const RegistrationFormContext = createContext();
 
const regFormState = {
  step: 1,
  result: "",
  username: "",
  email: "",
  password: "",
  height: "",
  weight: "",
  sagitta: false,
  isSubmitLoading: false,
  isSubmissionReceived: false,
  isSubmissionProcessed: false,
  bypassWarning: false,
};
 
export const RegistrationFormProvider = ({ children }) => {
  const [state, dispatch] = useReducer(formReducer, regFormState);
 
  return (
    <RegistrationFormContext.Provider value={{ state, dispatch }}>
      {children}
    </RegistrationFormContext.Provider>
  );
};
 
export const useRegistrationFormState = () => {
  const context = useContext(RegistrationFormContext);
 
  if (context === undefined) {
    throw new Error(
      "userRegistrationFormState must be used within a RegistrationFormProvider"
    );
  }
 
  return context;
}