import 'dart:io';
// import 'package:ini/ini.dart';
import '../core/mining_manager.dart';
import '../utils/ini_utils.dart';
import '../utils/path_utils.dart';

class ConfigService {
  String get _configFile => PathUtils.binFile('mining.windows.conf');

  /// 读取配置文件内容
  Future<String> readConfig() async {
    try {
      final file = File(_configFile);
      if (await file.exists()) {
        return await file.readAsString();
      }
    } catch (e) {
      // 静默失败，返回空字符串
    }
    return '';
  }

  /// 保存配置文件
  Future<bool> saveConfig(String content) async {
    try {
      final file = File(_configFile);
      await file.writeAsString(content);
      return true;
    } catch (e) {
      return false;
    }
  }

  /// 解析配置文件并返回 MiningConfig
  Future<MiningConfig?> parseMiningConfig() async {
    try {
      final content = await readConfig();
      if (content.isEmpty) {
        return null;
      }

      final config = parseIni(content);

      // ini 2.x: 通过 get(section, option) 访问键值
      final lolMinerPath = (config.get('lolminer', 'path') ?? '').trim();
      final rigelPath = (config.get('rigel', 'path') ?? '').trim();
      final bzMinerPath = (config.get('bzminer', 'path') ?? '').trim();
      final proxyEnabled = (config.get('proxy', 'proxy') ?? '').toLowerCase() == 'true';
      
      // 读取服务器和更新URL
      final serverUrl = (config.get('client', 'server_url') ?? '').trim();
      final updateUrl = (config.get('client', 'update_url') ?? '').trim();

      return MiningConfig(
        lolMinerPath: lolMinerPath.isEmpty ? null : lolMinerPath,
        rigelPath: rigelPath.isEmpty ? null : rigelPath,
        bzMinerPath: bzMinerPath.isEmpty ? null : bzMinerPath,
        proxyEnabled: proxyEnabled,
        serverUrl: serverUrl.isEmpty ? null : serverUrl,
        updateUrl: updateUrl.isEmpty ? null : updateUrl,
      );
    } catch (e) {
      // 静默失败，返回 null
      return null;
    }
  }
}
