@keycloakify/keycloak-admin-ui
Version:
Repackaged Keycloak Admin UI
54 lines • 2.8 kB
JavaScript
import { jsx as _jsx } from "react/jsx-runtime";
import { AlertVariant, Button, ButtonVariant, Form, Modal, ModalVariant, } from "@patternfly/react-core";
import { useEffect } from "react";
import { FormProvider, useForm } from "react-hook-form";
import { useTranslation } from "react-i18next";
import { useNavigate } from "react-router-dom";
import { useAdminClient } from "../admin-client";
import { useAlerts } from "../ui-shared";
import { useRealm } from "../context/realm-context/RealmContext";
import { NameDescription } from "../authentication/form/NameDescription";
import { toFlow } from "../authentication/routes/Flow";
export const DuplicateFlowModal = ({ name, description, toggleDialog, onComplete, }) => {
const { adminClient } = useAdminClient();
const { t } = useTranslation();
const form = useForm({ mode: "onChange" });
const { setValue, getValues, handleSubmit } = form;
const { addAlert, addError } = useAlerts();
const navigate = useNavigate();
const { realm } = useRealm();
useEffect(() => {
setValue("alias", t("copyOf", { name }));
setValue("description", description);
}, [name, description]);
const onSubmit = async () => {
const form = getValues();
try {
await adminClient.authenticationManagement.copyFlow({
flow: name,
newName: form.alias,
});
const newFlow = (await adminClient.authenticationManagement.getFlows()).find((flow) => flow.alias === form.alias);
if (form.description !== description) {
newFlow.description = form.description;
await adminClient.authenticationManagement.updateFlow({ flowId: newFlow.id }, newFlow);
}
addAlert(t("copyFlowSuccess"), AlertVariant.success);
navigate(toFlow({
realm,
id: newFlow.id,
usedBy: "notInUse",
builtIn: newFlow.builtIn ? "builtIn" : undefined,
}));
}
catch (error) {
addError("copyFlowError", error);
}
onComplete();
};
return (_jsx(Modal, { title: t("duplicateFlow"), onClose: toggleDialog, variant: ModalVariant.small, actions: [
_jsx(Button, { "data-testid": "confirm", type: "submit", form: "duplicate-flow-form", children: t("duplicate") }, "confirm"),
_jsx(Button, { "data-testid": "cancel", variant: ButtonVariant.link, onClick: toggleDialog, children: t("cancel") }, "cancel"),
], isOpen: true, children: _jsx(FormProvider, { ...form, children: _jsx(Form, { id: "duplicate-flow-form", onSubmit: handleSubmit(onSubmit), isHorizontal: true, children: _jsx(NameDescription, {}) }) }) }));
};
//# sourceMappingURL=DuplicateFlowModal.js.map