From 2db01b410baa332acd52927acf6f9c958f780aeb Mon Sep 17 00:00:00 2001 From: darken Date: Thu, 12 Mar 2026 12:45:56 +0100 Subject: [PATCH] fix(billing): Prevent crash when billing service disconnects --- .claude/.gitignore | 0 .../capod/common/upgrade/core/data/BillingDataRepo.kt | 8 +++++--- 2 files changed, 5 insertions(+), 3 deletions(-) create mode 100644 .claude/.gitignore diff --git a/.claude/.gitignore b/.claude/.gitignore new file mode 100644 index 00000000..e69de29b diff --git a/app/src/gplay/java/eu/darken/capod/common/upgrade/core/data/BillingDataRepo.kt b/app/src/gplay/java/eu/darken/capod/common/upgrade/core/data/BillingDataRepo.kt index f7d381cc..0184c967 100644 --- a/app/src/gplay/java/eu/darken/capod/common/upgrade/core/data/BillingDataRepo.kt +++ b/app/src/gplay/java/eu/darken/capod/common/upgrade/core/data/BillingDataRepo.kt @@ -24,9 +24,11 @@ class BillingDataRepo @Inject constructor( ) { private val connectionProvider = billingClientConnectionProvider.connection - .catch { - log(TAG, ERROR) { "Unable to provide client connection:\n${it.asLog()}" } - throw it + .retryWhen { cause, attempt -> + if (cause is CancellationException) return@retryWhen false + log(TAG, ERROR) { "Unable to provide client connection (attempt=$attempt):\n${cause.asLog()}" } + delay(60_000) // 60s between retries (upstream already did 5 quick retries) + true } .replayingShare(scope)