UNPKG

@keycloakify/keycloak-admin-ui

Version:
54 lines 2.8 kB
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