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

[refactor] Establish pattern for interfaces in module scoped services

This commit is contained in:
addison
2022-06-02 12:41:05 -04:00
parent 6f3f1a3d47
commit f1edae5a3e
5 changed files with 31 additions and 8 deletions

View File

@@ -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);

View File

@@ -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);
}

View File

@@ -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 {}

View File

@@ -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>>;
}

View File

@@ -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,