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:
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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 {}
|
||||
|
||||
@@ -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>>;
|
||||
}
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user