aboutsummaryrefslogtreecommitdiff
path: root/FrontEnd/src/pages/timeline/TimelineDeleteDialog.tsx
blob: d1af364b5d3a048dfa0dfb104186fac14a94d84d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import { useNavigate } from "react-router-dom";
import { Trans } from "react-i18next";

import { getHttpTimelineClient, HttpTimelineInfo } from "~src/http/timeline";

import { OperationDialog } from "~src/components/dialog";

interface TimelineDeleteDialog {
  timeline: HttpTimelineInfo;
}

export default function TimelineDeleteDialog({ timeline }: TimelineDeleteDialog) {
  const navigate = useNavigate();

  return (
    <OperationDialog
      title="timeline.deleteDialog.title"
      color="danger"
      inputPromptNode={
        <Trans
          i18nKey="timeline.deleteDialog.inputPrompt"
          values={{ name: timeline.nameV2 }}
        >
          0<code>1</code>2
        </Trans>
      }
      inputs={{
        inputs: [
          {
            key: "name",
            type: "text",
            label: "",
          },
        ],
        validator: ({ name }, errors) => {
          if (name !== timeline.nameV2) {
            errors.name = "timeline.deleteDialog.notMatch";
          }
        },
      }}
      onProcess={() => {
        return getHttpTimelineClient().deleteTimeline(
          timeline.owner.username,
          timeline.nameV2,
        );
      }}
      onSuccessAndClose={() => {
        navigate("/", { replace: true });
      }}
    />
  );
};

TimelineDeleteDialog;