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 readConfig() async { try { final file = File(_configFile); if (await file.exists()) { return await file.readAsString(); } } catch (e) { // 静默失败,返回空字符串 } return ''; } /// 保存配置文件 Future saveConfig(String content) async { try { final file = File(_configFile); await file.writeAsString(content); return true; } catch (e) { return false; } } /// 解析配置文件并返回 MiningConfig Future 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; } } }