/**
 * 全局Toast工具函数
 * 注意：这些函数只能在ToastProvider内部的组件中使用
 * 如果需要在ToastProvider外部使用，建议使用其他全局状态管理方案
 */
let globalToastController = null;

// 预置的 options 常量，避免频繁创建对象
const DEFAULT_DURATION = 2000;

/**
 * 设置全局toast控制器
 * 通常在根组件中调用一次
 */
export const setGlobalToastController = (controller) => {
  globalToastController = controller;
};

// 复用的 show 方法，减少重复逻辑
const showTypedToast = (type, message, duration = DEFAULT_DURATION) => {
  if (globalToastController) {
    globalToastController.show('', {
      message,
      duration,
      customData: { type },
    });
  } else {
    console.warn('Global toast controller not initialized. Please call setGlobalToastController first.');
  }
};

/**
 * 全局显示成功提示
 */
export const showSuccess = (message, duration = DEFAULT_DURATION) => {
  showTypedToast('success', message, duration);
};

/**
 * 全局显示错误提示
 */
export const showError = (message, duration = DEFAULT_DURATION) => {
  showTypedToast('error', message, duration);
};

/**
 * 全局显示警告提示
 */
export const showWarning = (message, duration = DEFAULT_DURATION) => {
  showTypedToast('warning', message, duration);
};

/**
 * 全局显示信息提示
 */
export const showInfo = (message, duration = DEFAULT_DURATION) => {
  showTypedToast('info', message, duration);
};