import { WebPlugin } from '@capacitor/core';

// 定义插件
export class WebOpener extends WebPlugin {
  async open(options) {
    const { url, params = {} } = options;

    // 1. 如果是 Web 环境，直接 window.open
    if (this.getPlatform() === 'web') {
      const urlObj = new URL(url);
      Object.entries(params).forEach(([key, value]) => {
        urlObj.searchParams.append(key, value);
      });
      window.open(urlObj.toString(), '_blank');
      return;
    }

    // 2. 如果是 Android/iOS，注入 JS 参数
    const jsCode = `window.capacitorParams = ${JSON.stringify(params)};`;
    
    try {
      // 在 WebView 中执行 JS（Capacitor 提供的 API）
      await this.evalJs(jsCode);
      
      // 使用 Capacitor 的 Browser 模块打开网页
      const { Browser } = await import('@capacitor/browser');
      await Browser.open({ url });
    } catch (error) {
      console.error('WebOpener 插件出错:', error);
      throw error;
    }
  }

  // 通用的 JS 代码执行方法（兼容 Android/iOS）
  async evalJs(jsCode) {
    if (window.Capacitor?.Platform === 'android') {
      // Android 方式
      await window.Capacitor.Plugins.WebView.evaluateJavaScript({
        code: jsCode,
      });
    } else if (window.Capacitor?.Platform === 'ios') {
      // iOS 方式
      await window.Capacitor.Plugins.WebView.evaluateJavaScript({
        code: jsCode,
      });
    } else {
      // 其他环境（如测试）
      console.warn('当前环境无法执行 JS 注入:', jsCode);
    }
  }
}

// 注册插件（让 Capacitor 能识别）
const WebOpener = new WebOpener();
export { WebOpener };