import { useSubtitleAction } from "@/apis/hooks"; import { useModals, withModal } from "@/modules/modals"; import { task } from "@/modules/task"; import { faMinus, faPlus } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { Button, Divider, Group, NumberInput, Stack } from "@mantine/core"; import { useForm } from "@mantine/hooks"; import { FunctionComponent } from "react"; const TaskName = "Changing Time"; function convertToAction(h: number, m: number, s: number, ms: number) { return `shift_offset(h=${h},m=${m},s=${s},ms=${ms})`; } interface Props { selections: FormType.ModifySubtitle[]; onSubmit?: VoidFunction; } const TimeOffsetForm: FunctionComponent = ({ selections, onSubmit }) => { const { mutateAsync } = useSubtitleAction(); const modals = useModals(); const form = useForm({ initialValues: { positive: true, hour: 0, min: 0, sec: 0, ms: 0, }, validationRules: { hour: (v) => v >= 0, min: (v) => v >= 0, sec: (v) => v >= 0, ms: (v) => v >= 0, }, }); const enabled = form.values.hour > 0 || form.values.min > 0 || form.values.sec > 0 || form.values.ms > 0; return (
{ const action = convertToAction(hour, min, sec, ms); selections.forEach((s) => task.create(s.path, TaskName, mutateAsync, { action, form: s, }) ); onSubmit?.(); modals.closeSelf(); })} >
); }; export const TimeOffsetModal = withModal(TimeOffsetForm, "time-offset", { title: "Change Time", }); export default TimeOffsetForm;