/**
 * Screen Wake Lock API — 검사 중 화면 꺼짐 방지 (PRD §3.1 공통 규칙)
 */
import { useEffect } from 'react';

export function useWakeLock(active = true) {
  useEffect(() => {
    if (!active) return;
    let lock: any = null;
    let released = false;
    const nav: { wakeLock?: { request: (t: string) => Promise<any> } } = navigator as any;
    if (nav.wakeLock?.request) {
      nav.wakeLock
        .request('screen')
        .then((l) => {
          if (released) l?.release?.().catch(() => {});
          else lock = l;
        })
        .catch(() => {});
    }
    const onVisibility = () => {
      if (document.visibilityState === 'visible' && nav.wakeLock?.request) {
        nav.wakeLock.request('screen').then((l) => { lock = l; }).catch(() => {});
      }
    };
    document.addEventListener('visibilitychange', onVisibility);
    return () => {
      released = true;
      document.removeEventListener('visibilitychange', onVisibility);
      lock?.release?.().catch(() => {});
    };
  }, [active]);
}
