[PR #6947] [MERGED] [PM-37284] fix: Show Upgraded to Premium card across all Send view states #120894

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

📋 Pull Request Information

Original PR: https://github.com/bitwarden/android/pull/6947
Author: @SaintPatrck
Created: 5/19/2026
Status: Merged
Merged: 5/20/2026
Merged by: @SaintPatrck

Base: mainHead: premium-upgrade/pm-37284-send-tab-upgraded-card


📝 Commits (4)

  • c1dfe2f PM-37284 fix: Scroll Upgraded to Premium card with Send content
  • ecf5f06 Mark action link as external on SendScreen
  • f28532c Bundle Send Upgraded to Premium card handlers into nullable model
  • c249552 Route Send content card through UpgradedToPremiumActionCard wrapper

📊 Changes

5 files changed (+121 additions, -32 deletions)

View changed files

📝 app/src/main/kotlin/com/x8bit/bitwarden/ui/tools/feature/send/SendContent.kt (+7 -25)
📝 app/src/main/kotlin/com/x8bit/bitwarden/ui/tools/feature/send/SendEmpty.kt (+14 -0)
📝 app/src/main/kotlin/com/x8bit/bitwarden/ui/tools/feature/send/SendScreen.kt (+44 -7)
app/src/main/kotlin/com/x8bit/bitwarden/ui/tools/feature/send/model/UpgradedToPremiumCardData.kt (+11 -0)
📝 app/src/test/kotlin/com/x8bit/bitwarden/ui/tools/feature/send/SendScreenTest.kt (+45 -0)

📄 Description

🎟️ Tracking

PM-37284

📔 Objective

The Send tab's "Upgraded to Premium" celebration card was rendered as the first item of the Content branch's LazyColumn, so users whose Send tab was in Empty, Loading, or Error view state never saw the card even when they were eligible. Eligibility was the intended gate; viewState was incidentally gating it.

Move card rendering into each scrollable container — first LazyColumn item in SendContent and first child of SendEmpty's verticalScroll Column — so the card surfaces in both states that have a scrollable surface and flows with the rest of the view (a scaffold-body hoist pinned the card above SendEmpty's centered illustration and broke the intended visual continuity). Loading and Error remain full-screen non-scrolling placeholders and do not host the card. Extract the inline BitwardenActionCard block into a private UpgradedToPremiumActionCard composable to match the screen-owned action-card convention used in VaultContent.kt.

📸 Screenshots

Before After

🔄 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/6947 **Author:** [@SaintPatrck](https://github.com/SaintPatrck) **Created:** 5/19/2026 **Status:** ✅ Merged **Merged:** 5/20/2026 **Merged by:** [@SaintPatrck](https://github.com/SaintPatrck) **Base:** `main` ← **Head:** `premium-upgrade/pm-37284-send-tab-upgraded-card` --- ### 📝 Commits (4) - [`c1dfe2f`](https://github.com/bitwarden/android/commit/c1dfe2fcf43a459e6d6d3fffc6434125ecb1bb84) [PM-37284] fix: Scroll Upgraded to Premium card with Send content - [`ecf5f06`](https://github.com/bitwarden/android/commit/ecf5f06e53a6a17da81a4ae7a961ab1529deaa79) Mark action link as external on SendScreen - [`f28532c`](https://github.com/bitwarden/android/commit/f28532c2e06e83177263ce34339cfb4610edc798) Bundle Send Upgraded to Premium card handlers into nullable model - [`c249552`](https://github.com/bitwarden/android/commit/c249552a637cbacca2a9221ea046254a2b95802c) Route Send content card through UpgradedToPremiumActionCard wrapper ### 📊 Changes **5 files changed** (+121 additions, -32 deletions) <details> <summary>View changed files</summary> 📝 `app/src/main/kotlin/com/x8bit/bitwarden/ui/tools/feature/send/SendContent.kt` (+7 -25) 📝 `app/src/main/kotlin/com/x8bit/bitwarden/ui/tools/feature/send/SendEmpty.kt` (+14 -0) 📝 `app/src/main/kotlin/com/x8bit/bitwarden/ui/tools/feature/send/SendScreen.kt` (+44 -7) ➕ `app/src/main/kotlin/com/x8bit/bitwarden/ui/tools/feature/send/model/UpgradedToPremiumCardData.kt` (+11 -0) 📝 `app/src/test/kotlin/com/x8bit/bitwarden/ui/tools/feature/send/SendScreenTest.kt` (+45 -0) </details> ### 📄 Description ## 🎟️ Tracking [PM-37284](https://bitwarden.atlassian.net/browse/PM-37284) ## 📔 Objective The Send tab's "Upgraded to Premium" celebration card was rendered as the first item of the `Content` branch's `LazyColumn`, so users whose Send tab was in `Empty`, `Loading`, or `Error` view state never saw the card even when they were eligible. Eligibility was the intended gate; viewState was incidentally gating it. Move card rendering into each scrollable container — first `LazyColumn` item in `SendContent` and first child of `SendEmpty`'s `verticalScroll` Column — so the card surfaces in both states that have a scrollable surface and flows with the rest of the view (a scaffold-body hoist pinned the card above `SendEmpty`'s centered illustration and broke the intended visual continuity). `Loading` and `Error` remain full-screen non-scrolling placeholders and do not host the card. Extract the inline `BitwardenActionCard` block into a private `UpgradedToPremiumActionCard` composable to match the screen-owned action-card convention used in `VaultContent.kt`. ## 📸 Screenshots | Before | After | |--------|--------| | <img width="365" src="https://github.com/user-attachments/assets/fdca4a8a-4e19-449c-a335-29f02a877eab" /> | <img width="365" src="https://github.com/user-attachments/assets/f5b51a49-ed1a-4282-b34d-9fb320c7cacc" /> | [PM-37284]: https://bitwarden.atlassian.net/browse/PM-37284?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ --- <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 19:20:18 -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#120894