import { A as AuthView } from "./AuthView-BaqU1uAk.js";
import { d as defineComponent, v as useSettingsStore, u as useUsersStore, a as useToast, r as ref, x as computed, c as useI18n, e as createBlock, g as openBlock } from "./index-Cb_lQ9m_.js";
import "./Logo-CfIAVyXK.js";
const _sfc_main = /* @__PURE__ */ defineComponent({
  __name: "ForgotMyPasswordView",
  setup(__props) {
    const settingsStore = useSettingsStore();
    const usersStore = useUsersStore();
    const toast = useToast();
    const locale = useI18n();
    const loading = ref(false);
    const formConfig = computed(() => {
      const EMAIL_INPUTS = [
        {
          name: "email",
          properties: {
            label: locale.baseText("auth.email"),
            type: "email",
            required: true,
            validationRules: [{ name: "VALID_EMAIL" }],
            autocomplete: "email",
            capitalize: true,
            focusInitially: true
          }
        }
      ];
      const NO_SMTP_INPUTS = [
        {
          name: "no-smtp-warning",
          properties: {
            label: locale.baseText("forgotPassword.noSMTPToSendEmailWarning"),
            type: "info"
          }
        }
      ];
      const DEFAULT_FORM_CONFIG = {
        title: locale.baseText("forgotPassword.recoverPassword"),
        redirectText: locale.baseText("forgotPassword.returnToSignIn"),
        redirectLink: "/signin"
      };
      if (settingsStore.isSmtpSetup) {
        return {
          ...DEFAULT_FORM_CONFIG,
          buttonText: locale.baseText("forgotPassword.getRecoveryLink"),
          inputs: EMAIL_INPUTS
        };
      }
      return {
        ...DEFAULT_FORM_CONFIG,
        inputs: NO_SMTP_INPUTS
      };
    });
    const isFormWithEmail = (values) => {
      return "email" in values;
    };
    const onSubmit = async (values) => {
      if (!isFormWithEmail(values)) {
        return;
      }
      try {
        loading.value = true;
        await usersStore.sendForgotPasswordEmail(values);
        toast.showMessage({
          type: "success",
          title: locale.baseText("forgotPassword.recoveryEmailSent"),
          message: locale.baseText("forgotPassword.emailSentIfExists", {
            interpolate: { email: values.email }
          })
        });
      } catch (error) {
        let message = locale.baseText("forgotPassword.smtpErrorContactAdministrator");
        if (error.httpStatusCode) {
          const { httpStatusCode: status } = error;
          if (status === 429) {
            message = locale.baseText("forgotPassword.tooManyRequests");
          } else if (error.httpStatusCode === 422) {
            message = locale.baseText(error.message);
          }
          toast.showMessage({
            type: "error",
            title: locale.baseText("forgotPassword.sendingEmailError"),
            message
          });
        }
      }
      loading.value = false;
    };
    return (_ctx, _cache) => {
      return openBlock(), createBlock(AuthView, {
        form: formConfig.value,
        "form-loading": loading.value,
        onSubmit
      }, null, 8, ["form", "form-loading"]);
    };
  }
});
export {
  _sfc_main as default
};
