2023-09-20 22:14:34 +00:00
|
|
|
import 'package:flutter/cupertino.dart';
|
|
|
|
import 'package:stackwallet/pages_desktop_specific/cashfusion/sub_widgets/fusion_dialog.dart';
|
2023-09-22 22:20:48 +00:00
|
|
|
|
2023-09-20 22:14:34 +00:00
|
|
|
class FusionProgressUIState extends ChangeNotifier {
|
2023-10-19 17:06:26 +00:00
|
|
|
/// Whether we are able to connect to the server.
|
|
|
|
bool _ableToConnect = false;
|
|
|
|
|
|
|
|
// _ableToConnect setter.
|
|
|
|
set ableToConnect(bool ableToConnect) {
|
|
|
|
_ableToConnect = ableToConnect;
|
|
|
|
notifyListeners();
|
|
|
|
}
|
2023-09-20 22:14:34 +00:00
|
|
|
|
|
|
|
bool get done {
|
|
|
|
if (!_ableToConnect) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
2023-10-17 16:18:43 +00:00
|
|
|
bool _done = (_connecting.status == CashFusionStatus.success) ||
|
|
|
|
(_connecting.status == CashFusionStatus.failed);
|
|
|
|
_done &= (_outputs.status == CashFusionStatus.success) ||
|
|
|
|
(_outputs.status == CashFusionStatus.failed);
|
|
|
|
_done &= (_peers.status == CashFusionStatus.success) ||
|
|
|
|
(_peers.status == CashFusionStatus.failed);
|
|
|
|
_done &= (_fusing.status == CashFusionStatus.success) ||
|
|
|
|
(_fusing.status == CashFusionStatus.failed);
|
|
|
|
_done &= (_complete.status == CashFusionStatus.success) ||
|
|
|
|
(_complete.status == CashFusionStatus.failed);
|
|
|
|
|
|
|
|
_done &= (fusionState.status == CashFusionStatus.success) ||
|
|
|
|
(fusionState.status == CashFusionStatus.failed);
|
2023-09-22 22:20:48 +00:00
|
|
|
|
2023-09-20 22:14:34 +00:00
|
|
|
return _done;
|
|
|
|
}
|
|
|
|
|
2023-09-22 22:20:48 +00:00
|
|
|
bool get succeeded {
|
|
|
|
if (!_ableToConnect) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
2023-10-17 16:15:31 +00:00
|
|
|
bool _succeeded = _connecting.status == CashFusionStatus.success;
|
|
|
|
_succeeded &= _outputs.status == CashFusionStatus.success;
|
|
|
|
_succeeded &= _peers.status == CashFusionStatus.success;
|
|
|
|
_succeeded &= _fusing.status == CashFusionStatus.success;
|
|
|
|
_succeeded &= _complete.status == CashFusionStatus.success;
|
2023-09-22 22:20:48 +00:00
|
|
|
|
2023-10-17 16:18:43 +00:00
|
|
|
_succeeded &= fusionState.status == CashFusionStatus.success;
|
2023-09-22 22:20:48 +00:00
|
|
|
|
|
|
|
return _succeeded;
|
|
|
|
}
|
|
|
|
|
2023-10-17 16:15:31 +00:00
|
|
|
CashFusionState _connecting =
|
|
|
|
CashFusionState(status: CashFusionStatus.waiting, info: null);
|
|
|
|
CashFusionState get connecting => _connecting;
|
|
|
|
set connecting(CashFusionState state) {
|
2023-09-20 22:14:34 +00:00
|
|
|
_connecting = state;
|
|
|
|
notifyListeners();
|
|
|
|
}
|
|
|
|
|
2023-10-17 16:15:31 +00:00
|
|
|
CashFusionState _outputs =
|
|
|
|
CashFusionState(status: CashFusionStatus.waiting, info: null);
|
|
|
|
CashFusionState get outputs => _outputs;
|
|
|
|
set outputs(CashFusionState state) {
|
2023-09-20 22:14:34 +00:00
|
|
|
_outputs = state;
|
|
|
|
notifyListeners();
|
|
|
|
}
|
|
|
|
|
2023-10-17 16:15:31 +00:00
|
|
|
CashFusionState _peers =
|
|
|
|
CashFusionState(status: CashFusionStatus.waiting, info: null);
|
|
|
|
CashFusionState get peers => _peers;
|
|
|
|
set peers(CashFusionState state) {
|
2023-09-20 22:14:34 +00:00
|
|
|
_peers = state;
|
|
|
|
notifyListeners();
|
|
|
|
}
|
|
|
|
|
2023-10-17 16:15:31 +00:00
|
|
|
CashFusionState _fusing =
|
|
|
|
CashFusionState(status: CashFusionStatus.waiting, info: null);
|
|
|
|
CashFusionState get fusing => _fusing;
|
|
|
|
set fusing(CashFusionState state) {
|
2023-09-20 22:14:34 +00:00
|
|
|
_fusing = state;
|
|
|
|
notifyListeners();
|
|
|
|
}
|
|
|
|
|
2023-10-17 16:15:31 +00:00
|
|
|
CashFusionState _complete =
|
|
|
|
CashFusionState(status: CashFusionStatus.waiting, info: null);
|
|
|
|
CashFusionState get complete => _complete;
|
|
|
|
set complete(CashFusionState state) {
|
2023-09-20 22:14:34 +00:00
|
|
|
_complete = state;
|
|
|
|
notifyListeners();
|
|
|
|
}
|
2023-09-22 22:20:48 +00:00
|
|
|
|
2023-10-17 16:15:31 +00:00
|
|
|
CashFusionState _fusionStatus =
|
|
|
|
CashFusionState(status: CashFusionStatus.waiting, info: null);
|
|
|
|
CashFusionState get fusionState => _fusionStatus;
|
|
|
|
set fusionState(CashFusionState fusionStatus) {
|
2023-09-28 20:16:48 +00:00
|
|
|
_fusionStatus = fusionStatus;
|
2023-09-26 15:30:31 +00:00
|
|
|
notifyListeners();
|
2023-09-22 22:20:48 +00:00
|
|
|
}
|
2023-10-19 17:06:26 +00:00
|
|
|
|
|
|
|
/// An int storing the number of successfully completed fusion rounds.
|
|
|
|
int _fusionRoundsCompleted = 0;
|
|
|
|
int get fusionRoundsCompleted => _fusionRoundsCompleted;
|
|
|
|
set fusionRoundsCompleted(int fusionRoundsCompleted) {
|
|
|
|
_fusionRoundsCompleted = fusionRoundsCompleted;
|
|
|
|
notifyListeners();
|
|
|
|
}
|
|
|
|
|
|
|
|
/// A helper for incrementing the number of successfully completed fusion rounds.
|
|
|
|
void incrementFusionRoundsCompleted() {
|
|
|
|
_fusionRoundsCompleted++;
|
|
|
|
_fusionRoundsFailed = 0; // Reset failed round count on success.
|
2023-10-19 17:52:21 +00:00
|
|
|
_failed = false; // Reset failed flag on success.
|
2023-10-19 17:06:26 +00:00
|
|
|
notifyListeners();
|
|
|
|
}
|
|
|
|
|
|
|
|
/// An int storing the number of failed fusion rounds.
|
|
|
|
int _fusionRoundsFailed = 0;
|
|
|
|
int get fusionRoundsFailed => _fusionRoundsFailed;
|
|
|
|
set fusionRoundsFailed(int fusionRoundsFailed) {
|
|
|
|
_fusionRoundsFailed = fusionRoundsFailed;
|
|
|
|
notifyListeners();
|
|
|
|
}
|
|
|
|
|
|
|
|
/// A helper for incrementing the number of failed fusion rounds.
|
|
|
|
void incrementFusionRoundsFailed() {
|
|
|
|
_fusionRoundsFailed++;
|
|
|
|
notifyListeners();
|
|
|
|
}
|
2023-10-19 17:16:12 +00:00
|
|
|
|
|
|
|
/// A flag indicating that fusion has stopped because the maximum number of
|
|
|
|
/// consecutive failed fusion rounds has been reached.
|
2023-10-19 17:52:21 +00:00
|
|
|
///
|
|
|
|
/// Set from the interface. I didn't want to have to configure
|
|
|
|
///
|
|
|
|
/// Used to be named maxConsecutiveFusionRoundsFailed.
|
2023-10-19 21:04:50 +00:00
|
|
|
bool _failed = false;
|
2023-10-19 17:52:21 +00:00
|
|
|
bool get failed => _failed;
|
|
|
|
set failed(bool failed) {
|
|
|
|
_failed = failed;
|
2023-10-19 17:16:12 +00:00
|
|
|
notifyListeners();
|
|
|
|
}
|
2023-09-20 22:14:34 +00:00
|
|
|
}
|