import React, { useEffect, useMemo } from "react"; import { Page } from "@/pages/base"; import { Button, Container, Stepper, Typography } from "@material-ui/core"; import { Link as RouterLink, Redirect } from "react-router-dom"; import { route } from "@/routing"; import { useTranslation } from "react-i18next"; import { useSelector } from "react-redux"; import { AppState } from "@/state/reducer"; import { getMissingStudentData, Student } from "@/data"; import { Deadlines, Edition, getEditionDeadlines } from "@/data/edition"; import { Step } from "@/components"; import { ProposalStep } from "@/pages/steps/proposal"; import { PlanStep } from "@/pages/steps/plan"; import { InsuranceState } from "@/state/reducer/insurance"; import { InsuranceStep } from "@/pages/steps/insurance"; import api from "@/api"; export const MainPage = () => { const { t } = useTranslation(); const student = useSelector(state => state.student); const deadlines = useSelector(state => getEditionDeadlines(state.edition as Edition)); // edition cannot be null at this point const insurance = useSelector(root => root.insurance); const missingStudentData = useMemo(() => student ? getMissingStudentData(student) : [], [student]); useEffect(() => void api.edition.available()) if (!student) { return ; } function *getSteps() { yield { missingStudentData.length > 0 && <>

{ t('steps.personal-data.info') }

    { missingStudentData.map(field =>
  • { t(`student.${ field }`) }
  • ) }
}
; yield ; yield ; if (insurance.required) yield ; yield yield } return { t("pages.my-internship.header") } { Array.from(getSteps()) } }