import React, { useState } from "react"; import { Box, Typography } from "@mui/material"; import Button from "@mui/material/Button"; import Dialog from "@mui/material/Dialog"; import DialogActions from "@mui/material/DialogActions"; import DialogContent from "@mui/material/DialogContent"; import DialogContentText from "@mui/material/DialogContentText"; import DialogTitle from "@mui/material/DialogTitle"; import FormControl from "@mui/material/FormControl"; import FormControlLabel from "@mui/material/FormControlLabel"; import Radio from "@mui/material/Radio"; import RadioGroup from "@mui/material/RadioGroup"; import { useI18n } from "../../../contexts/I18nContext"; import { PageProps } from "../../../types"; import CancelSubscriptionButton from "./CancelSubscriptionButton"; export const SubscriptionsDialogOptions = ["cancel", "end"] as const; export type SubscriptionsDialogOption = (typeof SubscriptionsDialogOptions)[number]; export interface SubscriptionsDialogContentProps { option: SubscriptionsDialogOption; setOption: (option: SubscriptionsDialogOption) => void; } export const SubscriptionsDialogContent: React.FC = ({ option, setOption, }) => { const handleChange = (event: React.ChangeEvent) => { if ( !(SubscriptionsDialogOptions as unknown as string[]).includes( (event.target as HTMLInputElement).value, ) ) { throw Error("Invalid option"); } setOption((event.target as HTMLInputElement).value as SubscriptionsDialogOption); }; return ( } label="Cancel" value="cancel" /> Subscription will end on the end date of the subscription. End date is by default the next expiry date of an subscription. A cancelled subscription can be resumed until the End date is passed. } label="Immediate cancellation" value="end" /> Subscription will end immediately. The subscription cannot be resumed. ); }; export interface SubscriptionsDialogProps { open: boolean; setOpen: (open: boolean) => void; subscriptionId: number; refresh: PageProps["refresh"]; } export const SubscriptionsDialog: React.FC = ({ open, setOpen, subscriptionId, refresh, }) => { const [option, setOption] = useState("cancel"); const { t } = useI18n(); const handleClose = () => setOpen(false); return ( <> {t("Cancel subscription")} Choose how you want to cancel the subscription. {t("Cancel subscription")} ); }; export default SubscriptionsDialog;