[PR #6722] [MERGED] [PM-34127] feat: Integrate card scanner with VaultAddEdit #55035

Closed
opened 2026-05-01 20:57:44 -05:00 by GiteaMirror · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/bitwarden/android/pull/6722
Author: @SaintPatrck
Created: 3/26/2026
Status: Merged
Merged: 4/9/2026
Merged by: @SaintPatrck

Base: mainHead: card-scanner/4-addedit-integration


📝 Commits (3)

  • daa0596 [PM-34127] feat: Integrate card scanner with VaultAddEdit
  • b712959 Update camera permission dialog
  • 5f9f445 Fixup rebase artifacts

📊 Changes

11 files changed (+609 additions, -6 deletions)

View changed files

📝 app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/vaultunlocked/VaultUnlockedNavigation.kt (+8 -0)
📝 app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditCardItems.kt (+25 -1)
📝 app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditItemContent.kt (+16 -1)
📝 app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditNavigation.kt (+2 -0)
📝 app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditScreen.kt (+38 -0)
📝 app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditViewModel.kt (+157 -0)
📝 app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/handlers/VaultAddEditCardTypeHandlers.kt (+11 -2)
📝 app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditScreenTest.kt (+50 -0)
📝 app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditViewModelTest.kt (+286 -0)
📝 app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/cardscanner/CardScanViewModelTest.kt (+14 -2)
📝 ui/src/main/res/values/strings.xml (+2 -0)

📄 Description

🎟️ Tracking

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

📔 Objective

Integrate the card scanner with the VaultAddEdit screen:

  • VaultAddEditViewModel: Collect CardScanManager results, map scanned card data to form fields (number, expiry, CVV, brand detection), and emit focus event for cardholder name input
  • VaultAddEditScreen: Add "Scan card" button for Card cipher types, gated behind card-scanner-mobile feature flag. After a successful scan, focus the cardholder name field and show the keyboard using DeferredBackgroundEvent to survive lifecycle filtering
  • VaultAddEditCardItems: New scan card row composable
  • VaultUnlockedNavigation: Wire CardScanScreen destination and navigation
  • Camera permission: Reuses existing launcher pattern from QR code scanner

Includes ViewModel and Screen tests for scan result handling, partial scans, feature flag gating, and post-scan focus behavior.

📸 Screenshots

Figma designs (based on iOS)

Permission dialog

image

Scan flow

## 📋 Pull Request Information **Original PR:** https://github.com/bitwarden/android/pull/6722 **Author:** [@SaintPatrck](https://github.com/SaintPatrck) **Created:** 3/26/2026 **Status:** ✅ Merged **Merged:** 4/9/2026 **Merged by:** [@SaintPatrck](https://github.com/SaintPatrck) **Base:** `main` ← **Head:** `card-scanner/4-addedit-integration` --- ### 📝 Commits (3) - [`daa0596`](https://github.com/bitwarden/android/commit/daa05962341a308b512af5b334409a49f1361569) [PM-34127] feat: Integrate card scanner with VaultAddEdit - [`b712959`](https://github.com/bitwarden/android/commit/b7129594ec238812a9832934db430ba5134fc8ac) Update camera permission dialog - [`5f9f445`](https://github.com/bitwarden/android/commit/5f9f4451e2f133ce9ff8c1f0de25229cba4282c2) Fixup rebase artifacts ### 📊 Changes **11 files changed** (+609 additions, -6 deletions) <details> <summary>View changed files</summary> 📝 `app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/vaultunlocked/VaultUnlockedNavigation.kt` (+8 -0) 📝 `app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditCardItems.kt` (+25 -1) 📝 `app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditItemContent.kt` (+16 -1) 📝 `app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditNavigation.kt` (+2 -0) 📝 `app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditScreen.kt` (+38 -0) 📝 `app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditViewModel.kt` (+157 -0) 📝 `app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/handlers/VaultAddEditCardTypeHandlers.kt` (+11 -2) 📝 `app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditScreenTest.kt` (+50 -0) 📝 `app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditViewModelTest.kt` (+286 -0) 📝 `app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/cardscanner/CardScanViewModelTest.kt` (+14 -2) 📝 `ui/src/main/res/values/strings.xml` (+2 -0) </details> ### 📄 Description ## 🎟️ Tracking https://bitwarden.atlassian.net/browse/PM-34127 ## 📔 Objective Integrate the card scanner with the VaultAddEdit screen: - **VaultAddEditViewModel**: Collect `CardScanManager` results, map scanned card data to form fields (number, expiry, CVV, brand detection), and emit focus event for cardholder name input - **VaultAddEditScreen**: Add "Scan card" button for Card cipher types, gated behind `card-scanner-mobile` feature flag. After a successful scan, focus the cardholder name field and show the keyboard using `DeferredBackgroundEvent` to survive lifecycle filtering - **VaultAddEditCardItems**: New scan card row composable - **VaultUnlockedNavigation**: Wire `CardScanScreen` destination and navigation - **Camera permission**: Reuses existing launcher pattern from QR code scanner Includes ViewModel and Screen tests for scan result handling, partial scans, feature flag gating, and post-scan focus behavior. ## 📸 Screenshots ### Figma designs (based on iOS) <img width="365" src="https://github.com/user-attachments/assets/ad3f69c0-55b7-4f0f-8c72-e091b84efb31" /> ### Permission dialog <img width="348" height="241" alt="image" src="https://github.com/user-attachments/assets/e1b9bdf0-a590-4df5-9eb6-5e4ba001358c" /> ### Scan flow <video src="https://github.com/user-attachments/assets/3b67709f-474e-45c9-b0af-144f6bc2a392" width="365" /> --- <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 20:57:44 -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#55035