Commit Graph
3032 Commits
Author SHA1 Message Date
anonymousanddasien 5d5cbdd178 fix: Address code review findings and add ViewModel tests
Code review fixes:
- Remove duplicate KeyConnectorUrl branch in InitUserCryptoMethodExtensions
- Fix CollectionManagerTest createCollection calls to include organizationUserId
- Prevent vault sync from overwriting user's in-progress edits in
  CollectionAddEditViewModel (early return if already in Content state)
- Add per-collection canManage permission check before allowing edit
  navigation, based on collection manage flag and org role
- Gitignore .claude/outputs/ to exclude plan documents from commits

New tests:
- CollectionsViewModelTest: 11 tests covering navigation, state updates,
  FAB visibility based on permissions, snackbar relay, and error states
- CollectionAddEditViewModelTest: 20 tests covering create/edit/delete
  flows, name validation, dialog states, snackbar relay, and the sync
  overwrite protection fix

Updated test fixtures:
- SyncResponseProfileUtil: add organizationUserId, limitCollectionCreation,
  limitCollectionDeletion fields
2026-03-25 14:02:03 -04:00
anonymousanddasien 5dcaf6e4a8 fix: Grant creating user manage access and fix permission checks
- Add organizationUserId to SyncResponseJson and Organization domain
  model to identify the current user's org membership ID
- Include creating user with manage access in collection create request,
  matching web client behavior
- Add limitCollectionCreation/limitCollectionDeletion to org model
- Fix FAB visibility: use canManageCollections computed property that
  checks role (Owner/Admin) in addition to permissions flags, matching
  web client logic: !limitCollectionCreation || isAdmin || permissions
2026-03-25 13:08:14 -04:00
Patrick Honkonen d0809a7c07 fix: Include access permissions in collection update request
The PUT endpoint for updating a collection requires groups and users
access permissions in the request body. Previously only the encrypted
name was sent, causing the server to reject the request with "At least
one member or group must have can manage permission."

The update flow now fetches collection details via the new /details
endpoint before sending the PUT request, echoing back existing groups,
users, and externalId. Also fixes collection edit screen passing
organizationName instead of organizationId and resolves compile errors
from new parameters across tests.
2026-03-24 16:44:16 -04:00
anonymousandPatrick Honkonen 27eab5570f fix: Adapt to local SDK API changes for local development
Add vaultUrl parameter to SsoCookieVendorConfig and handle new
KeyConnectorUrl variant in InitUserCryptoMethod when expressions.
These changes are required for compatibility with the latest
sdk-internal build used for local collection encryption testing.
2026-03-24 15:09:33 -04:00
anonymousandPatrick Honkonen f6435a0a1e feat: Replace encryptCollection stub with real SDK call
Remove the UnsupportedOperationException stub and delegate to the
actual SDK collections().encrypt() method. Requires SDK version with
collection encryption support (not yet in published 2.0.0-5451).
2026-03-24 15:09:33 -04:00
anonymousandPatrick Honkonen d3e4dc854b feat: Add collection management (create, edit, delete) to Settings > Vault
Add full CRUD support for managing collections on Android, accessible
via Settings > Vault > Collections. Collections are organization-scoped
vault items available on paid plans.

Changes include:
- Network layer: CollectionsApi, CollectionService, request/response models
- Data layer: CollectionManager with encrypt > API > disk > decrypt flow
- Permission model: expanded SyncResponseJson.Permissions and Organization
  with collection-specific permission fields
- UI: CollectionsScreen (list with org subtitles, permission-gated FAB),
  CollectionAddEditScreen (name field, save, delete with confirmation)
- Navigation: type-safe routes wired through VaultSettings entry point
- VaultDiskSource.deleteCollection and VaultSdkSource.encryptCollection stub

