import { VaultFilter } from "@bitwarden/angular/modules/vault-filter/models/vault-filter.model"; import { VaultFilterService as BaseVaultFilterService } from "@bitwarden/angular/modules/vault-filter/vault-filter.service"; import { CipherService } from "@bitwarden/common/abstractions/cipher.service"; import { CollectionService } from "@bitwarden/common/abstractions/collection.service"; import { FolderService } from "@bitwarden/common/abstractions/folder.service"; import { OrganizationService } from "@bitwarden/common/abstractions/organization.service"; import { PolicyService } from "@bitwarden/common/abstractions/policy.service"; import { StateService } from "@bitwarden/common/abstractions/state.service"; import { CipherView } from "@bitwarden/common/models/view/cipherView"; export class VaultFilterService extends BaseVaultFilterService { vaultFilter: VaultFilter = new VaultFilter(); allVaults = "allVaults"; myVault = "myVault"; constructor( stateService: StateService, organizationService: OrganizationService, folderService: FolderService, cipherService: CipherService, collectionService: CollectionService, policyService: PolicyService ) { super( stateService, organizationService, folderService, cipherService, collectionService, policyService ); this.vaultFilter.myVaultOnly = false; this.vaultFilter.selectedOrganizationId = null; } getVaultFilter() { return this.vaultFilter; } setVaultFilter(filter: string) { if (filter === this.allVaults) { this.vaultFilter.myVaultOnly = false; this.vaultFilter.selectedOrganizationId = null; } else if (filter === this.myVault) { this.vaultFilter.myVaultOnly = true; this.vaultFilter.selectedOrganizationId = null; } else { this.vaultFilter.myVaultOnly = false; this.vaultFilter.selectedOrganizationId = filter; } } clear() { this.setVaultFilter(this.allVaults); } filterCipherForSelectedVault(cipher: CipherView) { if (!this.vaultFilter.selectedOrganizationId && !this.vaultFilter.myVaultOnly) { return false; } if (this.vaultFilter.selectedOrganizationId) { if (cipher.organizationId === this.vaultFilter.selectedOrganizationId) { return false; } } else if (this.vaultFilter.myVaultOnly) { if (!cipher.organizationId) { return false; } } return true; } }