[PR #6981] [PM-37287] feat: Make Premium subscription required text tappable under authenticator key #100410

Open
opened 2026-05-31 05:15:36 -05:00 by GiteaMirror · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/bitwarden/android/pull/6981
Author: @SaintPatrck
Created: 5/26/2026
Status: 🔄 Open

Base: mainHead: premium-upgrade/pm-37287-totp-premium-cta


📝 Commits (1)

  • 337f170 [PM-37287] feat: Make Premium subscription required text tappable under authenticator key

📊 Changes

17 files changed (+451 additions, -22 deletions)

View changed files

📝 app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditLoginItems.kt (+27 -12)
📝 app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditScreen.kt (+19 -1)
📝 app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditViewModel.kt (+46 -3)
📝 app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/handlers/VaultAddEditLoginTypeHandlers.kt (+8 -0)
📝 app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/util/CipherViewExtensions.kt (+1 -0)
📝 app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/util/VaultAddEditExtensions.kt (+16 -0)
📝 app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/item/VaultItemLoginContent.kt (+17 -1)
📝 app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/item/VaultItemScreen.kt (+20 -1)
📝 app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/item/VaultItemViewModel.kt (+32 -0)
📝 app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/item/handlers/VaultLoginItemTypeHandlers.kt (+6 -0)
📝 app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditScreenTest.kt (+53 -2)
📝 app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditViewModelTest.kt (+43 -0)
📝 app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/util/CipherViewExtensionsTest.kt (+2 -0)
📝 app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/util/VaultAddEditExtensionsTest.kt (+66 -0)
📝 app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/item/VaultItemScreenTest.kt (+55 -2)
📝 app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/item/VaultItemViewModelTest.kt (+39 -0)
📝 ui/src/main/res/values/strings.xml (+1 -0)

📄 Description

🎟️ Tracking

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

📔 Objective

Non-Premium users see "Premium subscription required" under the Authenticator key on the View and Edit login screens, but the text is inert — there is no path from the gated state to the upgrade flow on either screen. This makes the placeholder tappable. Tapping opens an upsell dialog explaining that TOTP is a Premium feature, with Cancel and Upgrade to Premium buttons.

The Upgrade button routes through the existing handleUpgradeToPremiumClick logic: when in-app upgrade is available (MobilePremiumUpgrade flag + in-app billing supported) it opens the in-app Plan modal; otherwise it falls back to the web vault premium URI used by other upgrade CTAs.

Incidental behavior change: VaultAddEditViewModel.handleUpgradeToPremiumClick now also dismisses the active dialog before emitting the navigation event. This aligns Edit with the View screen's existing behavior and incidentally affects the existing ArchiveRequiresPremium upsell on Edit.

📸 Screenshots

View Login

In-app Upgrade DISABLED

Figma Actual

Edit Login


🔄 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/6981 **Author:** [@SaintPatrck](https://github.com/SaintPatrck) **Created:** 5/26/2026 **Status:** 🔄 Open **Base:** `main` ← **Head:** `premium-upgrade/pm-37287-totp-premium-cta` --- ### 📝 Commits (1) - [`337f170`](https://github.com/bitwarden/android/commit/337f170c7c0e425002bf9f408e06de9d0d6fe4a8) [PM-37287] feat: Make Premium subscription required text tappable under authenticator key ### 📊 Changes **17 files changed** (+451 additions, -22 deletions) <details> <summary>View changed files</summary> 📝 `app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditLoginItems.kt` (+27 -12) 📝 `app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditScreen.kt` (+19 -1) 📝 `app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditViewModel.kt` (+46 -3) 📝 `app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/handlers/VaultAddEditLoginTypeHandlers.kt` (+8 -0) 📝 `app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/util/CipherViewExtensions.kt` (+1 -0) 📝 `app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/util/VaultAddEditExtensions.kt` (+16 -0) 📝 `app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/item/VaultItemLoginContent.kt` (+17 -1) 📝 `app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/item/VaultItemScreen.kt` (+20 -1) 📝 `app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/item/VaultItemViewModel.kt` (+32 -0) 📝 `app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/item/handlers/VaultLoginItemTypeHandlers.kt` (+6 -0) 📝 `app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditScreenTest.kt` (+53 -2) 📝 `app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditViewModelTest.kt` (+43 -0) 📝 `app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/util/CipherViewExtensionsTest.kt` (+2 -0) 📝 `app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/util/VaultAddEditExtensionsTest.kt` (+66 -0) 📝 `app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/item/VaultItemScreenTest.kt` (+55 -2) 📝 `app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/item/VaultItemViewModelTest.kt` (+39 -0) 📝 `ui/src/main/res/values/strings.xml` (+1 -0) </details> ### 📄 Description ## 🎟️ Tracking https://bitwarden.atlassian.net/browse/PM-37287 ## 📔 Objective Non-Premium users see "Premium subscription required" under the Authenticator key on the View and Edit login screens, but the text is inert — there is no path from the gated state to the upgrade flow on either screen. This makes the placeholder tappable. Tapping opens an upsell dialog explaining that TOTP is a Premium feature, with **Cancel** and **Upgrade to Premium** buttons. The Upgrade button routes through the existing `handleUpgradeToPremiumClick` logic: when in-app upgrade is available (`MobilePremiumUpgrade` flag + in-app billing supported) it opens the in-app Plan modal; otherwise it falls back to the web vault premium URI used by other upgrade CTAs. **Incidental behavior change:** `VaultAddEditViewModel.handleUpgradeToPremiumClick` now also dismisses the active dialog before emitting the navigation event. This aligns Edit with the View screen's existing behavior and incidentally affects the existing `ArchiveRequiresPremium` upsell on Edit. ## 📸 Screenshots ### View Login #### In-app Upgrade **DISABLED** | Figma | Actual | |--------|--------| | | <video src="https://github.com/user-attachments/assets/220147c2-e331-4814-a7c4-7d7d13b2c083" /> | ### Edit Login --- <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-31 05:15:36 -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#100410