All files / client/src/views/helper HelperView.tsx

84.61% Statements 11/13
33.33% Branches 3/9
83.33% Functions 5/6
83.33% Lines 10/12

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                              356x 12x   28x   12x           12x 8x   8x   8x     8x                                       4x                            
import { ReactElement, useEffect, useState } from "react";
import { useTranslation } from "react-i18next";
import { PasswordManagement } from "client/views/helper/components/PasswordManagement";
import { loadSettings, loadSignupMessages } from "client/utils/loadData";
import { Button, ButtonStyle } from "client/components/Button";
import { PrivateSignupMessages } from "client/views/helper/components/PrivateSignupMessages";
import { ButtonGroup } from "client/components/ButtonGroup";
import { useAppSelector } from "client/utils/hooks";
import { LoginProvider } from "shared/config/eventConfigTypes";
 
enum HelperTool {
  PASSWORD_MANAGEMENT = "passwordManagement",
  PRIVATE_SIGNUP_MESSAGES = "privateSignupMessages",
}
 
export const HelperView = (): ReactElement => {
  const { t } = useTranslation();
 
  const loginProvider = useAppSelector((state) => state.admin.loginProvider);
 
  const [selectedTool, setSelectedTool] = useState<HelperTool>(
    loginProvider === LoginProvider.KOMPASSI
      ? HelperTool.PRIVATE_SIGNUP_MESSAGES
      : HelperTool.PASSWORD_MANAGEMENT,
  );
 
  useEffect(() => {
    const fetchData = async (): Promise<void> => {
      // This loads signup questions
      await loadSettings();
      // This loads signup question answers
      await loadSignupMessages();
    };
    // eslint-disable-next-line @typescript-eslint/no-floating-promises
    fetchData();
  }, []);
 
  return (
    <div>
      <ButtonGroup>
        {(loginProvider === LoginProvider.LOCAL ||
          loginProvider === LoginProvider.LOCAL_KOMPASSI) && (
          <Button
            disabled={selectedTool === HelperTool.PASSWORD_MANAGEMENT}
            buttonStyle={ButtonStyle.SECONDARY}
            onClick={() => setSelectedTool(HelperTool.PASSWORD_MANAGEMENT)}
          >
            {t("passwordManagement.helperPasswordManagement")}
          </Button>
        )}
 
        <Button
          disabled={selectedTool === HelperTool.PRIVATE_SIGNUP_MESSAGES}
          buttonStyle={ButtonStyle.SECONDARY}
          onClick={() => setSelectedTool(HelperTool.PRIVATE_SIGNUP_MESSAGES)}
        >
          {t("helperView.signupQuestionAnswers")}
        </Button>
      </ButtonGroup>
      {selectedTool === HelperTool.PASSWORD_MANAGEMENT && (
        <PasswordManagement />
      )}
      {selectedTool === HelperTool.PRIVATE_SIGNUP_MESSAGES && (
        <PrivateSignupMessages />
      )}
    </div>
  );
};