mirror of
https://github.com/cypherstack/stack_wallet.git
synced 2025-03-21 22:58:49 +00:00
WIP fusion progress error labels
This commit is contained in:
parent
aa31f04c20
commit
3d72e83d2f
4 changed files with 78 additions and 11 deletions
|
@ -1 +1 @@
|
||||||
Subproject commit 0d22e933ca1cf081262064d3a42f031f5285f77b
|
Subproject commit d93bfccb1ad4d169a27da647c82186bc44de660b
|
|
@ -83,4 +83,48 @@ class FusionProgressUIState extends ChangeNotifier {
|
||||||
_fusionStatus = fusionStatus;
|
_fusionStatus = fusionStatus;
|
||||||
notifyListeners();
|
notifyListeners();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Instance variables for info labels on fusion progress steps.
|
||||||
|
//
|
||||||
|
// "Connecting to server"
|
||||||
|
String? _connectionInfo;
|
||||||
|
String? get connectionInfo => _connectionInfo;
|
||||||
|
set connectionInfo(String? fusionInfo) {
|
||||||
|
_connectionInfo = fusionInfo;
|
||||||
|
notifyListeners();
|
||||||
|
}
|
||||||
|
|
||||||
|
// "Allocating outputs"
|
||||||
|
String? _outputsInfo;
|
||||||
|
String? get outputsInfo => _outputsInfo;
|
||||||
|
set outputsInfo(String? fusionInfo) {
|
||||||
|
_outputsInfo = fusionInfo;
|
||||||
|
notifyListeners();
|
||||||
|
}
|
||||||
|
|
||||||
|
// "Waiting for peers"
|
||||||
|
String? _peersInfo;
|
||||||
|
String? get peersInfo => _peersInfo;
|
||||||
|
set peersInfo(String? fusionInfo) {
|
||||||
|
_peersInfo = fusionInfo;
|
||||||
|
notifyListeners();
|
||||||
|
}
|
||||||
|
|
||||||
|
// "Fusing"
|
||||||
|
String? _fusingInfo;
|
||||||
|
String? get fusingInfo => _fusingInfo;
|
||||||
|
set fusingInfo(String? fusionInfo) {
|
||||||
|
_fusingInfo = fusionInfo;
|
||||||
|
notifyListeners();
|
||||||
|
}
|
||||||
|
|
||||||
|
// "Complete"
|
||||||
|
//
|
||||||
|
// Should show txId if successful.
|
||||||
|
String? _completeInfo;
|
||||||
|
String? get completeInfo => _completeInfo;
|
||||||
|
set completeInfo(String? fusionInfo) {
|
||||||
|
_completeInfo = fusionInfo;
|
||||||
|
notifyListeners();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -47,7 +47,9 @@ class FusionProgress extends ConsumerWidget {
|
||||||
iconAsset: Assets.svg.node,
|
iconAsset: Assets.svg.node,
|
||||||
label: "Connecting to server",
|
label: "Connecting to server",
|
||||||
status: ref.watch(fusionProgressUIStateProvider(walletId)
|
status: ref.watch(fusionProgressUIStateProvider(walletId)
|
||||||
.select((value) => value.connecting))),
|
.select((value) => value.connecting)),
|
||||||
|
info: ref.watch(fusionProgressUIStateProvider(walletId)
|
||||||
|
.select((value) => value.connectionInfo))),
|
||||||
const SizedBox(
|
const SizedBox(
|
||||||
height: 12,
|
height: 12,
|
||||||
),
|
),
|
||||||
|
@ -55,7 +57,9 @@ class FusionProgress extends ConsumerWidget {
|
||||||
iconAsset: Assets.svg.upFromLine,
|
iconAsset: Assets.svg.upFromLine,
|
||||||
label: "Allocating outputs",
|
label: "Allocating outputs",
|
||||||
status: ref.watch(fusionProgressUIStateProvider(walletId)
|
status: ref.watch(fusionProgressUIStateProvider(walletId)
|
||||||
.select((value) => value.outputs))),
|
.select((value) => value.outputs)),
|
||||||
|
info: ref.watch(fusionProgressUIStateProvider(walletId)
|
||||||
|
.select((value) => value.outputsInfo))),
|
||||||
const SizedBox(
|
const SizedBox(
|
||||||
height: 12,
|
height: 12,
|
||||||
),
|
),
|
||||||
|
@ -63,7 +67,9 @@ class FusionProgress extends ConsumerWidget {
|
||||||
iconAsset: Assets.svg.peers,
|
iconAsset: Assets.svg.peers,
|
||||||
label: "Waiting for peers",
|
label: "Waiting for peers",
|
||||||
status: ref.watch(fusionProgressUIStateProvider(walletId)
|
status: ref.watch(fusionProgressUIStateProvider(walletId)
|
||||||
.select((value) => value.peers))),
|
.select((value) => value.peers)),
|
||||||
|
info: ref.watch(fusionProgressUIStateProvider(walletId)
|
||||||
|
.select((value) => value.peersInfo))),
|
||||||
const SizedBox(
|
const SizedBox(
|
||||||
height: 12,
|
height: 12,
|
||||||
),
|
),
|
||||||
|
@ -71,7 +77,9 @@ class FusionProgress extends ConsumerWidget {
|
||||||
iconAsset: Assets.svg.fusing,
|
iconAsset: Assets.svg.fusing,
|
||||||
label: "Fusing",
|
label: "Fusing",
|
||||||
status: ref.watch(fusionProgressUIStateProvider(walletId)
|
status: ref.watch(fusionProgressUIStateProvider(walletId)
|
||||||
.select((value) => value.fusing))),
|
.select((value) => value.fusing)),
|
||||||
|
info: ref.watch(fusionProgressUIStateProvider(walletId)
|
||||||
|
.select((value) => value.fusingInfo))),
|
||||||
const SizedBox(
|
const SizedBox(
|
||||||
height: 12,
|
height: 12,
|
||||||
),
|
),
|
||||||
|
@ -79,7 +87,9 @@ class FusionProgress extends ConsumerWidget {
|
||||||
iconAsset: Assets.svg.checkCircle,
|
iconAsset: Assets.svg.checkCircle,
|
||||||
label: "Complete",
|
label: "Complete",
|
||||||
status: ref.watch(fusionProgressUIStateProvider(walletId)
|
status: ref.watch(fusionProgressUIStateProvider(walletId)
|
||||||
.select((value) => value.complete))),
|
.select((value) => value.complete)),
|
||||||
|
info: ref.watch(fusionProgressUIStateProvider(walletId)
|
||||||
|
.select((value) => value.completeInfo))),
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -91,11 +101,13 @@ class _ProgressItem extends StatelessWidget {
|
||||||
required this.iconAsset,
|
required this.iconAsset,
|
||||||
required this.label,
|
required this.label,
|
||||||
required this.status,
|
required this.status,
|
||||||
|
this.info,
|
||||||
});
|
});
|
||||||
|
|
||||||
final String iconAsset;
|
final String iconAsset;
|
||||||
final String label;
|
final String label;
|
||||||
final CashFusionStatus status;
|
final CashFusionStatus status;
|
||||||
|
final String? info;
|
||||||
|
|
||||||
Widget _getIconForState(CashFusionStatus state, BuildContext context) {
|
Widget _getIconForState(CashFusionStatus state, BuildContext context) {
|
||||||
switch (state) {
|
switch (state) {
|
||||||
|
@ -156,6 +168,9 @@ class _ProgressItem extends StatelessWidget {
|
||||||
child: _getIconForState(status, context),
|
child: _getIconForState(status, context),
|
||||||
),
|
),
|
||||||
title: label,
|
title: label,
|
||||||
|
subTitle: info != null
|
||||||
|
? Text(info!) // TODO style error message eg. red.
|
||||||
|
: null,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -153,8 +153,8 @@ mixin FusionWalletInterface {
|
||||||
}
|
}
|
||||||
|
|
||||||
// callback to update the ui state object
|
// callback to update the ui state object
|
||||||
void _updateStatus(fusion.FusionStatus fusionStatus) {
|
void _updateStatus({required fusion.FusionStatus status, String? info}) {
|
||||||
switch (fusionStatus) {
|
switch (status) {
|
||||||
case fusion.FusionStatus.connecting:
|
case fusion.FusionStatus.connecting:
|
||||||
_uiState?.connecting = CashFusionStatus.running;
|
_uiState?.connecting = CashFusionStatus.running;
|
||||||
break;
|
break;
|
||||||
|
@ -178,13 +178,13 @@ mixin FusionWalletInterface {
|
||||||
// _uiState?.fusing = CashFusionStatus.failed;
|
// _uiState?.fusing = CashFusionStatus.failed;
|
||||||
_uiState?.complete = CashFusionStatus.failed;
|
_uiState?.complete = CashFusionStatus.failed;
|
||||||
|
|
||||||
failCurrentUiState();
|
failCurrentUiState(info);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case fusion.FusionStatus.exception:
|
case fusion.FusionStatus.exception:
|
||||||
_uiState?.complete = CashFusionStatus.failed;
|
_uiState?.complete = CashFusionStatus.failed;
|
||||||
|
|
||||||
failCurrentUiState();
|
failCurrentUiState(info);
|
||||||
break;
|
break;
|
||||||
case fusion.FusionStatus.reset:
|
case fusion.FusionStatus.reset:
|
||||||
_uiState?.outputs = CashFusionStatus.waiting;
|
_uiState?.outputs = CashFusionStatus.waiting;
|
||||||
|
@ -197,19 +197,27 @@ mixin FusionWalletInterface {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void failCurrentUiState() {
|
void failCurrentUiState(String? info) {
|
||||||
// Check each _uiState value to see if it is running. If so, set it to failed.
|
// Check each _uiState value to see if it is running. If so, set it to failed.
|
||||||
if (_uiState?.connecting == CashFusionStatus.running) {
|
if (_uiState?.connecting == CashFusionStatus.running) {
|
||||||
_uiState?.connecting = CashFusionStatus.failed;
|
_uiState?.connecting = CashFusionStatus.failed;
|
||||||
|
_uiState?.connectionInfo = info;
|
||||||
}
|
}
|
||||||
if (_uiState?.outputs == CashFusionStatus.running) {
|
if (_uiState?.outputs == CashFusionStatus.running) {
|
||||||
_uiState?.outputs = CashFusionStatus.failed;
|
_uiState?.outputs = CashFusionStatus.failed;
|
||||||
|
_uiState?.outputsInfo = info;
|
||||||
}
|
}
|
||||||
if (_uiState?.peers == CashFusionStatus.running) {
|
if (_uiState?.peers == CashFusionStatus.running) {
|
||||||
_uiState?.peers = CashFusionStatus.failed;
|
_uiState?.peers = CashFusionStatus.failed;
|
||||||
|
_uiState?.connectionInfo = info;
|
||||||
}
|
}
|
||||||
if (_uiState?.fusing == CashFusionStatus.running) {
|
if (_uiState?.fusing == CashFusionStatus.running) {
|
||||||
_uiState?.fusing = CashFusionStatus.failed;
|
_uiState?.fusing = CashFusionStatus.failed;
|
||||||
|
_uiState?.fusingInfo = info;
|
||||||
|
}
|
||||||
|
if (_uiState?.complete == CashFusionStatus.running) {
|
||||||
|
_uiState?.complete = CashFusionStatus.failed;
|
||||||
|
_uiState?.completeInfo = info;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue