[PR #6819] [MERGED] [PM-35455] feat: Wire premium subscription data into Plan screen #55110

Closed
opened 2026-05-01 21:04:07 -05:00 by GiteaMirror · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/bitwarden/android/pull/6819
Author: @SaintPatrck
Created: 4/21/2026
Status: Merged
Merged: 4/28/2026
Merged by: @SaintPatrck

Base: mainHead: premium-upgrade/PM-35455-plan-premium-wiring


📝 Commits (9)

  • f3f39f4 [PM-35455] feat: Wire premium subscription data into Plan screen
  • 4293a78 Handle PAUSED status and BigDecimal currency in PlanScreen
  • bb047ff Add PlanScreen premium flow test coverage
  • ff4f681 Update copy for "paused" subscriptions status
  • 6952e1a Extract PremiumSubscriptionStatus extensions into util file
  • b3bbb3f Drop redundant isDialogShowing button gating in PlanScreen
  • 3fad63f Cover PlanViewModel branches flagged by Codecov
  • d1d76d9 Render discount row in success color when a discount is present
  • 4d73154 Address review feedback on Plan screen wiring

📊 Changes

7 files changed (+1790 additions, -107 deletions)

View changed files

📝 app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/premium/plan/PlanScreen.kt (+295 -20)
📝 app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/premium/plan/PlanViewModel.kt (+375 -56)
📝 app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/premium/plan/handlers/PlanHandlers.kt (+23 -0)
app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/premium/plan/util/PremiumSubscriptionStatusExtensions.kt (+40 -0)
📝 app/src/test/kotlin/com/x8bit/bitwarden/ui/platform/feature/premium/plan/PlanScreenTest.kt (+472 -23)
📝 app/src/test/kotlin/com/x8bit/bitwarden/ui/platform/feature/premium/plan/PlanViewModelTest.kt (+557 -8)
📝 ui/src/main/res/values/strings.xml (+28 -0)

📄 Description

🎟️ Tracking

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

📔 Objective

Wires premium subscription data into the Plan screen so premium users see their actual billed rate, storage cost, discount, estimated tax, and next-charge summary — plus a status badge reflecting their current subscription state.

Stacks on PM-35454. Line items default to a "--" placeholder while the subscription fetch is loading and for any field that resolves to null or 0.00 (e.g. no additional storage, no discount, no tax). Currency is hardcoded to USD for now.

The existing Manage plan / Cancel Premium flows (via the Stripe customer portal) are surfaced here; the cancel button is hidden when status is already CANCELED.

📸 Screenshots


🔄 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/6819 **Author:** [@SaintPatrck](https://github.com/SaintPatrck) **Created:** 4/21/2026 **Status:** ✅ Merged **Merged:** 4/28/2026 **Merged by:** [@SaintPatrck](https://github.com/SaintPatrck) **Base:** `main` ← **Head:** `premium-upgrade/PM-35455-plan-premium-wiring` --- ### 📝 Commits (9) - [`f3f39f4`](https://github.com/bitwarden/android/commit/f3f39f4574d995ea0c737691612a7e5c2f7a5226) [PM-35455] feat: Wire premium subscription data into Plan screen - [`4293a78`](https://github.com/bitwarden/android/commit/4293a7811ea36692976f5bdf3d05c7bd4514ac81) Handle PAUSED status and BigDecimal currency in PlanScreen - [`bb047ff`](https://github.com/bitwarden/android/commit/bb047ff87a23106181c1c816a0a8d7449547a8a2) Add PlanScreen premium flow test coverage - [`ff4f681`](https://github.com/bitwarden/android/commit/ff4f6818a39d22cba1abfd043d96e84f585fb681) Update copy for "paused" subscriptions status - [`6952e1a`](https://github.com/bitwarden/android/commit/6952e1aa37c6453c0237a8c51ab73719be09dd31) Extract PremiumSubscriptionStatus extensions into util file - [`b3bbb3f`](https://github.com/bitwarden/android/commit/b3bbb3f5fa7b5ee06ccbd302a7febd0de4936230) Drop redundant isDialogShowing button gating in PlanScreen - [`3fad63f`](https://github.com/bitwarden/android/commit/3fad63f3e494b59aedcd220a3d81f8ed565bb4cf) Cover PlanViewModel branches flagged by Codecov - [`d1d76d9`](https://github.com/bitwarden/android/commit/d1d76d97e633e9ee3c46ac50508497fa98030e22) Render discount row in success color when a discount is present - [`4d73154`](https://github.com/bitwarden/android/commit/4d73154e648083cdd11efe4dd54c25c939420b4b) Address review feedback on Plan screen wiring ### 📊 Changes **7 files changed** (+1790 additions, -107 deletions) <details> <summary>View changed files</summary> 📝 `app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/premium/plan/PlanScreen.kt` (+295 -20) 📝 `app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/premium/plan/PlanViewModel.kt` (+375 -56) 📝 `app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/premium/plan/handlers/PlanHandlers.kt` (+23 -0) ➕ `app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/premium/plan/util/PremiumSubscriptionStatusExtensions.kt` (+40 -0) 📝 `app/src/test/kotlin/com/x8bit/bitwarden/ui/platform/feature/premium/plan/PlanScreenTest.kt` (+472 -23) 📝 `app/src/test/kotlin/com/x8bit/bitwarden/ui/platform/feature/premium/plan/PlanViewModelTest.kt` (+557 -8) 📝 `ui/src/main/res/values/strings.xml` (+28 -0) </details> ### 📄 Description ## 🎟️ Tracking https://bitwarden.atlassian.net/browse/PM-35455 ## 📔 Objective Wires premium subscription data into the Plan screen so premium users see their actual billed rate, storage cost, discount, estimated tax, and next-charge summary — plus a status badge reflecting their current subscription state. Stacks on [PM-35454]. Line items default to a `"--"` placeholder while the subscription fetch is loading and for any field that resolves to null or `0.00` (e.g. no additional storage, no discount, no tax). Currency is hardcoded to USD for now. The existing Manage plan / Cancel Premium flows (via the Stripe customer portal) are surfaced here; the cancel button is hidden when status is already CANCELED. [PM-35454]: https://bitwarden.atlassian.net/browse/PM-35454 ## 📸 Screenshots <img width="365" src="https://github.com/user-attachments/assets/be2bb846-7f28-41f3-989e-ee970b94bcc2" /> --- <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-05-01 21:04:07 -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#55110