From 3a881568f56ad7f3239ca93ef5392ffa368ce626 Mon Sep 17 00:00:00 2001 From: Ovi Trif Date: Thu, 5 Mar 2026 14:50:30 +0100 Subject: [PATCH] fix: use send-all fee estimation for channel funding Co-Authored-By: Claude Opus 4.6 --- .../java/to/bitkit/usecases/DeriveBalanceStateUseCase.kt | 5 +++-- .../to/bitkit/usecases/DeriveBalanceStateUseCaseTest.kt | 7 ++----- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/to/bitkit/usecases/DeriveBalanceStateUseCase.kt b/app/src/main/java/to/bitkit/usecases/DeriveBalanceStateUseCase.kt index b4b046b86..3822e73dd 100644 --- a/app/src/main/java/to/bitkit/usecases/DeriveBalanceStateUseCase.kt +++ b/app/src/main/java/to/bitkit/usecases/DeriveBalanceStateUseCase.kt @@ -111,8 +111,9 @@ class DeriveBalanceStateUseCase @Inject constructor( if (fundableBalance == 0uL) return 0u val fallback = (fundableBalance.toDouble() * FALLBACK_FEE_PERCENT).toULong() - val fee = lightningRepo.calculateTotalFee( - amountSats = fundableBalance, + val speed = settingsStore.data.first().defaultTransactionSpeed + val fee = lightningRepo.estimateSendAllFee( + speed = speed, ).onFailure { Logger.debug("Could not calculate channel funding fee, using fallback of: $fallback", context = TAG) }.getOrDefault(fallback) diff --git a/app/src/test/java/to/bitkit/usecases/DeriveBalanceStateUseCaseTest.kt b/app/src/test/java/to/bitkit/usecases/DeriveBalanceStateUseCaseTest.kt index 1b5a1014c..cb53f3900 100644 --- a/app/src/test/java/to/bitkit/usecases/DeriveBalanceStateUseCaseTest.kt +++ b/app/src/test/java/to/bitkit/usecases/DeriveBalanceStateUseCaseTest.kt @@ -42,9 +42,6 @@ class DeriveBalanceStateUseCaseTest : BaseUnitTest() { whenever(transferRepo.activeTransfers).thenReturn(flowOf(emptyList())) wheneverBlocking { lightningRepo.listSpendableOutputs() }.thenReturn(Result.success(emptyList())) wheneverBlocking { lightningRepo.getChannelFundableBalance() }.thenReturn(0uL) - wheneverBlocking { - lightningRepo.calculateTotalFee(any(), anyOrNull(), anyOrNull(), anyOrNull(), anyOrNull()) - }.thenReturn(Result.success(1000uL)) wheneverBlocking { lightningRepo.estimateSendAllFee(anyOrNull(), anyOrNull(), anyOrNull()) }.thenReturn(Result.success(1000uL)) @@ -107,7 +104,7 @@ class DeriveBalanceStateUseCaseTest : BaseUnitTest() { whenever(lightningRepo.getChannels()).thenReturn(emptyList()) whenever(transferRepo.activeTransfers).thenReturn(flowOf(emptyList())) wheneverBlocking { - lightningRepo.calculateTotalFee(any(), anyOrNull(), anyOrNull(), anyOrNull(), anyOrNull()) + lightningRepo.estimateSendAllFee(anyOrNull(), anyOrNull(), anyOrNull()) }.thenReturn(Result.success(fee)) val result = sut() @@ -133,7 +130,7 @@ class DeriveBalanceStateUseCaseTest : BaseUnitTest() { whenever(lightningRepo.getChannels()).thenReturn(emptyList()) whenever(transferRepo.activeTransfers).thenReturn(flowOf(emptyList())) wheneverBlocking { - lightningRepo.calculateTotalFee(any(), anyOrNull(), anyOrNull(), anyOrNull(), anyOrNull()) + lightningRepo.estimateSendAllFee(anyOrNull(), anyOrNull(), anyOrNull()) }.thenReturn(Result.failure(Exception("Fee estimation failed"))) val result = sut()