mirror of
https://github.com/bitwarden/browser
synced 2025-12-18 01:03:35 +00:00
[EC-267] Unassigned collection has disappeared in web vault (#3000)
* feat: add unassigned collection to decrypted collections * feat: add support for unassigned in individual vault * fix: dont activate collection when not selected * fix: remove collection selection completely when pruning * feat: prune collection selection if selecting my vault * fix: filter and only show organization ciphers when unassigned collection is selected * fix: only show unassigned for admins * feat: add unassigned logic to organizational vault buildFilter * refactor: move buildFilter to VaultFilterModel * chore: add buildFilter tests * fix: bugs in filtering logic * refactor: use VaultFilter.buildFilter on desktop * chore: group and reword tests for better readability * feat: add additional test * fix: connect unassigned collection to organization * fix: test by adding missing * chore: tweak test group naming * fix: change undefined to null to better reflect real values
This commit is contained in:
@@ -128,7 +128,7 @@ export class VaultComponent implements OnInit, OnDestroy {
|
||||
await this.openGenerator(false);
|
||||
break;
|
||||
case "syncCompleted":
|
||||
await this.ciphersComponent.reload(this.buildFilter());
|
||||
await this.ciphersComponent.reload(this.activeFilter.buildFilter());
|
||||
await this.vaultFilterComponent.reloadCollectionsAndFolders(this.activeFilter);
|
||||
await this.vaultFilterComponent.reloadOrganizations();
|
||||
break;
|
||||
@@ -241,7 +241,7 @@ export class VaultComponent implements OnInit, OnDestroy {
|
||||
selectedOrganizationId: params.selectedOrganizationId,
|
||||
myVaultOnly: params.myVaultOnly ?? false,
|
||||
});
|
||||
await this.ciphersComponent.reload(this.buildFilter());
|
||||
await this.ciphersComponent.reload(this.activeFilter.buildFilter());
|
||||
});
|
||||
}
|
||||
|
||||
@@ -540,7 +540,10 @@ export class VaultComponent implements OnInit, OnDestroy {
|
||||
this.i18nService.t(this.calculateSearchBarLocalizationString(vaultFilter))
|
||||
);
|
||||
this.activeFilter = vaultFilter;
|
||||
await this.ciphersComponent.reload(this.buildFilter(), vaultFilter.status === "trash");
|
||||
await this.ciphersComponent.reload(
|
||||
this.activeFilter.buildFilter(),
|
||||
vaultFilter.status === "trash"
|
||||
);
|
||||
this.go();
|
||||
}
|
||||
|
||||
@@ -570,40 +573,6 @@ export class VaultComponent implements OnInit, OnDestroy {
|
||||
return "searchVault";
|
||||
}
|
||||
|
||||
private buildFilter(): (cipher: CipherView) => boolean {
|
||||
return (cipher) => {
|
||||
let cipherPassesFilter = true;
|
||||
if (this.activeFilter.status === "favorites" && cipherPassesFilter) {
|
||||
cipherPassesFilter = cipher.favorite;
|
||||
}
|
||||
if (this.activeFilter.status === "trash" && cipherPassesFilter) {
|
||||
cipherPassesFilter = cipher.isDeleted;
|
||||
}
|
||||
if (this.activeFilter.cipherType != null && cipherPassesFilter) {
|
||||
cipherPassesFilter = cipher.type === this.activeFilter.cipherType;
|
||||
}
|
||||
if (
|
||||
this.activeFilter.selectedFolder &&
|
||||
this.activeFilter.selectedFolderId != "none" &&
|
||||
cipherPassesFilter
|
||||
) {
|
||||
cipherPassesFilter = cipher.folderId === this.activeFilter.selectedFolderId;
|
||||
}
|
||||
if (this.activeFilter.selectedCollectionId != null && cipherPassesFilter) {
|
||||
cipherPassesFilter =
|
||||
cipher.collectionIds != null &&
|
||||
cipher.collectionIds.indexOf(this.activeFilter.selectedCollectionId) > -1;
|
||||
}
|
||||
if (this.activeFilter.selectedOrganizationId != null && cipherPassesFilter) {
|
||||
cipherPassesFilter = cipher.organizationId === this.activeFilter.selectedOrganizationId;
|
||||
}
|
||||
if (this.activeFilter.myVaultOnly && cipherPassesFilter) {
|
||||
cipherPassesFilter = cipher.organizationId === null;
|
||||
}
|
||||
return cipherPassesFilter;
|
||||
};
|
||||
}
|
||||
|
||||
async openGenerator(comingFromAddEdit: boolean, passwordType = true) {
|
||||
if (this.modal != null) {
|
||||
this.modal.close();
|
||||
|
||||
Reference in New Issue
Block a user