import React from 'react';
import { Scan } from '@nutui/icons-react-taro';
import Taro from '@tarojs/taro';
import { useUnifiedQRScan, ScanType, type UnifiedScanResult } from '@/hooks/useUnifiedQRScan';

export interface UnifiedQRButtonProps {
  /** 按钮类型 */
  type?: 'primary' | 'success' | 'warning' | 'danger' | 'default';
  /** 按钮大小 */
  size?: 'large' | 'normal' | 'small';
  /** 按钮文本 */
  text?: string;
  /** 是否显示图标 */
  showIcon?: boolean;
  /** 自定义样式类名 */
  className?: string;
  /** 扫码成功回调 */
  onSuccess?: (result: UnifiedScanResult) => void;
  /** 扫码失败回调 */
  onError?: (error: string) => void;
  /** 是否使用页面模式（跳转到专门页面） */
  usePageMode?: boolean;
}

/**
 * 统一扫码按钮组件
 * 支持登录和核销两种类型的二维码扫描
 */
const UnifiedQRButton: React.FC<UnifiedQRButtonProps> = ({
  onSuccess,
  onError,
  usePageMode = false
}) => {
  const { startScan, canScan, result } = useUnifiedQRScan();
  console.log(result,'useUnifiedQRScan>>result')
  // 处理点击事件
  const handleClick = async () => {
    if (usePageMode) {
      // 跳转到专门的统一扫码页面
      if (canScan()) {
        Taro.navigateTo({
          url: '/passport/unified-qr/index'
        });
      } else {
        Taro.showToast({
          title: '请先登录小程序',
          icon: 'error'
        });
      }
      return;
    }

    // 直接执行扫码
    try {
      const scanResult = await startScan();
      if (scanResult) {
        onSuccess?.(scanResult);

        // 根据扫码类型给出不同的后续提示
        if (scanResult.type === ScanType.VERIFICATION) {
          // 核销成功后可以继续扫码
          setTimeout(() => {
            Taro.showModal({
              title: '核销成功',
              content: '是否继续扫码核销其他礼品卡？',
              success: (res) => {
                if (res.confirm) {
                  handleClick(); // 递归调用继续扫码
                }
              }
            });
          }, 2000);
        }
      }
    } catch (error: any) {
      onError?.(error.message || '扫码失败');
    }
  };

  return (
    <Scan className={'text-white'} onClick={handleClick} />
  );
};

export default UnifiedQRButton;
