All files / app/components LanguagePickerSettings.tsx

0% Statements 0/18
100% Branches 0/0
0% Functions 0/2
0% Lines 0/18

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                                                                                                                                       
import { Link as MuiLink, Typography, useMediaQuery } from "@mui/material";
import Button from "components/Button";
import { useTranslation } from "i18n";
import { LANGUAGE_MAP } from "i18n/constants";
import { getLangCookie } from "i18n/getLangCookie";
import { GLOBAL } from "i18n/namespaces";
import { useForm } from "react-hook-form";
import { theme } from "theme";
 
import useChangeDetailsFormStyles from "../features/auth/useChangeDetailsFormStyles";
import LanguagePickerSelect from "./LanguagePickerSelect";
 
const VOLUNTEER_PAGE_LINK = "https://couchers.org/volunteer";
 
interface ChangeLanguageFormData {
  newLanguage: string;
}
 
interface ChangeLanguageProps {
  // language: string;
  className?: string;
}
 
export default function LanguagePickerSettings({
  className,
}: ChangeLanguageProps) {
  const { t } = useTranslation([GLOBAL]);
  const formClasses = useChangeDetailsFormStyles();
  const isMobile = useMediaQuery(theme.breakpoints.down("md"));
 
  const { handleSubmit, reset: resetForm } = useForm<ChangeLanguageFormData>();
  const onSubmit = handleSubmit(() => {
    // TODO: send request to update cookie on backend w/ newLanguage code
    // TODO: uses i18n.changeLanguage to update UI language
    resetForm();
  });
 
  return (
    <div className={className}>
      <Typography variant="h2">
        {t("global:language_preference.form_title")}
      </Typography>
      <>
        <Typography variant="body1">
          {`${t("global:language_preference.current_preferred_language")}`}
          <strong>{LANGUAGE_MAP[getLangCookie()].name}</strong>
        </Typography>
        <Typography variant="body1" paragraph>
          <MuiLink
            href={VOLUNTEER_PAGE_LINK}
            target="_blank"
            rel="noreferrer noopener"
            underline="hover"
          >
            <strong>{t("global:language_preference.help_translate")}</strong>
          </MuiLink>
        </Typography>
        <form className={formClasses.form} onSubmit={onSubmit}>
          <LanguagePickerSelect displayMode="rect" />
          <Button fullWidth={isMobile} type="submit">
            {t("global:submit")}
          </Button>
        </form>
      </>
    </div>
  );
}