[PR #6680] [MERGED] [PM-33510] feat: Add Play Billing Library dependency and PlayBillingManager #120677

Closed
opened 2026-06-09 18:56:53 -05:00 by GiteaMirror · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/bitwarden/android/pull/6680
Author: @SaintPatrck
Created: 3/16/2026
Status: Merged
Merged: 3/19/2026
Merged by: @SaintPatrck

Base: mainHead: premium-upgrade/PM-33510-billing-manager


📝 Commits (1)

  • e0d8808 [PM-33510] feat: Add Play Billing Library dependency and PlayBillingManager

📊 Changes

9 files changed (+223 additions, -0 deletions)

View changed files

📝 app/build.gradle.kts (+1 -0)
app/src/fdroid/kotlin/com/x8bit/bitwarden/data/billing/manager/PlayBillingManagerImpl.kt (+22 -0)
📝 app/src/main/kotlin/com/x8bit/bitwarden/data/billing/di/BillingModule.kt (+17 -0)
app/src/main/kotlin/com/x8bit/bitwarden/data/billing/manager/PlayBillingManager.kt (+14 -0)
📝 app/src/main/kotlin/com/x8bit/bitwarden/data/billing/repository/BillingRepository.kt (+6 -0)
📝 app/src/main/kotlin/com/x8bit/bitwarden/data/billing/repository/BillingRepositoryImpl.kt (+6 -0)
app/src/standard/kotlin/com/x8bit/bitwarden/data/billing/manager/PlayBillingManagerImpl.kt (+133 -0)
📝 app/src/test/kotlin/com/x8bit/bitwarden/data/billing/repository/BillingRepositoryTest.kt (+22 -0)
📝 gradle/libs.versions.toml (+2 -0)

📄 Description

🎟️ Tracking

https://bitwarden.atlassian.net/browse/PM-33510

📔 Objective

Introduces a flavor-specific PlayBillingManager wrapping the Google Play Billing Library to determine whether in-app billing is available on the current device.

  • Adds com.android.billingclient:billing v8.3.0 as a standardImplementation dependency
  • Defines PlayBillingManager interface with isInAppBillingSupportedFlow: StateFlow<Boolean>
  • Standard flavor implementation uses BillingClient.getBillingConfigAsync() with a connect-per-call lifecycle to probe billing availability
  • F-Droid flavor always emits true (F-Droid users are eligible for the upgrade flow)
  • Wires PlayBillingManager into BillingRepositoryImpl, delegating isInAppBillingSupportedFlow through the repository layer
  • Updates BillingModule to provide PlayBillingManager as a singleton

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/bitwarden/android/pull/6680 **Author:** [@SaintPatrck](https://github.com/SaintPatrck) **Created:** 3/16/2026 **Status:** ✅ Merged **Merged:** 3/19/2026 **Merged by:** [@SaintPatrck](https://github.com/SaintPatrck) **Base:** `main` ← **Head:** `premium-upgrade/PM-33510-billing-manager` --- ### 📝 Commits (1) - [`e0d8808`](https://github.com/bitwarden/android/commit/e0d880860ff051e41a18a67e3bd109986a36bc9a) [PM-33510] feat: Add Play Billing Library dependency and PlayBillingManager ### 📊 Changes **9 files changed** (+223 additions, -0 deletions) <details> <summary>View changed files</summary> 📝 `app/build.gradle.kts` (+1 -0) ➕ `app/src/fdroid/kotlin/com/x8bit/bitwarden/data/billing/manager/PlayBillingManagerImpl.kt` (+22 -0) 📝 `app/src/main/kotlin/com/x8bit/bitwarden/data/billing/di/BillingModule.kt` (+17 -0) ➕ `app/src/main/kotlin/com/x8bit/bitwarden/data/billing/manager/PlayBillingManager.kt` (+14 -0) 📝 `app/src/main/kotlin/com/x8bit/bitwarden/data/billing/repository/BillingRepository.kt` (+6 -0) 📝 `app/src/main/kotlin/com/x8bit/bitwarden/data/billing/repository/BillingRepositoryImpl.kt` (+6 -0) ➕ `app/src/standard/kotlin/com/x8bit/bitwarden/data/billing/manager/PlayBillingManagerImpl.kt` (+133 -0) 📝 `app/src/test/kotlin/com/x8bit/bitwarden/data/billing/repository/BillingRepositoryTest.kt` (+22 -0) 📝 `gradle/libs.versions.toml` (+2 -0) </details> ### 📄 Description ## 🎟️ Tracking https://bitwarden.atlassian.net/browse/PM-33510 ## 📔 Objective Introduces a flavor-specific `PlayBillingManager` wrapping the Google Play Billing Library to determine whether in-app billing is available on the current device. - Adds `com.android.billingclient:billing` v8.3.0 as a `standardImplementation` dependency - Defines `PlayBillingManager` interface with `isInAppBillingSupportedFlow: StateFlow<Boolean>` - Standard flavor implementation uses `BillingClient.getBillingConfigAsync()` with a connect-per-call lifecycle to probe billing availability - F-Droid flavor always emits `true` (F-Droid users are eligible for the upgrade flow) - Wires `PlayBillingManager` into `BillingRepositoryImpl`, delegating `isInAppBillingSupportedFlow` through the repository layer - Updates `BillingModule` to provide `PlayBillingManager` as a singleton --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
GiteaMirror added the pull-request label 2026-06-09 18:56:54 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/android#120677