# 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;
    }