[PR #6717] feat: Add collection management to Android #26192

Open
opened 2026-04-17 01:42:14 -05:00 by GiteaMirror · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/bitwarden/android/pull/6717
Author: @dasien
Created: 3/25/2026
Status: 🔄 Open

Base: mainHead: android-collections


📝 Commits (6)

  • d3e4dc8 feat: Add collection management (create, edit, delete) to Settings > Vault
  • f6435a0 feat: Replace encryptCollection stub with real SDK call
  • 27eab55 fix: Adapt to local SDK API changes for local development
  • d0809a7 fix: Include access permissions in collection update request
  • 5dcaf6e fix: Grant creating user manage access and fix permission checks
  • 5d5cbdd fix: Address code review findings and add ViewModel tests

📊 Changes

58 files changed (+4337 additions, -3 deletions)

View changed files

📝 .gitignore (+3 -0)
📝 app/build.gradle.kts (+1 -1)
📝 app/src/main/kotlin/com/x8bit/bitwarden/data/auth/repository/model/Organization.kt (+23 -1)
📝 app/src/main/kotlin/com/x8bit/bitwarden/data/auth/repository/util/SyncResponseJsonExtensions.kt (+7 -0)
📝 app/src/main/kotlin/com/x8bit/bitwarden/data/platform/manager/sdk/repository/ServerCommunicationConfigRepositoryImpl.kt (+1 -0)
📝 app/src/main/kotlin/com/x8bit/bitwarden/data/vault/datasource/disk/VaultDiskSource.kt (+5 -0)
📝 app/src/main/kotlin/com/x8bit/bitwarden/data/vault/datasource/disk/VaultDiskSourceImpl.kt (+4 -0)
📝 app/src/main/kotlin/com/x8bit/bitwarden/data/vault/datasource/network/di/VaultNetworkModule.kt (+7 -0)
📝 app/src/main/kotlin/com/x8bit/bitwarden/data/vault/datasource/sdk/VaultSdkSource.kt (+12 -0)
📝 app/src/main/kotlin/com/x8bit/bitwarden/data/vault/datasource/sdk/VaultSdkSourceImpl.kt (+11 -0)
app/src/main/kotlin/com/x8bit/bitwarden/data/vault/manager/CollectionManager.kt (+38 -0)
app/src/main/kotlin/com/x8bit/bitwarden/data/vault/manager/CollectionManagerImpl.kt (+163 -0)
📝 app/src/main/kotlin/com/x8bit/bitwarden/data/vault/manager/di/VaultManagerModule.kt (+17 -0)
📝 app/src/main/kotlin/com/x8bit/bitwarden/data/vault/repository/VaultRepository.kt (+2 -0)
📝 app/src/main/kotlin/com/x8bit/bitwarden/data/vault/repository/VaultRepositoryImpl.kt (+3 -0)
📝 app/src/main/kotlin/com/x8bit/bitwarden/data/vault/repository/di/VaultRepositoryModule.kt (+3 -0)
app/src/main/kotlin/com/x8bit/bitwarden/data/vault/repository/model/CreateCollectionResult.kt (+24 -0)
app/src/main/kotlin/com/x8bit/bitwarden/data/vault/repository/model/DeleteCollectionResult.kt (+23 -0)
app/src/main/kotlin/com/x8bit/bitwarden/data/vault/repository/model/UpdateCollectionResult.kt (+24 -0)
📝 app/src/main/kotlin/com/x8bit/bitwarden/data/vault/repository/util/InitUserCryptoMethodExtensions.kt (+1 -1)

...and 38 more files

📄 Description

Summary

  • Add full CRUD support for managing collections on Android via Settings > Vault > Collections
  • Collections are organization-scoped vault items available on paid plans
  • Network layer: CollectionsApi, CollectionService with create/update/delete/get endpoints
  • Data layer: CollectionManager with encrypt → API → disk → decrypt flow
  • Permission model: expanded with collection-specific permission fields and role-based checks matching web client logic
  • UI: CollectionsScreen (list with org subtitles, permission-gated FAB), CollectionAddEditScreen (name field, save, delete)
  • Creating user automatically gets manage access on new collections
  • Update requests preserve existing group/user access permissions

Test plan

  • Log in with account that has a paid organization
  • Navigate to Settings > Vault > Collections
  • Verify FAB is visible for Owner/Admin roles
  • Create a new collection and verify snackbar confirmation
  • Move an item to the new collection (verify no permission error)
  • Edit a collection name and verify save works
  • Delete a collection and verify confirmation dialog and removal
  • Verify FAB is hidden for users without create permission
  • Verify / character is rejected in collection name

Notes

  • SDK encryptCollection requires a local SDK build from sdk-internal with collection encryption support (not yet in published SDK)
  • Commit 27eab557 adapts to local SDK API changes for development; will need adjustment when official SDK is bumped
  • Requirements doc at docs/COLLECTIONS_REQUIREMENTS.md
  • Implementation plan at .claude/outputs/plans/COLLECTION-MANAGEMENT-PLAN.md

🔄 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/6717 **Author:** [@dasien](https://github.com/dasien) **Created:** 3/25/2026 **Status:** 🔄 Open **Base:** `main` ← **Head:** `android-collections` --- ### 📝 Commits (6) - [`d3e4dc8`](https://github.com/bitwarden/android/commit/d3e4dc854bdde69a5b46ba3e97639cee1455fb2b) feat: Add collection management (create, edit, delete) to Settings > Vault - [`f6435a0`](https://github.com/bitwarden/android/commit/f6435a0a1efd491ae6b708cda84301e6c26dd07e) feat: Replace encryptCollection stub with real SDK call - [`27eab55`](https://github.com/bitwarden/android/commit/27eab5570f656daca908b35c89c14f38c1eedd10) fix: Adapt to local SDK API changes for local development - [`d0809a7`](https://github.com/bitwarden/android/commit/d0809a7c07e5b5e9bc0d465d67da957b0ae8272c) fix: Include access permissions in collection update request - [`5dcaf6e`](https://github.com/bitwarden/android/commit/5dcaf6e4a8a8a93f691f5b0866aa6d65ad7d2f79) fix: Grant creating user manage access and fix permission checks - [`5d5cbdd`](https://github.com/bitwarden/android/commit/5d5cbdd178e2bb48cd35692b7e63905615722276) fix: Address code review findings and add ViewModel tests ### 📊 Changes **58 files changed** (+4337 additions, -3 deletions) <details> <summary>View changed files</summary> 📝 `.gitignore` (+3 -0) 📝 `app/build.gradle.kts` (+1 -1) 📝 `app/src/main/kotlin/com/x8bit/bitwarden/data/auth/repository/model/Organization.kt` (+23 -1) 📝 `app/src/main/kotlin/com/x8bit/bitwarden/data/auth/repository/util/SyncResponseJsonExtensions.kt` (+7 -0) 📝 `app/src/main/kotlin/com/x8bit/bitwarden/data/platform/manager/sdk/repository/ServerCommunicationConfigRepositoryImpl.kt` (+1 -0) 📝 `app/src/main/kotlin/com/x8bit/bitwarden/data/vault/datasource/disk/VaultDiskSource.kt` (+5 -0) 📝 `app/src/main/kotlin/com/x8bit/bitwarden/data/vault/datasource/disk/VaultDiskSourceImpl.kt` (+4 -0) 📝 `app/src/main/kotlin/com/x8bit/bitwarden/data/vault/datasource/network/di/VaultNetworkModule.kt` (+7 -0) 📝 `app/src/main/kotlin/com/x8bit/bitwarden/data/vault/datasource/sdk/VaultSdkSource.kt` (+12 -0) 📝 `app/src/main/kotlin/com/x8bit/bitwarden/data/vault/datasource/sdk/VaultSdkSourceImpl.kt` (+11 -0) ➕ `app/src/main/kotlin/com/x8bit/bitwarden/data/vault/manager/CollectionManager.kt` (+38 -0) ➕ `app/src/main/kotlin/com/x8bit/bitwarden/data/vault/manager/CollectionManagerImpl.kt` (+163 -0) 📝 `app/src/main/kotlin/com/x8bit/bitwarden/data/vault/manager/di/VaultManagerModule.kt` (+17 -0) 📝 `app/src/main/kotlin/com/x8bit/bitwarden/data/vault/repository/VaultRepository.kt` (+2 -0) 📝 `app/src/main/kotlin/com/x8bit/bitwarden/data/vault/repository/VaultRepositoryImpl.kt` (+3 -0) 📝 `app/src/main/kotlin/com/x8bit/bitwarden/data/vault/repository/di/VaultRepositoryModule.kt` (+3 -0) ➕ `app/src/main/kotlin/com/x8bit/bitwarden/data/vault/repository/model/CreateCollectionResult.kt` (+24 -0) ➕ `app/src/main/kotlin/com/x8bit/bitwarden/data/vault/repository/model/DeleteCollectionResult.kt` (+23 -0) ➕ `app/src/main/kotlin/com/x8bit/bitwarden/data/vault/repository/model/UpdateCollectionResult.kt` (+24 -0) 📝 `app/src/main/kotlin/com/x8bit/bitwarden/data/vault/repository/util/InitUserCryptoMethodExtensions.kt` (+1 -1) _...and 38 more files_ </details> ### 📄 Description ## Summary - Add full CRUD support for managing collections on Android via Settings > Vault > Collections - Collections are organization-scoped vault items available on paid plans - Network layer: CollectionsApi, CollectionService with create/update/delete/get endpoints - Data layer: CollectionManager with encrypt → API → disk → decrypt flow - Permission model: expanded with collection-specific permission fields and role-based checks matching web client logic - UI: CollectionsScreen (list with org subtitles, permission-gated FAB), CollectionAddEditScreen (name field, save, delete) - Creating user automatically gets manage access on new collections - Update requests preserve existing group/user access permissions ## Test plan - [ ] Log in with account that has a paid organization - [ ] Navigate to Settings > Vault > Collections - [ ] Verify FAB is visible for Owner/Admin roles - [ ] Create a new collection and verify snackbar confirmation - [ ] Move an item to the new collection (verify no permission error) - [ ] Edit a collection name and verify save works - [ ] Delete a collection and verify confirmation dialog and removal - [ ] Verify FAB is hidden for users without create permission - [ ] Verify `/` character is rejected in collection name ## Notes - SDK `encryptCollection` requires a local SDK build from `sdk-internal` with collection encryption support (not yet in published SDK) - Commit `27eab557` adapts to local SDK API changes for development; will need adjustment when official SDK is bumped - Requirements doc at `docs/COLLECTIONS_REQUIREMENTS.md` - Implementation plan at `.claude/outputs/plans/COLLECTION-MANAGEMENT-PLAN.md` --- <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-17 01:42:14 -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#26192