[PR #6853] [PM-32806] feat: Add Passport item type #64169

Open
opened 2026-05-12 03:40:58 -05:00 by GiteaMirror · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/bitwarden/android/pull/6853
Author: @SaintPatrck
Created: 4/29/2026
Status: 🔄 Open

Base: new-item-types/PM-32808_drivers-licenseHead: new-item-types/PM-32806_passport


📝 Commits (10+)

  • c29d33a PM-32009 feat: Add infrastructure for new vault item types
  • 46c416e Address review findings: feature flag gating, logging, save guard
  • d5d752e Address review feedback: enumerate bank account type and add SDK mapping
  • c9f1030 Add test coverage for new vault item type infrastructure
  • 8309266 Fix rebase resolution: restore PremiumStateManager logic and dedupe bankAccount fixtures
  • ffff3d3 Fix test fixture cascade by defaulting new cipher type fields to null
  • 1d865d1 Address review feedback for new item type infrastructure
  • 30b7b1d Revert createMockSdkCipher bankAccount default to null
  • 6fe7fba Default bankAccount fixtures to populated mocks for symmetry
  • 599f7d0 Drop redundant bankAccount overrides now that fixtures default to populated mocks

📊 Changes

79 files changed (+6780 additions, -62 deletions)

View changed files

📝 app/src/main/kotlin/com/x8bit/bitwarden/data/platform/util/CipherViewExtensions.kt (+1 -2)
📝 app/src/main/kotlin/com/x8bit/bitwarden/data/vault/repository/util/VaultSdkCipherExtensions.kt (+49 -3)
📝 app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/search/SearchNavigation.kt (+12 -0)
📝 app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/search/SearchViewModel.kt (+100 -1)
📝 app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/search/model/SearchType.kt (+15 -0)
📝 app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/search/util/SearchTypeDataExtensions.kt (+22 -1)
📝 app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/search/util/SearchTypeExtensions.kt (+3 -0)
📝 app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/components/model/CreateVaultItemType.kt (+15 -0)
📝 app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/components/util/CreateVaultItemTypeExtensions.kt (+3 -0)
app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditBankAccountItems.kt (+205 -0)
app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditDriversLicenseItems.kt (+190 -0)
📝 app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditItemContent.kt (+30 -0)
app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditPassportItems.kt (+271 -0)
📝 app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditScreen.kt (+18 -0)
📝 app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditViewModel.kt (+547 -0)
app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/handlers/VaultAddEditBankAccountTypeHandlers.kt (+131 -0)
app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/handlers/VaultAddEditDriversLicenseTypeHandlers.kt (+119 -0)
app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/handlers/VaultAddEditPassportTypeHandlers.kt (+173 -0)
📝 app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/model/CustomFieldType.kt (+3 -0)
📝 app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/util/CipherViewExtensions.kt (+16 -1)

...and 59 more files

📄 Description

🎟️ Tracking

PM-32806 — third Android Story under epic PM-32009 (New Item Types).

Stacked on #6852 (PM-32808 Driver's License)#6851 (PM-32810 Bank Account). Review and merge order: PM-32810 → PM-32808 → PM-32806 → PM-34123 → PM-35396.

📔 Objective

Third vertical slice of the New Item Types epic for Android. Adds the Passport cipher type's Add/Edit form, View screen, vault listing entry, search support, and a single quick-copy overflow action ("Copy passport number") on top of the Driver's License slice.

The View screen treats the passport number (national identification number) as a hidden-by-default field with reveal toggle and copy action, mirroring the Card item type's number/CVV UX. AddEdit follows the same Card pattern. Visibility is tracked via rememberSaveable since the canonical Passport state model uses plain String?.

The vault list trailing action is a single quick-copy button gated on the SDK's CopyableCipherFields.PASSPORT_* flag (TODO(PM-32009) until the SDK exposes it). The vault list row subtitle is intentionally not formatted client-side — CipherListView.subtitle stays SDK-owned.

This Android slice consumes the canonical phase-01-04 Passport data model with split fields (surname/givenName, separate dobMonth/Day/Year, issueMonth/Day/Year, expirationMonth/Day/Year).

SDK dependency

The Bitwarden SDK does not yet expose CipherType.PASSPORT, CipherListViewType.Passport, PassportView on CipherView, or CopyableCipherFields.PASSPORT_*. Affected sites carry TODO(PM-32009) markers documenting the additions required:

  • SearchViewModel.kt:599 — passport number copy lookup
  • SearchTypeDataExtensions.kt:143 — search filter predicate
  • VaultItemListingViewModel.kt:1327 — listing copy lookup
  • VaultItemListingDataExtensions.kt:93 — listing filter predicate
  • CipherListViewExtensions.kt:104 — overflow emission
  • VaultViewModel.kt:867 — vault overview copy lookup
  • VaultDataExtensions.kt:158 — Passport count

The AddEdit form, View screen, ViewModel actions, search/listing wiring, and the overflow action data class are live today and exercised by tests against synthetic state.

📸 Screenshots

UI screenshots will be added before this PR is moved out of draft.


🔄 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/6853 **Author:** [@SaintPatrck](https://github.com/SaintPatrck) **Created:** 4/29/2026 **Status:** 🔄 Open **Base:** `new-item-types/PM-32808_drivers-license` ← **Head:** `new-item-types/PM-32806_passport` --- ### 📝 Commits (10+) - [`c29d33a`](https://github.com/bitwarden/android/commit/c29d33aead4f4e9e284ba20152e04d49147b4270) [PM-32009] feat: Add infrastructure for new vault item types - [`46c416e`](https://github.com/bitwarden/android/commit/46c416ea734009169338dd30ddf7de8cc5c34192) Address review findings: feature flag gating, logging, save guard - [`d5d752e`](https://github.com/bitwarden/android/commit/d5d752e5db8a65dec3513983d6fa8cbc0f2ca415) Address review feedback: enumerate bank account type and add SDK mapping - [`c9f1030`](https://github.com/bitwarden/android/commit/c9f1030927638f753b1ade9d29f57c2918345385) Add test coverage for new vault item type infrastructure - [`8309266`](https://github.com/bitwarden/android/commit/83092666c45ed1289269ff6e98a4bf612405fd77) Fix rebase resolution: restore PremiumStateManager logic and dedupe bankAccount fixtures - [`ffff3d3`](https://github.com/bitwarden/android/commit/ffff3d3272d13700bb75d377699bc58876e9f5ee) Fix test fixture cascade by defaulting new cipher type fields to null - [`1d865d1`](https://github.com/bitwarden/android/commit/1d865d1b454fb0a3b15b151dccccf993202870d6) Address review feedback for new item type infrastructure - [`30b7b1d`](https://github.com/bitwarden/android/commit/30b7b1d36c3dc3afeaf6c9d6b3a8974d1bd613be) Revert createMockSdkCipher bankAccount default to null - [`6fe7fba`](https://github.com/bitwarden/android/commit/6fe7fbaa7858432a9a08af115da96575f4e8a7c3) Default bankAccount fixtures to populated mocks for symmetry - [`599f7d0`](https://github.com/bitwarden/android/commit/599f7d0ba870b28cab07bdad5a60584f201b5ea1) Drop redundant bankAccount overrides now that fixtures default to populated mocks ### 📊 Changes **79 files changed** (+6780 additions, -62 deletions) <details> <summary>View changed files</summary> 📝 `app/src/main/kotlin/com/x8bit/bitwarden/data/platform/util/CipherViewExtensions.kt` (+1 -2) 📝 `app/src/main/kotlin/com/x8bit/bitwarden/data/vault/repository/util/VaultSdkCipherExtensions.kt` (+49 -3) 📝 `app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/search/SearchNavigation.kt` (+12 -0) 📝 `app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/search/SearchViewModel.kt` (+100 -1) 📝 `app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/search/model/SearchType.kt` (+15 -0) 📝 `app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/search/util/SearchTypeDataExtensions.kt` (+22 -1) 📝 `app/src/main/kotlin/com/x8bit/bitwarden/ui/platform/feature/search/util/SearchTypeExtensions.kt` (+3 -0) 📝 `app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/components/model/CreateVaultItemType.kt` (+15 -0) 📝 `app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/components/util/CreateVaultItemTypeExtensions.kt` (+3 -0) ➕ `app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditBankAccountItems.kt` (+205 -0) ➕ `app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditDriversLicenseItems.kt` (+190 -0) 📝 `app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditItemContent.kt` (+30 -0) ➕ `app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditPassportItems.kt` (+271 -0) 📝 `app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditScreen.kt` (+18 -0) 📝 `app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/VaultAddEditViewModel.kt` (+547 -0) ➕ `app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/handlers/VaultAddEditBankAccountTypeHandlers.kt` (+131 -0) ➕ `app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/handlers/VaultAddEditDriversLicenseTypeHandlers.kt` (+119 -0) ➕ `app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/handlers/VaultAddEditPassportTypeHandlers.kt` (+173 -0) 📝 `app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/model/CustomFieldType.kt` (+3 -0) 📝 `app/src/main/kotlin/com/x8bit/bitwarden/ui/vault/feature/addedit/util/CipherViewExtensions.kt` (+16 -1) _...and 59 more files_ </details> ### 📄 Description ## 🎟️ Tracking [PM-32806](https://bitwarden.atlassian.net/browse/PM-32806) — third Android Story under epic [PM-32009](https://bitwarden.atlassian.net/browse/PM-32009) (New Item Types). > Stacked on [#6852 (PM-32808 Driver's License)](https://github.com/bitwarden/android/pull/6852) → [#6851 (PM-32810 Bank Account)](https://github.com/bitwarden/android/pull/6851). Review and merge order: PM-32810 → PM-32808 → **PM-32806** → PM-34123 → PM-35396. ## 📔 Objective Third vertical slice of the New Item Types epic for Android. Adds the Passport cipher type's Add/Edit form, View screen, vault listing entry, search support, and a single quick-copy overflow action ("Copy passport number") on top of the Driver's License slice. The View screen treats the **passport number (national identification number) as a hidden-by-default field** with reveal toggle and copy action, mirroring the Card item type's number/CVV UX. AddEdit follows the same Card pattern. Visibility is tracked via `rememberSaveable` since the canonical Passport state model uses plain `String?`. The vault list trailing action is a single quick-copy button gated on the SDK's `CopyableCipherFields.PASSPORT_*` flag (`TODO(PM-32009)` until the SDK exposes it). The vault list row subtitle is intentionally not formatted client-side — `CipherListView.subtitle` stays SDK-owned. This Android slice consumes the canonical phase-01-04 Passport data model with split fields (`surname`/`givenName`, separate `dobMonth`/`Day`/`Year`, `issueMonth`/`Day`/`Year`, `expirationMonth`/`Day`/`Year`). ## SDK dependency The Bitwarden SDK does not yet expose `CipherType.PASSPORT`, `CipherListViewType.Passport`, `PassportView` on `CipherView`, or `CopyableCipherFields.PASSPORT_*`. Affected sites carry `TODO(PM-32009)` markers documenting the additions required: - `SearchViewModel.kt:599` — passport number copy lookup - `SearchTypeDataExtensions.kt:143` — search filter predicate - `VaultItemListingViewModel.kt:1327` — listing copy lookup - `VaultItemListingDataExtensions.kt:93` — listing filter predicate - `CipherListViewExtensions.kt:104` — overflow emission - `VaultViewModel.kt:867` — vault overview copy lookup - `VaultDataExtensions.kt:158` — Passport count The AddEdit form, View screen, ViewModel actions, search/listing wiring, and the overflow action data class are live today and exercised by tests against synthetic state. ## 📸 Screenshots UI screenshots will be added before this PR is moved out of draft. [PM-32806]: https://bitwarden.atlassian.net/browse/PM-32806?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ [PM-32009]: https://bitwarden.atlassian.net/browse/PM-32009?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-05-12 03:40:58 -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#64169