import { useState, useCallback } from 'react';

// 广告奖励回调函数类型
type AdRewardCallback = () => void;

// 广告 Hook 返回接口
interface UseAdReturn {
    showAd: () => void;
    loadAd: () => void;
    loading: boolean;
    adAvailable: boolean; // 广告是否可用
}

// 广告 Hook 配置选项
interface UseAdOptions {
    onReward?: AdRewardCallback; // 观看完整广告后的奖励回调
    onClose?: (isEnded: boolean) => void; // 广告关闭回调，传入是否完整观看
}

// H5版本的广告Hook - 不需要广告功能，直接给予奖励
export function useAd(options?: UseAdOptions): UseAdReturn {
    const [loading, setLoading] = useState(false);
    const [adAvailable] = useState(false); // H5版本不支持广告

    // 显示广告方法 - H5版本直接给予奖励
    const showAd = useCallback(() => {
        console.log('H5版本不支持广告，直接给予奖励');
        setLoading(true);

        // 模拟广告播放时间
        setTimeout(() => {
            setLoading(false);
            options?.onReward?.();
            options?.onClose?.(true); // 模拟广告播放完成
        }, 1000);
    }, [options]);

    // 加载广告方法 - H5版本无需实际加载
    const loadAd = useCallback(() => {
        console.log('H5版本不需要加载广告');
    }, []);

    return {
        showAd,
        loadAd,
        loading,
        adAvailable
    };
}
