Skip to content
This repository has been archived by the owner on Mar 15, 2024. It is now read-only.

Commit

Permalink
[refactor] Establish pattern for interfaces in module scoped services
Browse files Browse the repository at this point in the history
  • Loading branch information
addisonbeck committed Jun 2, 2022
1 parent 6f3f1a3 commit f1edae5
Show file tree
Hide file tree
Showing 5 changed files with 31 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand All @@ -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);
Expand Down
6 changes: 0 additions & 6 deletions src/app/modules/vault-filter/vault-filter.component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand All @@ -18,10 +16,6 @@ export class VaultFilterComponent extends BaseVaultFilterComponent {
searchPlaceholder: string;
searchText = "";

constructor(protected vaultFilterService: VaultFilterService) {
super(vaultFilterService);
}

searchTextChanged() {
this.onSearchTextChanged.emit(this.searchText);
}
Expand Down
14 changes: 13 additions & 1 deletion src/app/modules/vault-filter/vault-filter.module.ts
Original file line number Diff line number Diff line change
@@ -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";
Expand All @@ -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],
Expand All @@ -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 {}
Original file line number Diff line number Diff line change
@@ -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<DynamicTreeNode<CollectionView>>;
}
7 changes: 6 additions & 1 deletion src/app/modules/vault-filter/vault-filter.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down

0 comments on commit f1edae5

Please sign in to comment.