// vpn_bridge_provider.dart — VpnBridge 平台分派
//
// macOS / Linux / Windows → DesktopVpnBridge（真实子进程）
// 其他平台（iOS / Web / 测试）→ VpnBridgeMock
import 'package:flutter/foundation.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';

import 'desktop_vpn_bridge.dart';
import 'vpn_bridge.dart';
import 'vpn_bridge_mock.dart';

// 通过 dart:io Platform 按平台选择实现。
// Web 平台须先检查 kIsWeb（dart:io 在 Web 上不可用）。
import 'dart:io' show Platform;

/// P1 方案B 开关:macOS 是否走原生 System Extension(VpnNativeBridge)而非 PoC 的
/// sudo 子进程(DesktopVpnBridge)。默认 false——待 PacketTunnel target/签名就绪、
/// 原生侧联调通过后置 true。见 docs/p1-macos-system-extension.md。
const bool kUseNativeVpnMacOS = true;

/// 全局单例 VpnBridge。Ref 生命周期内不变。
final vpnBridgeProvider = Provider<VpnBridge>((ref) {
  if (!kIsWeb) {
    if (Platform.isMacOS && kUseNativeVpnMacOS) {
      return VpnNativeBridge();
    }
    if (Platform.isMacOS || Platform.isLinux || Platform.isWindows) {
      return DesktopVpnBridge();
    }
  }
  return VpnBridgeMock();
});
