import { useSelector } from "react-redux"; import { AppState } from "@/state/reducer"; import { getSubmissionStatus, SubmissionState, SubmissionStatus } from "@/state/reducer/submission"; import { useTranslation } from "react-i18next"; import { Box, Button, ButtonProps, StepProps } from "@material-ui/core"; import { FileDownloadOutline, FileUploadOutline } from "mdi-material-ui/index"; import { route } from "@/routing"; import { Link as RouterLink, useHistory } from "react-router-dom"; import { Actions, Step } from "@/components"; import React, { HTMLProps } from "react"; import { Alert, AlertTitle } from "@material-ui/lab"; import { ContactAction, Status } from "@/pages/steps/common"; import { Description as DescriptionIcon } from "@material-ui/icons"; import { useDeadlines } from "@/hooks"; import { InternshipDocument } from "@/api/dto/internship-registration"; import { FileInfo } from "@/components/fileinfo"; import { useSpacing } from "@/styles"; import { AcceptanceActions } from "@/components/acceptance-action"; import { InternshipPlanActions, useDispatch } from "@/state/actions"; const PlanActions = () => { const status = useSelector(state => getSubmissionStatus(state.plan)); const { t } = useTranslation(); const dispatch = useDispatch(); const history = useHistory(); const FormAction = ({ children = t('steps.plan.submit'), ...props }: ButtonProps) => const TemplateAction = (props: ButtonProps) => const handleAccept = (comment?: string) => { dispatch({ type: InternshipPlanActions.Approve, comment: comment || null }); history.push(route("home")); } const handleDiscard = (comment: string) => { dispatch({ type: InternshipPlanActions.Decline, comment: comment }); history.push(route("home")); } switch (status) { case "awaiting": return case "accepted": return { t('send-again') } case "declined": return { t('fix-errors') } case "draft": return default: return } } export const PlanComment = (props: HTMLProps) => { const { comment, declined } = useSelector(state => state.plan); const { t } = useTranslation(); return comment ? { t('comments') } { comment } : null } export const PlanStep = (props: StepProps) => { const { t } = useTranslation(); const submission = useSelector(state => state.plan); const document = useSelector(state => state.plan.document as InternshipDocument); const spacing = useSpacing(2); const status = getSubmissionStatus(submission); const deadlines = useDeadlines(); const { sent, declined, comment } = submission; return }>

{ t(`steps.plan.info.${ status }`) }

{ comment && } { document && }
; }