[PR #6715] [MERGED] [PM-33516] feat: Create PlanScreen, PlanViewModel, and modal navigation #86650

Closed
opened 2026-05-23 00:36:16 -05:00 by GiteaMirror · 0 comments
Owner

📋 Pull Request Information

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

Base: mainHead: premium-upgrade/PM-33516-plan-screen


📝 Commits (1)

  • f87a2dd [PM-33516] feat: Create PlanScreen, PlanViewModel, and modal navigation

📊 Changes

25 files changed (+1786 additions, -3 deletions)

View changed files

📝 app/src/main/kotlin/com/x8bit/bitwarden/MainActivity.kt (+5 -0)
📝 app/src/main/kotlin/com/x8bit/bitwarden/MainViewModel.kt (+13 -0)
app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/premium/plan/PlanNavigation.kt (+90 -0)
app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/premium/plan/PlanScreen.kt (+304 -0)
app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/premium/plan/PlanViewModel.kt (+376 -0)
app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/premium/plan/handlers/PlanHandlers.kt (+33 -0)
📝 app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/vaultunlocked/VaultUnlockedNavigation.kt (+6 -0)
📝 app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/vaultunlockednavbar/VaultUnlockedNavBarNavigation.kt (+2 -0)
📝 app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/vaultunlockednavbar/VaultUnlockedNavBarScreen.kt (+4 -0)
📝 app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/model/AuthTabLaunchers.kt (+3 -0)
📝 app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/model/SnackbarRelay.kt (+2 -1)
📝 app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/vault/VaultGraphNavigation.kt (+2 -0)
📝 app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/vault/VaultNavigation.kt (+6 -0)
📝 app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/vault/VaultScreen.kt (+3 -0)
📝 app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/vault/VaultViewModel.kt (+7 -1)
📝 app/src/test/kotlin/com/x8bit/bitwarden/MainViewModelTest.kt (+15 -0)
📝 app/src/test/kotlin/com/x8bit/bitwarden/ui/auth/feature/enterprisesignon/EnterpriseSignOnScreenTest.kt (+1 -0)
📝 app/src/test/kotlin/com/x8bit/bitwarden/ui/auth/feature/twofactorlogin/TwoFactorLoginScreenTest.kt (+1 -0)
📝 app/src/test/kotlin/com/x8bit/bitwarden/ui/platform/feature/cookieacquisition/CookieAcquisitionScreenTest.kt (+1 -1)
app/src/test/kotlin/com/x8bit/bitwarden/ui/platform/feature/premium/plan/PlanScreenTest.kt (+326 -0)

...and 5 more files

📄 Description

🎟️ Tracking

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

📔 Objective

Add the premium upgrade Plan screen with ViewModel, navigation, and full test coverage.

Screen features:

  • Pricing details card with rate/frequency header and feature list (built-in authenticator, emergency access, secure file storage, breach monitoring)
  • "Upgrade now" button that launches Stripe checkout via AuthTab
  • Waiting-for-payment dialog with go-back and cancel options
  • Checkout error dialog with retry
  • Automatic premium status detection via UserState flow — navigates back with snackbar on successful upgrade
  • Special circumstance handling for returning from checkout callback

Navigation:

  • Sealed PlanRoute with Standard (back arrow, bottom nav visible) and Modal (close icon, bottom nav hidden) variants
  • Modal destination registered in VaultUnlockedNavigation

📸 Screenshots

Figma Actual

🔄 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/6715 **Author:** [@SaintPatrck](https://github.com/SaintPatrck) **Created:** 3/25/2026 **Status:** ✅ Merged **Merged:** 3/25/2026 **Merged by:** [@SaintPatrck](https://github.com/SaintPatrck) **Base:** `main` ← **Head:** `premium-upgrade/PM-33516-plan-screen` --- ### 📝 Commits (1) - [`f87a2dd`](https://github.com/bitwarden/android/commit/f87a2dd31222c41bd6de9ab7d685470d9c5c3cfa) [PM-33516] feat: Create PlanScreen, PlanViewModel, and modal navigation ### 📊 Changes **25 files changed** (+1786 additions, -3 deletions) <details> <summary>View changed files</summary> 📝 `app/src/main/kotlin/com/x8bit/bitwarden/MainActivity.kt` (+5 -0) 📝 `app/src/main/kotlin/com/x8bit/bitwarden/MainViewModel.kt` (+13 -0) ➕ `app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/premium/plan/PlanNavigation.kt` (+90 -0) ➕ `app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/premium/plan/PlanScreen.kt` (+304 -0) ➕ `app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/premium/plan/PlanViewModel.kt` (+376 -0) ➕ `app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/premium/plan/handlers/PlanHandlers.kt` (+33 -0) 📝 `app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/vaultunlocked/VaultUnlockedNavigation.kt` (+6 -0) 📝 `app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/vaultunlockednavbar/VaultUnlockedNavBarNavigation.kt` (+2 -0) 📝 `app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/vaultunlockednavbar/VaultUnlockedNavBarScreen.kt` (+4 -0) 📝 `app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/model/AuthTabLaunchers.kt` (+3 -0) 📝 `app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/model/SnackbarRelay.kt` (+2 -1) 📝 `app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/vault/VaultGraphNavigation.kt` (+2 -0) 📝 `app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/vault/VaultNavigation.kt` (+6 -0) 📝 `app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/vault/VaultScreen.kt` (+3 -0) 📝 `app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/vault/VaultViewModel.kt` (+7 -1) 📝 `app/src/test/kotlin/com/x8bit/bitwarden/MainViewModelTest.kt` (+15 -0) 📝 `app/src/test/kotlin/com/x8bit/bitwarden/ui/auth/feature/enterprisesignon/EnterpriseSignOnScreenTest.kt` (+1 -0) 📝 `app/src/test/kotlin/com/x8bit/bitwarden/ui/auth/feature/twofactorlogin/TwoFactorLoginScreenTest.kt` (+1 -0) 📝 `app/src/test/kotlin/com/x8bit/bitwarden/ui/platform/feature/cookieacquisition/CookieAcquisitionScreenTest.kt` (+1 -1) ➕ `app/src/test/kotlin/com/x8bit/bitwarden/ui/platform/feature/premium/plan/PlanScreenTest.kt` (+326 -0) _...and 5 more files_ </details> ### 📄 Description ## 🎟️ Tracking https://bitwarden.atlassian.net/browse/PM-33516 ## 📔 Objective Add the premium upgrade Plan screen with ViewModel, navigation, and full test coverage. **Screen features:** - Pricing details card with rate/frequency header and feature list (built-in authenticator, emergency access, secure file storage, breach monitoring) - "Upgrade now" button that launches Stripe checkout via AuthTab - Waiting-for-payment dialog with go-back and cancel options - Checkout error dialog with retry - Automatic premium status detection via UserState flow — navigates back with snackbar on successful upgrade - Special circumstance handling for returning from checkout callback **Navigation:** - Sealed `PlanRoute` with `Standard` (back arrow, bottom nav visible) and `Modal` (close icon, bottom nav hidden) variants - Modal destination registered in `VaultUnlockedNavigation` ## 📸 Screenshots | Figma | Actual | |--------|--------| |<img width="365" src="https://github.com/user-attachments/assets/4ef40797-2fd8-4359-a7ba-222b01bd2dd6" /> | <img width="365" src="https://github.com/user-attachments/assets/7e14c2d7-7da4-4b9a-b010-41318c28b23b" /> | --- <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-23 00:36:16 -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#86650