import * as React from "react"; import { useNavigate } from "react-router-dom"; import { validateTimelineName } from "~src/services/timeline"; import { getHttpTimelineClient, HttpTimelineInfo } from "~src/http/timeline"; import OperationDialog from "../common/dialog/OperationDialog"; import { useUserLoggedIn } from "~src/services/user"; interface TimelineCreateDialogProps { open: boolean; close: () => void; } const TimelineCreateDialog: React.FC = (props) => { const navigate = useNavigate(); const user = useUserLoggedIn(); return ( { if (name.length === 0) { return { 0: "home.createDialog.noEmpty" }; } else if (name.length > 26) { return { 0: "home.createDialog.tooLong" }; } else if (!validateTimelineName(name)) { return { 0: "home.createDialog.badFormat" }; } else { return null; } }} onProcess={([name]): Promise => getHttpTimelineClient().postTimeline({ name }) } onSuccessAndClose={(timeline: HttpTimelineInfo) => { navigate(`${user.username}/${timeline.nameV2}`); }} failurePrompt={(e) => `${e as string}`} /> ); }; export default TimelineCreateDialog;