import { useContext, useCallback, createElement } from "react";
import { useShowToast, Button } from "@contember/ui";
import { useDisableOtp } from "../../mutations/otp/disableOtp.js";
import { useRedirect } from "../../../routing/binding/useRedirect.js";
import { IdentityRefreshContext } from "../../../components/Identity/IdentityProvider.js";
import { useForm } from "../../lib/useForm.js";
const initialValues = {};
const DisableOtpForm = ({ redirectOnSuccess }) => {
  const redirect = useRedirect();
  const addToast = useShowToast();
  const disableOtp = useDisableOtp();
  const refreshIdentity = useContext(IdentityRefreshContext);
  const { isSubmitting, onSubmit } = useForm(initialValues, useCallback(async () => {
    if (!confirm("Are you sure?")) {
      return;
    }
    const response = await disableOtp({});
    if (response.ok) {
      addToast({
        type: "success",
        message: `Two-factor authentication has been disabled`,
        dismiss: true
      });
      refreshIdentity();
      redirectOnSuccess && redirect(redirectOnSuccess);
    } else {
      switch (response.error.code) {
        case "OTP_NOT_ACTIVE":
          return addToast({ message: `Two factor is not active`, type: "error" });
      }
    }
  }, [addToast, disableOtp, redirect, redirectOnSuccess, refreshIdentity]));
  return /* @__PURE__ */ createElement("form", {
    onSubmit
  }, /* @__PURE__ */ createElement(Button, {
    intent: "danger",
    type: "submit",
    disabled: isSubmitting
  }, "Disable two-factor"));
};
export { DisableOtpForm };
//# sourceMappingURL=DisableOtpForm.js.map
