import { ElMessage } from "element-plus";

interface MessageOptions {
  message: string;
  type?: "success" | "error" | "warning" | "info";
  duration?: number;
  showClose?: boolean;
}

let isMessageShowing = false;
/**
 * @Description: 二次封装ElMessage组件
 * @author：汪明
 * @date 2024/3/15 15:55
 * @param {MessageOptions} options
 */
function bfShowMessage(options: MessageOptions) {
  if (isMessageShowing) {
    return;
  }

  isMessageShowing = true;

  const { message, type = "info", duration = 3000, showClose = true } = options;

  ElMessage({
    message: message,
    type: type,
    duration: duration,
    showClose: showClose,
    onClose: () => {
      isMessageShowing = false;
    },
  });
}

/**
 * @Description: 成功提示框
 * @author：汪明
 * @date 2024/3/15 15:55
 * @param {string} message
 * @param {number} duration 显示时间，单位为毫秒。 设为 0 则不会自动关闭 默认3000毫秒
 */
export function bfSuccessMessage(message: string, duration?: number) {
  bfShowMessage({ message, type: "success", duration });
}

/**
 * @Description: 错误提示框
 * @author：汪明
 * @date 2024/3/15 15:55
 * @param {string} message
 * @param {number} duration 显示时间，单位为毫秒。 设为 0 则不会自动关闭 默认3000毫秒
 */
export function bfErrorMessage(message: string, duration?: number) {
  bfShowMessage({ message, type: "error", duration });
}

/**
 * @Description: 警告提示框
 * @author：汪明
 * @date 2024/3/15 15:55
 * @param {string} message
 * @param {number} duration 显示时间，单位为毫秒。 设为 0 则不会自动关闭 默认3000毫秒
 */
export function bfWarningMessage(message: string, duration?: number) {
  bfShowMessage({ message, type: "warning", duration });
}

/**
 * @Description: 信息提示框
 * @author：汪明
 * @date 2024/3/15 15:55
 * @param {string} message
 * @param {number} duration 显示时间，单位为毫秒。 设为 0 则不会自动关闭 默认3000毫秒
 */
export function bfInfoMessage(message: string, duration?: number) {
  bfShowMessage({ message, type: "info", duration });
}

export default bfShowMessage;
