import { ElMessage } from 'element-plus'

// 传统降级复制方法
function fallbackCopyText(text, typeName = '内容') {
  const textarea = document.createElement('textarea');
  textarea.value = text;
  // 防止页面滚动或闪烁
  textarea.style.position = 'fixed';
  textarea.style.opacity = '0';
  textarea.style.left = '-9999px'; 
  document.body.appendChild(textarea);
  
  try {
    textarea.select();
    textarea.setSelectionRange(0, 99999); // 兼容移动端
    const successful = document.execCommand('copy');
    if (successful) {
      ElMessage.success(`${typeName}已复制`);
    } else {
      throw new Error('execCommand 返回失败');
    }
  } catch (err) {
    console.error('传统方法复制失败：', err);
    ElMessage.error('复制失败，请手动复制');
  } finally {
    document.body.removeChild(textarea);
  }
}

// 主导出函数，接收 text 和 typeName 两个参数
export default function copyToClipboard(text, typeName = '内容') {
  // 1. 判断是否在安全上下文(HTTPS/localhost) 且 浏览器支持 Clipboard API
  if (window.isSecureContext && navigator.clipboard && navigator.clipboard.writeText) {
    navigator.clipboard.writeText(text).then(() => {
      ElMessage.success(`${typeName}已复制`);
    }).catch((err) => {
      console.error('Clipboard API 写入失败，降级处理：', err);
      // API 调用失败（如权限被拒），自动降级到传统方案
      fallbackCopyText(text, typeName);
    });
  } else {
    // 2. 非安全环境（如 HTTP）或不支持新 API，直接使用传统降级方案
    fallbackCopyText(text, typeName);
  }
}