diff --git a/app/src/main/java/to/bitkit/repositories/LightningRepo.kt b/app/src/main/java/to/bitkit/repositories/LightningRepo.kt index fa6b3229e..9caf1fda2 100644 --- a/app/src/main/java/to/bitkit/repositories/LightningRepo.kt +++ b/app/src/main/java/to/bitkit/repositories/LightningRepo.kt @@ -321,7 +321,11 @@ class LightningRepo @Inject constructor( do { syncPending.set(false) _lightningState.update { it.copy(isSyncingWallet = true) } - lightningService.sync() + runCatching { + lightningService.sync() + }.onFailure { + return@executeWhenNodeRunning Result.failure(it) + } refreshChannelCache() syncState() if (syncPending.get()) delay(MS_SYNC_LOOP_DEBOUNCE) diff --git a/app/src/main/java/to/bitkit/viewmodels/WalletViewModel.kt b/app/src/main/java/to/bitkit/viewmodels/WalletViewModel.kt index 471fce9d5..f1ff4dda6 100644 --- a/app/src/main/java/to/bitkit/viewmodels/WalletViewModel.kt +++ b/app/src/main/java/to/bitkit/viewmodels/WalletViewModel.kt @@ -276,7 +276,15 @@ class WalletViewModel @Inject constructor( walletRepo.syncNodeAndWallet() .onFailure { Logger.error("Failed to refresh state: ${it.message}", it) - if (it is CancellationException || it.isTxSyncTimeout()) return@onFailure + if (it is CancellationException) return@onFailure + if (it.isTxSyncTimeout()) { + ToastEventBus.send( + type = Toast.ToastType.ERROR, + title = context.getString(R.string.wallet__ldk_sync_error_title), + description = context.getString(R.string.wallet__ldk_sync_error_body), + ) + return@onFailure + } ToastEventBus.send(it) } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 54f5d0b3c..ccbe6f98b 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1099,6 +1099,7 @@ Select Range Received Instant Bitcoin Lightning Startup Error + Unable to sync with the network. Please try again later. Lightning Sync Error Maximum amount Pay Bitcoin