forked from keycloak/keycloak
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Page.tsx
67 lines (64 loc) · 2.17 KB
/
Page.tsx
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
55
56
57
58
59
60
61
62
63
64
65
66
67
import { ButtonVariant, DropdownItem } from "@patternfly/react-core";
import { useTranslation } from "react-i18next";
import { useNavigate, useParams } from "react-router-dom";
import { adminClient } from "../admin-client";
import { useAlerts } from "../components/alert/Alerts";
import { useConfirmDialog } from "../components/confirm-dialog/ConfirmDialog";
import { ViewHeader } from "../components/view-header/ViewHeader";
import { useServerInfo } from "../context/server-info/ServerInfoProvider";
import { PageHandler } from "./PageHandler";
import { PAGE_PROVIDER } from "./PageList";
import { PageParams, toPage } from "./routes";
import { useRealm } from "../context/realm-context/RealmContext";
export default function Page() {
const { t } = useTranslation();
const { componentTypes } = useServerInfo();
const { realm } = useRealm();
const pages = componentTypes?.[PAGE_PROVIDER];
const navigate = useNavigate();
const { id, providerId } = useParams<PageParams>();
const { addAlert, addError } = useAlerts();
const page = pages?.find((p) => p.id === providerId);
if (!page) {
throw new Error(t("notFound"));
}
const [toggleDeleteDialog, DeleteConfirm] = useConfirmDialog({
titleKey: "itemDeleteConfirmTitle",
messageKey: "itemDeleteConfirm",
continueButtonLabel: "delete",
continueButtonVariant: ButtonVariant.danger,
onConfirm: async () => {
try {
await adminClient.components.del({
id: id!,
});
addAlert(t("itemDeletedSuccess"));
navigate(toPage({ realm, providerId: providerId! }));
} catch (error) {
addError("itemSaveError", error);
}
},
});
return (
<>
<DeleteConfirm />
<ViewHeader
titleKey={id || t("createItem")}
dropdownItems={
id
? [
<DropdownItem
data-testid="delete-item"
key="delete"
onClick={() => toggleDeleteDialog()}
>
{t("delete")}
</DropdownItem>,
]
: undefined
}
/>
<PageHandler providerType={PAGE_PROVIDER} id={id} page={page} />
</>
);
}