All files / client/src/views/admin/components SignupStrategySelector.tsx

90.9% Statements 10/11
100% Branches 0/0
100% Functions 3/3
90% Lines 9/10

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              356x 112x 71x 71x 71x   71x                               4x 4x     5x              
import { ChangeEvent, ReactElement, useState } from "react";
import { useTranslation } from "react-i18next";
import { EventSignupStrategy } from "shared/config/eventConfigTypes";
import { Dropdown } from "client/components/Dropdown";
import { useAppDispatch, useAppSelector } from "client/utils/hooks";
import { submitSetSignupStrategy } from "client/views/admin/adminThunks";
 
export const SignupStrategySelector = (): ReactElement => {
  const signupStrategy = useAppSelector((state) => state.admin.signupStrategy);
  const { t } = useTranslation();
  const dispatch = useAppDispatch();
  const [loading, setLoading] = useState<boolean>(false);
 
  const strategies = [
    { value: EventSignupStrategy.DIRECT, title: t("strategies.direct") },
    { value: EventSignupStrategy.LOTTERY, title: t("strategies.lottery") },
    {
      value: EventSignupStrategy.LOTTERY_AND_DIRECT,
      title: t("strategies.lottery+direct"),
    },
  ];
 
  return (
    <div>
      <span>{t("admin.signupStrategy")}</span>{" "}
      <Dropdown
        options={strategies}
        selectedValue={signupStrategy}
        onChange={async (event: ChangeEvent<HTMLSelectElement>) => {
          setLoading(true);
          await dispatch(
            submitSetSignupStrategy(event.target.value as EventSignupStrategy),
          );
          setLoading(false);
        }}
        loading={loading}
      />
    </div>
  );
};