import { _decorator, Component, Node } from 'cc';
import NoSleep from 'nosleep.js';
const { ccclass,property } = _decorator;

@ccclass('AntiSleepManager')
export class AntiSleepManager extends Component {
    private noSleep: NoSleep | null = null;
    private wakeLock: any = null;
    _enabled: boolean = false;

    onLoad() {
        this.noSleep = new NoSleep();
    }

    clickStart(){
        if(this._enabled) return

        this.enableWakeLock();
    }

    async enableWakeLock() {

        this._enabled = true

        try {
            if ('wakeLock' in navigator) {
                this.wakeLock = await (navigator as any).wakeLock.request('screen');
                // console.log('✅ 屏幕常亮已启用 (Wake Lock API)');

                // 处理页面切换时丢失锁
                document.addEventListener('visibilitychange', async () => {
                    if (document.visibilityState === 'visible') {
                        this.wakeLock = await (navigator as any).wakeLock.request('screen');
                    }
                });
            } else {
                this.noSleep?.enable();
                // console.log('✅ 屏幕常亮已启用 (NoSleep.js)');
            }
        } catch (err) {
            this._enabled = false
            // console.error('❌ 启用屏幕常亮失败:', err);
        }
    }

    disableWakeLock() {
        if (this.wakeLock) {
            this.wakeLock.release();
            this.wakeLock = null;
            // console.log('🔒 Wake Lock 已关闭');
        }
        if (this.noSleep) {
            this.noSleep.disable();
            // console.log('🔒 NoSleep 已关闭');
        }
    }

    onDestroy() {
        // this.disableWakeLock();
    }
}


