From f1edae5a3e466fd0a43c7741aa060295508e2a08 Mon Sep 17 00:00:00 2001 From: addison Date: Thu, 2 Jun 2022 12:41:05 -0400 Subject: [PATCH] [refactor] Establish pattern for interfaces in module scoped services --- .../organization-vault-filter.component.ts | 5 +++++ .../modules/vault-filter/vault-filter.component.ts | 6 ------ .../modules/vault-filter/vault-filter.module.ts | 14 +++++++++++++- .../vault-filter/vault-filter.service.interface.ts | 7 +++++++ .../modules/vault-filter/vault-filter.service.ts | 7 ++++++- 5 files changed, 31 insertions(+), 8 deletions(-) create mode 100644 src/app/modules/vault-filter/vault-filter.service.interface.ts diff --git a/src/app/modules/vault-filter/organization-vault-filter.component.ts b/src/app/modules/vault-filter/organization-vault-filter.component.ts index 28db70c8..05f744c7 100644 --- a/src/app/modules/vault-filter/organization-vault-filter.component.ts +++ b/src/app/modules/vault-filter/organization-vault-filter.component.ts @@ -3,6 +3,7 @@ import { Component } from "@angular/core"; import { Organization } from "jslib-common/models/domain/organization"; import { VaultFilterComponent } from "./vault-filter.component"; +import { VaultFilterServiceInterface } from "./vault-filter.service.interface"; @Component({ selector: "app-organization-vault-filter", @@ -11,6 +12,10 @@ import { VaultFilterComponent } from "./vault-filter.component"; export class OrganizationVaultFilterComponent extends VaultFilterComponent { organization: Organization; + constructor(protected vaultFilterService: VaultFilterServiceInterface) { + super(vaultFilterService); + } + async initCollections() { if (this.organization.canEditAnyCollection) { return await this.vaultFilterService.buildAdminCollections(this.organization.id); diff --git a/src/app/modules/vault-filter/vault-filter.component.ts b/src/app/modules/vault-filter/vault-filter.component.ts index 641ea29d..88b7a31f 100644 --- a/src/app/modules/vault-filter/vault-filter.component.ts +++ b/src/app/modules/vault-filter/vault-filter.component.ts @@ -2,8 +2,6 @@ import { Component, EventEmitter, Input, Output } from "@angular/core"; import { VaultFilterComponent as BaseVaultFilterComponent } from "jslib-angular/modules/vault-filter/vault-filter.component"; -import { VaultFilterService } from "./vault-filter.service"; - @Component({ selector: "app-vault-filter", templateUrl: "vault-filter.component.html", @@ -18,10 +16,6 @@ export class VaultFilterComponent extends BaseVaultFilterComponent { searchPlaceholder: string; searchText = ""; - constructor(protected vaultFilterService: VaultFilterService) { - super(vaultFilterService); - } - searchTextChanged() { this.onSearchTextChanged.emit(this.searchText); } diff --git a/src/app/modules/vault-filter/vault-filter.module.ts b/src/app/modules/vault-filter/vault-filter.module.ts index 1ec6c5d7..8693b040 100644 --- a/src/app/modules/vault-filter/vault-filter.module.ts +++ b/src/app/modules/vault-filter/vault-filter.module.ts @@ -1,5 +1,7 @@ import { NgModule } from "@angular/core"; +import { VaultFilterServiceInterface as BaseVaultFilterServiceInterface } from "jslib-angular/modules/vault-filter/vault-filter.service.interface"; + import { SharedModule } from "../shared.module"; import { CollectionFilterComponent } from "./components/collection-filter.component"; @@ -12,6 +14,7 @@ import { TypeFilterComponent } from "./components/type-filter.component"; import { OrganizationVaultFilterComponent } from "./organization-vault-filter.component"; import { VaultFilterComponent } from "./vault-filter.component"; import { VaultFilterService } from "./vault-filter.service"; +import { VaultFilterServiceInterface } from "./vault-filter.service.interface"; @NgModule({ imports: [SharedModule], @@ -27,6 +30,15 @@ import { VaultFilterService } from "./vault-filter.service"; LinkSsoComponent, ], exports: [VaultFilterComponent, OrganizationVaultFilterComponent], - providers: [VaultFilterService], + providers: [ + { + provide: VaultFilterServiceInterface, + useClass: VaultFilterService, + }, + { + provide: BaseVaultFilterServiceInterface, + useExisting: VaultFilterServiceInterface, + }, + ], }) export class VaultFilterModule {} diff --git a/src/app/modules/vault-filter/vault-filter.service.interface.ts b/src/app/modules/vault-filter/vault-filter.service.interface.ts new file mode 100644 index 00000000..34e3b999 --- /dev/null +++ b/src/app/modules/vault-filter/vault-filter.service.interface.ts @@ -0,0 +1,7 @@ +import { DynamicTreeNode } from "jslib-angular/modules/vault-filter/models/dynamic-tree-node.model"; +import { VaultFilterServiceInterface as BaseVaultFilterServiceInterface } from "jslib-angular/modules/vault-filter/vault-filter.service.interface"; +import { CollectionView } from "jslib-common/models/view/collectionView"; + +export abstract class VaultFilterServiceInterface extends BaseVaultFilterServiceInterface { + buildAdminCollections: (organizationId: string) => Promise>; +} diff --git a/src/app/modules/vault-filter/vault-filter.service.ts b/src/app/modules/vault-filter/vault-filter.service.ts index 91f90449..ba052486 100644 --- a/src/app/modules/vault-filter/vault-filter.service.ts +++ b/src/app/modules/vault-filter/vault-filter.service.ts @@ -14,8 +14,13 @@ import { Collection } from "jslib-common/models/domain/collection"; import { CollectionDetailsResponse } from "jslib-common/models/response/collectionResponse"; import { CollectionView } from "jslib-common/models/view/collectionView"; +import { VaultFilterServiceInterface } from "./vault-filter.service.interface"; + @Injectable() -export class VaultFilterService extends BaseVaultFilterService { +export class VaultFilterService + extends BaseVaultFilterService + implements VaultFilterServiceInterface +{ constructor( protected stateService: StateService, protected organizationService: OrganizationService,