diff --git a/lib/wallets/wallet/mixins/cash_fusion.dart b/lib/wallets/wallet/mixins/cash_fusion.dart index 992e9e109..44e2c9c67 100644 --- a/lib/wallets/wallet/mixins/cash_fusion.dart +++ b/lib/wallets/wallet/mixins/cash_fusion.dart @@ -696,6 +696,10 @@ mixin CashFusion on CoinControl, ElectrumX { // Fuse UTXOs. try { + if (coinList.isEmpty) { + throw Exception("Started with no coins"); + } + await _mainFusionObject!.fuse( inputsFromWallet: coinList, network: cryptoCurrency.networkParams, @@ -723,6 +727,16 @@ mixin CashFusion on CoinControl, ElectrumX { // Do the same for the UI state. _uiState?.incrementFusionRoundsFailed(); + // If we have no coins, stop trying. + if (coinList.isEmpty || + e.toString().contains("Started with no coins")) { + _updateStatus( + status: fusion.FusionStatus.failed, + info: "Started with no coins, stopping."); + _stopRequested = true; + _uiState?.setFailed(true, shouldNotify: true); + } + // If we fail too many times in a row, stop trying. if (_failedFuseCount >= maxFailedFuseCount) { _updateStatus(