import { KEY_SYSTEMS, DRMCapabilities } from '../types/DRMTypes';

export class BrowserDetector {
  static async detectCapabilities(): Promise<DRMCapabilities> {
    const caps: DRMCapabilities = { widevine: false, fairplay: false, playready: false };
    if (typeof navigator === 'undefined' || !navigator.requestMediaKeySystemAccess) {
      return caps;
    }
    const basicConfig: MediaKeySystemConfiguration[] = [{
      initDataTypes: ['cenc'],
      videoCapabilities: [{ contentType: 'video/mp4; codecs="avc1.42E01E"' }],
    }];
    const checks: Array<[keyof DRMCapabilities, string]> = [
      ['widevine', KEY_SYSTEMS.WIDEVINE],
      ['playready', KEY_SYSTEMS.PLAYREADY],
    ];
    for (const [key, system] of checks) {
      try {
        await navigator.requestMediaKeySystemAccess(system, basicConfig);
        caps[key] = true;
      } catch { /* not supported */ }
    }
    // FairPlay detection via WebKit
    if (typeof (window as any).WebKitMediaKeys !== 'undefined') {
      caps.fairplay = true;
    }
    return caps;
  }

  static isSafari(): boolean {
    if (typeof navigator === 'undefined') return false;
    const ua = navigator.userAgent;
    return /Safari/.test(ua) && !/Chrome/.test(ua);
  }
}
