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