1
0
mirror of https://github.com/bitwarden/jslib synced 2025-12-06 00:03:29 +00:00

[refactor] Establish pattern for interfaces in module scoped services

This commit is contained in:
addison
2022-06-02 12:42:20 -04:00
parent f4066b4f58
commit 5818ccc70d
3 changed files with 19 additions and 3 deletions

View File

@@ -7,7 +7,7 @@ import { FolderView } from "jslib-common/models/view/folderView";
import { DynamicTreeNode } from "./models/dynamic-tree-node.model";
import { VaultFilter } from "./models/vault-filter.model";
import { VaultFilterService } from "./vault-filter.service";
import { VaultFilterServiceInterface } from "./vault-filter.service.interface";
@Directive()
export class VaultFilterComponent implements OnInit {
@@ -30,7 +30,7 @@ export class VaultFilterComponent implements OnInit {
collections: DynamicTreeNode<CollectionView>;
folders: DynamicTreeNode<FolderView>;
constructor(protected vaultFilterService: VaultFilterService) {}
constructor(protected vaultFilterService: VaultFilterServiceInterface) {}
get displayCollections() {
return this.collections?.fullList != null && this.collections.fullList.length > 0;

View File

@@ -0,0 +1,15 @@
import { Organization } from "jslib-common/models/domain/organization";
import { CollectionView } from "jslib-common/models/view/collectionView";
import { FolderView } from "jslib-common/models/view/folderView";
import { DynamicTreeNode } from "./models/dynamic-tree-node.model";
export abstract class VaultFilterServiceInterface {
storeCollapsedFilterNodes: (collapsedFilterNodes: Set<string>) => Promise<void>;
buildCollapsedFilterNodes: () => Promise<Set<string>>;
buildOrganizations: () => Promise<Organization[]>;
buildFolders: (organizationId?: string) => Promise<DynamicTreeNode<FolderView>>;
buildCollections: (organizationId?: string) => Promise<DynamicTreeNode<CollectionView>>;
checkForSingleOrganizationPolicy: () => Promise<boolean>;
checkForPersonalOwnershipPolicy: () => Promise<boolean>;
}

View File

@@ -12,9 +12,10 @@ import { CollectionView } from "jslib-common/models/view/collectionView";
import { FolderView } from "jslib-common/models/view/folderView";
import { DynamicTreeNode } from "./models/dynamic-tree-node.model";
import { VaultFilterServiceInterface } from "./vault-filter.service.interface";
@Injectable()
export class VaultFilterService {
export class VaultFilterService implements VaultFilterServiceInterface {
constructor(
protected stateService: StateService,
protected organizationService: OrganizationService,