Skip to content

[PM-36623] feat: premium upgrade complete navigation#2639

Merged
andrebispo5 merged 22 commits into
mainfrom
pm-36623/premium-complete-navigation
May 13, 2026
Merged

[PM-36623] feat: premium upgrade complete navigation#2639
andrebispo5 merged 22 commits into
mainfrom
pm-36623/premium-complete-navigation

Conversation

@andrebispo5
Copy link
Copy Markdown
Contributor

@andrebispo5 andrebispo5 commented May 13, 2026

🎟️ Tracking

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

📔 Objective

Implements the post-checkout navigation flow for premium upgrade:

  • PremiumUpgradeProcessor now owns all checkout UI feedback: shows a loading overlay on .syncing and navigates to PremiumUpgradeComplete on .confirmed
  • BillingCoordinator handles two post-complete paths: vault context (modal) dismisses the entire billing nav controller; settings context (pushed) silently pops the upgrade screen and pushes PremiumPlanView
  • Vault processors (VaultList, VaultGroup, VaultItemSelection) simplified — no longer manage dismiss/overlay on .confirmed/.syncing; background state refresh still runs on .confirmed
  • Dismisses the premium upgrade action card on .pending checkout status
  • Adds loadingSubscription localization key; shows "Loading subscription…" overlay in PremiumPlanProcessor and a generic loading overlay in PremiumUpgradeProcessor during price fetch to avoid UI glitch
  • Removes unused errorDescription from BillingError

andrebispo5 and others added 20 commits May 11, 2026 17:08
@github-actions github-actions Bot added app:password-manager Bitwarden Password Manager app context app:authenticator Bitwarden Authenticator app context t:feature labels May 13, 2026
@codecov
Copy link
Copy Markdown

codecov Bot commented May 13, 2026

Codecov Report

❌ Patch coverage is 95.62500% with 7 lines in your changes missing coverage. Please review.
✅ Project coverage is 86.31%. Comparing base (1a2d11e) to head (556ecfd).
⚠️ Report is 4 commits behind head on main.

Files with missing lines Patch % Lines
...I/Vault/Vault/VaultGroup/VaultGroupProcessor.swift 76.92% 3 Missing ⚠️
...ultItemSelection/VaultItemSelectionProcessor.swift 33.33% 2 Missing ⚠️
.../UI/Vault/Vault/VaultList/VaultListProcessor.swift 83.33% 2 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #2639      +/-   ##
==========================================
- Coverage   87.35%   86.31%   -1.04%     
==========================================
  Files        1919     2141     +222     
  Lines      171017   185558   +14541     
==========================================
+ Hits       149394   160170   +10776     
- Misses      21623    25388    +3765     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@andrebispo5 andrebispo5 marked this pull request as ready for review May 13, 2026 10:41
Copilot AI review requested due to automatic review settings May 13, 2026 10:41
@andrebispo5 andrebispo5 requested a review from a team as a code owner May 13, 2026 10:41
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Implements the post-checkout navigation flow for Premium upgrade by moving checkout UI feedback (loading/confirmation) into PremiumUpgradeProcessor and updating billing navigation behavior after the “upgrade complete” screen closes, while simplifying vault processors’ handling of checkout status updates.

Changes:

  • PremiumUpgradeProcessor now shows loading overlays during price fetch / syncing and navigates to PremiumUpgradeComplete on confirmed checkout.
  • BillingCoordinator adds context-aware close behavior after PremiumUpgradeComplete (dismiss modal flow vs. pop upgrade + push plan).
  • Vault processors/tests updated to stop dismissing/navigating on .confirmed/.syncing, and to dismiss the premium upgrade action card on .pending.

Reviewed changes

Copilot reviewed 13 out of 13 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
BitwardenShared/UI/Vault/Vault/VaultList/VaultListProcessorTests.swift Updates expectations for new post-checkout responsibilities (no dismiss on confirmed/syncing; pending dismisses action card).
BitwardenShared/UI/Vault/Vault/VaultList/VaultListProcessor.swift Removes confirmed/syncing dismiss behavior; keeps background refresh and dismisses action card on pending.
BitwardenShared/UI/Vault/Vault/VaultItemSelection/VaultItemSelectionProcessorTests.swift Aligns tests with new ownership of overlays/navigation for syncing/confirmed.
BitwardenShared/UI/Vault/Vault/VaultItemSelection/VaultItemSelectionProcessor.swift Stops dismissing/hiding overlays on confirmed/syncing (handled by upgrade processor).
BitwardenShared/UI/Vault/Vault/VaultGroup/VaultGroupProcessorTests.swift Updates checkout-status tests and verifies banner-dismiss persistence on pending.
BitwardenShared/UI/Vault/Vault/VaultGroup/VaultGroupProcessor.swift Removes confirmed/syncing dismiss behavior; persists banner-dismiss on pending; refreshes in background on confirmed.
BitwardenShared/UI/Billing/PremiumUpgrade/PremiumUpgradeProcessorTests.swift Adds coverage for syncing/confirmed/pending behavior after checkout and for loading overlay during price fetch.
BitwardenShared/UI/Billing/PremiumUpgrade/PremiumUpgradeProcessor.swift Adds loading overlay during price fetch; handles syncing/confirmed/pending post-checkout UI + navigation.
BitwardenShared/UI/Billing/PremiumPlan/PremiumPlanProcessor.swift Changes loading overlay copy to “Loading subscription…”.
BitwardenShared/UI/Billing/BillingCoordinatorTests.swift Adds/updates tests for dismissal behavior using completion handlers after upgrade complete.
BitwardenShared/UI/Billing/BillingCoordinator.swift Implements completion-driven close behavior after PremiumUpgradeComplete based on presentation context.
BitwardenShared/Core/Billing/Models/Enum/BillingError.swift Removes unused LocalizedError conformance / errorDescription.
BitwardenResources/Localizations/en.lproj/Localizable.strings Adds LoadingSubscription localization key (English).

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines 382 to +384
"MasterPasswordPolicyValidationMessage" = "Password does not meet organization requirements. Please check the policy information and try again.";
"Loading" = "Loading";
"LoadingSubscription" = "Loading subscription...";
@andrebispo5 andrebispo5 merged commit 2f7b45e into main May 13, 2026
25 checks passed
@andrebispo5 andrebispo5 deleted the pm-36623/premium-complete-navigation branch May 13, 2026 11:39
"MasterPasswordPolicyValidationTitle" = "Invalid password";
"MasterPasswordPolicyValidationMessage" = "Password does not meet organization requirements. Please check the policy information and try again.";
"Loading" = "Loading";
"LoadingSubscription" = "Loading subscription...";
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's not so important, but in other cases Bitwarden use , not 3 dots ... in strings

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

app:authenticator Bitwarden Authenticator app context app:password-manager Bitwarden Password Manager app context t:feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants