update
This commit is contained in:
@@ -165,20 +165,8 @@ class ClientProvider with ChangeNotifier {
|
||||
memory: gpu.memory,
|
||||
)).toList(),
|
||||
machineCode: machineCode,
|
||||
status: ClientStatus.online,
|
||||
miningInfo: _currentMiningTask != null
|
||||
? MiningInfo(
|
||||
coin: _currentMiningTask!.coin,
|
||||
algo: _currentMiningTask!.algo,
|
||||
pool: _currentMiningTask!.pool,
|
||||
poolUrl: _currentMiningTask!.poolUrl,
|
||||
walletAddress: _currentMiningTask!.walletAddress,
|
||||
workerId: _currentMiningTask!.workerId,
|
||||
pid: null, // Dart 进程管理可能需要额外处理
|
||||
miner: _currentMiningTask!.miner,
|
||||
endTimestamp: _currentMiningTask!.endTimestamp,
|
||||
)
|
||||
: null,
|
||||
status: _getInitialStatus(),
|
||||
miningInfo: _getMiningInfo(),
|
||||
);
|
||||
|
||||
_isInitialized = true;
|
||||
@@ -218,9 +206,16 @@ class ClientProvider with ChangeNotifier {
|
||||
/// 状态变化回调
|
||||
void _onStatusChanged(ClientStatus status) {
|
||||
if (_clientInfo != null) {
|
||||
final newStatus = status == ClientStatus.mining || _miningManager.isMining
|
||||
? ClientStatus.mining
|
||||
: status;
|
||||
// 判断当前状态:优先显示挖矿状态
|
||||
ClientStatus newStatus;
|
||||
if (_miningManager.isMining) {
|
||||
// 如果有租约任务,显示挖矿中;否则显示持续挖矿中
|
||||
newStatus = _currentMiningTask != null
|
||||
? ClientStatus.mining
|
||||
: (_sustainMiner.isRunning ? ClientStatus.sustainingMining : ClientStatus.mining);
|
||||
} else {
|
||||
newStatus = status;
|
||||
}
|
||||
|
||||
_clientInfo = ClientInfo(
|
||||
version: _clientInfo!.version,
|
||||
@@ -228,19 +223,7 @@ class ClientProvider with ChangeNotifier {
|
||||
gpus: _clientInfo!.gpus,
|
||||
machineCode: _clientInfo!.machineCode,
|
||||
status: newStatus,
|
||||
miningInfo: _currentMiningTask != null
|
||||
? MiningInfo(
|
||||
coin: _currentMiningTask!.coin,
|
||||
algo: _currentMiningTask!.algo,
|
||||
pool: _currentMiningTask!.pool,
|
||||
poolUrl: _currentMiningTask!.poolUrl,
|
||||
walletAddress: _currentMiningTask!.walletAddress,
|
||||
workerId: _currentMiningTask!.workerId,
|
||||
pid: null,
|
||||
miner: _currentMiningTask!.miner,
|
||||
endTimestamp: _currentMiningTask!.endTimestamp,
|
||||
)
|
||||
: null,
|
||||
miningInfo: _getMiningInfo(),
|
||||
);
|
||||
notifyListeners();
|
||||
}
|
||||
@@ -268,6 +251,7 @@ class ClientProvider with ChangeNotifier {
|
||||
await _sustainMiner.resume();
|
||||
}
|
||||
|
||||
// 更新状态
|
||||
_onStatusChanged(_clientCore.isConnected ? ClientStatus.online : ClientStatus.offline);
|
||||
}
|
||||
|
||||
@@ -285,9 +269,15 @@ class ClientProvider with ChangeNotifier {
|
||||
|
||||
try {
|
||||
// 只更新状态,不重新获取GPU信息(GPU信息只在启动时获取一次)
|
||||
final status = _miningManager.isMining
|
||||
? ClientStatus.mining
|
||||
: (_clientCore.isConnected ? ClientStatus.online : ClientStatus.offline);
|
||||
ClientStatus status;
|
||||
if (_miningManager.isMining) {
|
||||
// 如果有租约任务,显示挖矿中;否则显示持续挖矿中
|
||||
status = _currentMiningTask != null
|
||||
? ClientStatus.mining
|
||||
: (_sustainMiner.isRunning ? ClientStatus.sustainingMining : ClientStatus.mining);
|
||||
} else {
|
||||
status = _clientCore.isConnected ? ClientStatus.online : ClientStatus.offline;
|
||||
}
|
||||
|
||||
_clientInfo = ClientInfo(
|
||||
version: _clientInfo!.version,
|
||||
@@ -295,19 +285,7 @@ class ClientProvider with ChangeNotifier {
|
||||
gpus: _clientInfo!.gpus, // 使用已有的GPU信息,不重新获取
|
||||
machineCode: _clientInfo!.machineCode,
|
||||
status: status,
|
||||
miningInfo: _currentMiningTask != null
|
||||
? MiningInfo(
|
||||
coin: _currentMiningTask!.coin,
|
||||
algo: _currentMiningTask!.algo,
|
||||
pool: _currentMiningTask!.pool,
|
||||
poolUrl: _currentMiningTask!.poolUrl,
|
||||
walletAddress: _currentMiningTask!.walletAddress,
|
||||
workerId: _currentMiningTask!.workerId,
|
||||
pid: null,
|
||||
miner: _currentMiningTask!.miner,
|
||||
endTimestamp: _currentMiningTask!.endTimestamp,
|
||||
)
|
||||
: null,
|
||||
miningInfo: _getMiningInfo(),
|
||||
);
|
||||
notifyListeners();
|
||||
} catch (e) {
|
||||
@@ -315,6 +293,51 @@ class ClientProvider with ChangeNotifier {
|
||||
}
|
||||
}
|
||||
|
||||
/// 获取初始状态
|
||||
ClientStatus _getInitialStatus() {
|
||||
if (_miningManager.isMining) {
|
||||
return _currentMiningTask != null
|
||||
? ClientStatus.mining
|
||||
: (_sustainMiner.isRunning ? ClientStatus.sustainingMining : ClientStatus.mining);
|
||||
}
|
||||
return _clientCore.isConnected ? ClientStatus.online : ClientStatus.offline;
|
||||
}
|
||||
|
||||
/// 获取挖矿信息(支持租约挖矿和持续挖矿)
|
||||
MiningInfo? _getMiningInfo() {
|
||||
if (_currentMiningTask != null) {
|
||||
// 租约挖矿任务
|
||||
return MiningInfo(
|
||||
coin: _currentMiningTask!.coin,
|
||||
algo: _currentMiningTask!.algo,
|
||||
pool: _currentMiningTask!.pool,
|
||||
poolUrl: _currentMiningTask!.poolUrl,
|
||||
walletAddress: _currentMiningTask!.walletAddress,
|
||||
workerId: _currentMiningTask!.workerId,
|
||||
pid: null,
|
||||
miner: _currentMiningTask!.miner,
|
||||
endTimestamp: _currentMiningTask!.endTimestamp,
|
||||
);
|
||||
} else if (_miningManager.isMining && _sustainMiner.isRunning) {
|
||||
// 持续挖矿任务
|
||||
final sustainTask = _miningManager.currentTask;
|
||||
if (sustainTask != null) {
|
||||
return MiningInfo(
|
||||
coin: sustainTask.coin,
|
||||
algo: sustainTask.algo,
|
||||
pool: sustainTask.pool,
|
||||
poolUrl: sustainTask.poolUrl,
|
||||
walletAddress: sustainTask.walletAddress,
|
||||
workerId: sustainTask.workerId,
|
||||
pid: null,
|
||||
miner: sustainTask.miner,
|
||||
endTimestamp: sustainTask.endTimestamp,
|
||||
);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/// 重启客户端
|
||||
Future<void> restart() async {
|
||||
_clientCore.stop();
|
||||
|
||||
Reference in New Issue
Block a user