import { _decorator, Node, Button } from 'cc';
import { BaseView } from 'db://assets/scripts/core/BaseView';
import { ViewManager } from 'db://assets/scripts/core/ViewManager';
import { WxSDK, checkPrivacySetting, requirePrivacyAuthorize } from 'db://assets/scripts/utils/WxSDK';
const { ccclass, property } = _decorator;

/**
 * 首页组件
 * 继承 BaseView，实现页面生命周期
 */
@ccclass('PageHome')
export class PageHome extends BaseView {
    @property({ type: Node, tooltip: '开始游戏按钮' })
    startGameBtn: Node | null = null;

    @property({ type: Node, tooltip: 'PK按钮' })
    pkBtn: Node | null = null;

    /**
     * 页面首次加载时调用
     */
    onViewLoad(): void {
        console.log('[PageHome] onViewLoad');
        this._initButtons();
        this._initWxShare();
        // 检查隐私授权
        this._checkPrivacyAuthorization();
    }

    /**
     * 初始化微信分享功能
     */
    private _initWxShare(): void {
        WxSDK.initShare({
            title: '写英语',
            imageUrl: '',
            query: ''
        });
    }

    /**
     * 检查隐私授权状态
     */
    private async _checkPrivacyAuthorization(): Promise<void> {
        if (!WxSDK.isWechat()) {
            console.log('[PageHome] 非微信环境，跳过隐私授权检查');
            return;
        }

        try {
            const { needAuthorization } = await checkPrivacySetting();
            if (needAuthorization) {
                console.log('[PageHome] 用户未授权隐私，引导授权');
                await requirePrivacyAuthorize();
            } else {
                console.log('[PageHome] 用户已授权隐私');
            }
        } catch (err) {
            console.warn('[PageHome] 隐私授权检查异常:', err);
        }
    }

    /**
     * 初始化按钮事件
     */
    private _initButtons(): void {
        if (this.startGameBtn) {
            this.startGameBtn.on(Button.EventType.CLICK, this._onStartGameClick, this);
        }
        if (this.pkBtn) {
            this.pkBtn.on(Button.EventType.CLICK, this._onPkClick, this);
        }
    }

    /**
     * 开始游戏按钮点击回调
     */
    private _onStartGameClick(): void {
        console.log('[PageHome] 开始游戏按钮点击');
        ViewManager.instance.open('PageLevel');
    }

    /**
     * PK按钮点击回调
     */
    private _onPkClick(): void {
        console.log('[PageHome] PK按钮点击');
        ViewManager.instance.open('PageWriteLevels');
    }

    /**
     * 页面每次显示时调用
     */
    onViewShow(): void {
        console.log('[PageHome] onViewShow');
    }

    /**
     * 页面隐藏时调用
     */
    onViewHide(): void {
        console.log('[PageHome] onViewHide');
    }

    /**
     * 页面销毁时调用
     */
    onViewDestroy(): void {
        console.log('[PageHome] onViewDestroy');
        // 移除按钮事件监听
        if (this.startGameBtn) {
            this.startGameBtn.off(Button.EventType.CLICK, this._onStartGameClick, this);
        }
        if (this.pkBtn) {
            this.pkBtn.off(Button.EventType.CLICK, this._onPkClick, this);
        }
    }
}
