[PR #6721] [MERGED] [PM-34126] feat: Add card scan screen #43908

Closed
opened 2026-04-23 22:34:54 -05:00 by GiteaMirror · 0 comments
Owner

📋 Pull Request Information

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

Base: mainHead: card-scanner/3-card-scan-screen


📝 Commits (8)

  • dca5681 Address code review feedback for card scanner
  • a58b58c Remove Closeable implementation from CardTextAnalyzerImpl
  • b9bece6 [PM-34125] feat: Add card text analysis pipeline
  • 00d6666 [PM-34126] feat: Add card scan screen
  • 1d7dde7 Address code review feedback for card scan screen
  • 167de2c Simplify CardScanViewModel state and update flag key
  • d076c37 Move hasHandledScan back into CardScanState
  • 82b689a Add window-size-based layout switching to CardScanScreen

📊 Changes

14 files changed (+636 additions, -0 deletions)

View changed files

📝 app/src/main/kotlin/com/x8bit/bitwarden/data/vault/manager/di/VaultManagerModule.kt (+6 -0)
📝 app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/composition/LocalManagerProvider.kt (+10 -0)
app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/cardscanner/CardScanNavigation.kt (+39 -0)
app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/cardscanner/CardScanScreen.kt (+183 -0)
app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/cardscanner/CardScanViewModel.kt (+97 -0)
📝 app/src/test/kotlin/com/x8bit/bitwarden/ui/platform/base/BitwardenComposeTest.kt (+3 -0)
app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/cardscanner/CardScanScreenTest.kt (+80 -0)
app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/cardscanner/CardScanViewModelTest.kt (+105 -0)
📝 core/src/main/kotlin/com/bitwarden/core/data/manager/model/FlagKey.kt (+9 -0)
📝 ui/src/main/kotlin/com/bitwarden/ui/platform/components/debug/FeatureFlagListItems.kt (+2 -0)
ui/src/main/kotlin/com/bitwarden/ui/platform/feature/cardscanner/manager/CardScanManager.kt (+21 -0)
ui/src/main/kotlin/com/bitwarden/ui/platform/feature/cardscanner/manager/CardScanManagerImpl.kt (+22 -0)
ui/src/main/kotlin/com/bitwarden/ui/platform/feature/cardscanner/util/CardScanResult.kt (+19 -0)
ui/src/test/kotlin/com/bitwarden/ui/platform/feature/cardscanner/manager/CardScanManagerTest.kt (+40 -0)

📄 Description

🎟️ Tracking

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

📔 Objective

Add the card scan screen with camera integration for credit card scanning:

  • CardScanManager: Shared result channel between scanner and consumer, located in ui module (cardscanner/manager/)
  • CardScanResult: Sealed class wrapping CardScanData for success/error states
  • CardScanViewModel: State management with duplicate-scan guarding and DeferredBackgroundEvent
  • CardScanScreen: Composable with camera preview, overlay, and close button
  • CardScanNavigation: Type-safe route and navigation helper
  • CardScanner feature flag: Gated behind card-scanner-mobile FlagKey
  • BitwardenComposeTest: Added cardTextAnalyzer parameter to setContent

Includes ViewModel, Screen, and Manager tests.

📸 Screenshots


🔄 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/6721 **Author:** [@SaintPatrck](https://github.com/SaintPatrck) **Created:** 3/26/2026 **Status:** ✅ Merged **Merged:** 4/7/2026 **Merged by:** [@SaintPatrck](https://github.com/SaintPatrck) **Base:** `main` ← **Head:** `card-scanner/3-card-scan-screen` --- ### 📝 Commits (8) - [`dca5681`](https://github.com/bitwarden/android/commit/dca5681da168398d01ca85188c9ff756da9a7c64) Address code review feedback for card scanner - [`a58b58c`](https://github.com/bitwarden/android/commit/a58b58cdab711c1685df5d0735d88ef4515a55b8) Remove Closeable implementation from CardTextAnalyzerImpl - [`b9bece6`](https://github.com/bitwarden/android/commit/b9bece662b0591e7f71fbf0cca977c3c2625e3c6) [PM-34125] feat: Add card text analysis pipeline - [`00d6666`](https://github.com/bitwarden/android/commit/00d6666f9a0da717a15d20bc35e30dcf98f8144c) [PM-34126] feat: Add card scan screen - [`1d7dde7`](https://github.com/bitwarden/android/commit/1d7dde7f0c2873c747f2fd51e4c54d3c0b981174) Address code review feedback for card scan screen - [`167de2c`](https://github.com/bitwarden/android/commit/167de2c0aecc52f5d85c0f64597fdb3f76097ab3) Simplify CardScanViewModel state and update flag key - [`d076c37`](https://github.com/bitwarden/android/commit/d076c373328fa630c5b8e276e696f35c101e7fe4) Move hasHandledScan back into CardScanState - [`82b689a`](https://github.com/bitwarden/android/commit/82b689abb0fb444b76f5627d21c5705b0d0e0816) Add window-size-based layout switching to CardScanScreen ### 📊 Changes **14 files changed** (+636 additions, -0 deletions) <details> <summary>View changed files</summary> 📝 `app/src/main/kotlin/com/x8bit/bitwarden/data/vault/manager/di/VaultManagerModule.kt` (+6 -0) 📝 `app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/composition/LocalManagerProvider.kt` (+10 -0) ➕ `app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/cardscanner/CardScanNavigation.kt` (+39 -0) ➕ `app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/cardscanner/CardScanScreen.kt` (+183 -0) ➕ `app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/cardscanner/CardScanViewModel.kt` (+97 -0) 📝 `app/src/test/kotlin/com/x8bit/bitwarden/ui/platform/base/BitwardenComposeTest.kt` (+3 -0) ➕ `app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/cardscanner/CardScanScreenTest.kt` (+80 -0) ➕ `app/src/test/kotlin/com/x8bit/bitwarden/ui/vault/feature/cardscanner/CardScanViewModelTest.kt` (+105 -0) 📝 `core/src/main/kotlin/com/bitwarden/core/data/manager/model/FlagKey.kt` (+9 -0) 📝 `ui/src/main/kotlin/com/bitwarden/ui/platform/components/debug/FeatureFlagListItems.kt` (+2 -0) ➕ `ui/src/main/kotlin/com/bitwarden/ui/platform/feature/cardscanner/manager/CardScanManager.kt` (+21 -0) ➕ `ui/src/main/kotlin/com/bitwarden/ui/platform/feature/cardscanner/manager/CardScanManagerImpl.kt` (+22 -0) ➕ `ui/src/main/kotlin/com/bitwarden/ui/platform/feature/cardscanner/util/CardScanResult.kt` (+19 -0) ➕ `ui/src/test/kotlin/com/bitwarden/ui/platform/feature/cardscanner/manager/CardScanManagerTest.kt` (+40 -0) </details> ### 📄 Description ## 🎟️ Tracking https://bitwarden.atlassian.net/browse/PM-34126 ## 📔 Objective Add the card scan screen with camera integration for credit card scanning: - **CardScanManager**: Shared result channel between scanner and consumer, located in `ui` module (`cardscanner/manager/`) - **CardScanResult**: Sealed class wrapping `CardScanData` for success/error states - **CardScanViewModel**: State management with duplicate-scan guarding and `DeferredBackgroundEvent` - **CardScanScreen**: Composable with camera preview, overlay, and close button - **CardScanNavigation**: Type-safe route and navigation helper - **CardScanner feature flag**: Gated behind `card-scanner-mobile` FlagKey - **BitwardenComposeTest**: Added `cardTextAnalyzer` parameter to `setContent` Includes ViewModel, Screen, and Manager tests. ## 📸 Screenshots <img width="365" src="https://github.com/user-attachments/assets/0925094f-41b5-4581-9121-9e31950ae73f" /> --- <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-04-23 22:34:54 -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#43908