Note: encryptCollection is stubbed pending SDK release (SDK changes are
implemented but not yet published). Create/update will fail at runtime
until the SDK is updated.
2026-03-24 15:09:29 -04:00
David PerezandGitHub b4917ceb95 chore: Implement Folder Repo interface for Bitwarden SDK (#6691) 2026-03-24 17:39:47 +00:00
David PerezandGitHub 2b69753397 PM-29871: bug: Add more accessibility callouts for external links (#6708) 2026-03-23 20:06:16 +00:00
Patrick HonkonenandGitHub c786756f5b [PM-33999] chore: Standardize casing of Premium account status references (#6707) 2026-03-23 15:33:13 +00:00
078b4e6f1b PM-25654: feat: Preview attachment (#6675)
Co-authored-by: amrg101 <amr2018xo@gmail.com>
2026-03-23 14:07:50 +00:00
Patrick HonkonenandGitHub 2e29ab389d [PM-33515] feat: Render premium upgrade banner in Vault UI (#6698) 2026-03-20 21:27:18 +00:00
Patrick HonkonenandGitHub 988a321944 [PM-33514] feat: Add premium upgrade banner visibility logic (#6696) 2026-03-20 15:58:47 +00:00
aj-rosadoandGitHub 044bfb1bb2 [PM-23560] bug: Added guard to ensure duplicate scan events are not fired (#6687) 2026-03-20 15:24:16 +00:00
David PerezandGitHub eab2720e3e PM-32721: bug: Add sorting to password history (#6700) 2026-03-20 14:30:08 +00:00
Patrick HonkonenandGitHub 4a069e9703 [PM-33513] feat: Add checkout callback deep link handling (#6692) 2026-03-20 14:16:43 +00:00
Patrick HonkonenandGitHub 12c96de168 chore: Reorganize imports in VaultViewModel (#6701) 2026-03-20 14:08:32 +00:00
David PerezandGitHub 4375782b09 PM-33913: bug: Remove org event to avoid duplicate entry (#6699) 2026-03-20 13:57:45 +00:00
David PerezandGitHub e969a42eff PM-33909: bug: Check the column index before querying for 3rd party autofill data (#6697) 2026-03-19 20:47:45 +00:00
David PerezandGitHub 68e2fe4dd7 PM-33907: bug: Handle exceptions thrown when querying the AutofillManager (#6695) 2026-03-19 20:25:00 +00:00
Patrick HonkonenandGitHub 37907cbe0c [PM-33512] feat: Add PremiumStateManager for upgrade banner eligibility (#6690) 2026-03-19 19:32:27 +00:00
Patrick HonkonenandGitHub c1d1de27f0 [PM-33510] feat: Add Play Billing Library dependency and PlayBillingManager (#6680) 2026-03-19 18:12:03 +00:00
David PerezandGitHub be8777cb8e PM-33893: bug: Crash caused by empty credential password (#6693) 2026-03-19 17:12:59 +00:00
Patrick HonkonenandGitHub 2b9e142107 [PM-33509] feat: Add BillingRepository and Hilt billing modules (#6674) 2026-03-18 19:31:50 +00:00
David PerezandGitHub 685493fde0 misc: Rename the VaultDiskSource Flows (#6689) 2026-03-18 18:59:20 +00:00
David PerezandGitHub 04c3147a56 misc: Add an error message to the DownloadAttachmentResult (#6688) 2026-03-18 16:22:54 +00:00
David PerezandGitHub 183255cbff PM-33160: Instantiate SDK client with Repositories class (#6681) 2026-03-17 20:28:14 +00:00
Patrick HonkonenandGitHub 4ed731706c [PM-33365] feat: Add GmsManager to gate CXP features on GMS Core version (#6678) 2026-03-17 20:21:53 +00:00
Patrick HonkonenandGitHub ec3c9001cf [PM-33553] fix: Remove "Why am I seeing this?" link from cookie sync screen (#6676) 2026-03-17 16:15:45 +00:00
David PerezandGitHub 7666fb82b8 misc: Add support for icons in buttons via BitwardenButtonData (#6682) 2026-03-17 16:12:48 +00:00
Patrick HonkonenandGitHub e91797f86c Revert "Update SDK to 2.0.0-5676-14521973" (#6679) 2026-03-16 19:19:00 +00:00
André BispoandGitHub ad7dc3fb5d [PM-33356] feat: Sync when push notification policy changed is received (#6664) 2026-03-16 15:37:26 +00:00
bw-ghapp[bot]GitHubbw-ghapp[bot] <178206702+bw-ghapp[bot]@users.noreply.github.com>Patrick Honkonen
43bd83f883 Update SDK to 2.0.0-5676-14521973 (#6615)
Co-authored-by: bw-ghapp[bot] <178206702+bw-ghapp[bot]@users.noreply.github.com>
Co-authored-by: Patrick Honkonen <phonkonen@bitwarden.com>
2026-03-16 15:00:54 +00:00
aj-rosadoandGitHub 6888e676dc [PM-32663] feat: Update vault migration screens (#6660) 2026-03-16 12:19:16 +00:00
Patrick HonkonenandGitHub ae5a14e386 [PM-33511] feat: Add creationDate to UserState.Account (#6662) 2026-03-13 20:50:00 +00:00
David PerezandGitHub 53afde1509 PM-25654: Update premium dialog for attachments (#6663) 2026-03-13 18:08:40 +00:00
Patrick HonkonenandGitHub 13c8cc08a6 [PM-33506] feat: Add PremiumStatusChanged push notification support (#6656) 2026-03-13 17:09:26 +00:00
Patrick HonkonenandGitHub 85c3a1deb8 [PM-33561] debt: Wire CipherManager and cipher ViewModel error handlers (#6651) 2026-03-13 17:08:41 +00:00
Patrick HonkonenandGitHub 870f15418b [PM-33394] debt: Wire FolderManager and folder ViewModel error handlers (#6653) 2026-03-13 17:07:15 +00:00
Patrick HonkonenandGitHub 453fc22d57 [PM-33507] feat: Add premium upgrade banner dismissal persistence (#6657) 2026-03-13 15:52:15 +00:00
Patrick HonkonenandGitHub 93a3e0af32 [PM-33560] debt: Wire SendManager and Send ViewModel error handlers (#6652) 2026-03-13 15:31:04 +00:00
David PerezandGitHub 01a137e4e3 PM-29871: bug: Add external link callouts for buttons (#6648) 2026-03-13 14:55:33 +00:00
David PerezandGitHub 5b965e7923 Update error state to allow for a more customizable button (#6654) 2026-03-13 14:21:46 +00:00
David PerezandGitHub d9f8c3d792 PM-29869: bug: Update colorscheme to improve accessibility (#6647) 2026-03-12 18:06:54 +00:00
David PerezandGitHub 8455f7f706 PM-33441: bug: Add external link callout for start registration screen (#6646) 2026-03-12 17:47:26 +00:00
Patrick HonkonenandGitHub bb46c3812f [PM-33394] fix: Surface CookieRedirectException message during sync-on-unlock (#6643) 2026-03-12 15:10:05 +00:00
Patrick HonkonenandGitHub 9068307928 [PM-33394] debt: Add userFriendlyMessage extension and errorMessage to result types (#6642) 2026-03-12 13:56:49 +00:00
David PerezandGitHub 04bcd35776 PM-33411: bug: Defer early navigation until lifecycle is resumed (#6638) 2026-03-11 21:26:58 +00:00
David PerezandGitHub 55e65480f1 PM-33428: bug: Fix loading dialog statusbar content color (#6641) 2026-03-11 21:26:39 +00:00
aj-rosadoandGitHub 417a14fca2 [PM-29673] feat: Improved pre-polutated data on the FlightRecorder logs (#6616) 2026-03-11 14:36:43 +00:00
David PerezandGitHub 44f5f614b6 PM-29871: bug: Add external link callouts (#6634) 2026-03-10 20:53:16 +00:00