1
0
mirror of https://github.com/bitwarden/browser synced 2025-12-16 00:03:56 +00:00

rename cipehrs component to vault items component (#4081)

This commit is contained in:
Jake Fink
2022-11-22 08:30:33 -05:00
committed by GitHub
parent a6226c7c90
commit a6ce83d9e0
25 changed files with 110 additions and 106 deletions

View File

@@ -15,13 +15,13 @@ import { TotpService } from "@bitwarden/common/abstractions/totp.service";
import { Organization } from "@bitwarden/common/models/domain/organization";
import { CipherView } from "@bitwarden/common/models/view/cipher.view";
import { CiphersComponent as BaseCiphersComponent } from "../../vault/ciphers.component";
import { VaultItemsComponent as BaseVaultItemsComponent } from "../../vault/vault-items.component";
@Component({
selector: "app-org-vault-ciphers",
templateUrl: "../../vault/ciphers.component.html",
selector: "app-org-vault-items",
templateUrl: "../../vault/vault-items.component.html",
})
export class CiphersComponent extends BaseCiphersComponent {
export class VaultItemsComponent extends BaseVaultItemsComponent {
@Output() onEventsClicked = new EventEmitter<CipherView>();
organization: Organization;

View File

@@ -18,7 +18,7 @@
<div class="page-header d-flex">
<h1>
{{ "vaultItems" | i18n }}
<small #actionSpinner [appApiAction]="ciphersComponent.actionPromise">
<small #actionSpinner [appApiAction]="vaultItemsComponent.actionPromise">
<ng-container *ngIf="actionSpinner.loading">
<i
class="bwi bwi-spinner bwi-spin text-muted"
@@ -31,7 +31,7 @@
</h1>
<div class="ml-auto d-flex">
<app-vault-bulk-actions
[ciphersComponent]="ciphersComponent"
[vaultItemsComponent]="vaultItemsComponent"
[deleted]="deleted"
[organization]="organization"
>
@@ -49,7 +49,7 @@
<app-callout type="warning" *ngIf="deleted" icon="bwi bwi-exclamation-triangle">
{{ trashCleanupWarning }}
</app-callout>
<app-org-vault-ciphers
<app-org-vault-items
(onCipherClicked)="editCipher($event)"
(onAttachmentsClicked)="editCipherAttachments($event)"
(onAddCipher)="addCipher()"
@@ -57,7 +57,7 @@
(onEventsClicked)="viewEvents($event)"
(onCloneClicked)="cloneCipher($event)"
>
</app-org-vault-ciphers>
</app-org-vault-items>
</div>
</div>
</div>

View File

@@ -29,9 +29,9 @@ import { EntityEventsComponent } from "../manage/entity-events.component";
import { AddEditComponent } from "./add-edit.component";
import { AttachmentsComponent } from "./attachments.component";
import { CiphersComponent } from "./ciphers.component";
import { CollectionsComponent } from "./collections.component";
import { VaultFilterComponent } from "./vault-filter/vault-filter.component";
import { VaultItemsComponent } from "./vault-items.component";
const BroadcasterSubscriptionId = "OrgVaultComponent";
@@ -42,7 +42,7 @@ const BroadcasterSubscriptionId = "OrgVaultComponent";
export class VaultComponent implements OnInit, OnDestroy {
@ViewChild("vaultFilter", { static: true })
vaultFilterComponent: VaultFilterComponent;
@ViewChild(CiphersComponent, { static: true }) ciphersComponent: CiphersComponent;
@ViewChild(VaultItemsComponent, { static: true }) vaultItemsComponent: VaultItemsComponent;
@ViewChild("attachments", { read: ViewContainerRef, static: true })
attachmentsModalRef: ViewContainerRef;
@ViewChild("cipherAddEdit", { read: ViewContainerRef, static: true })
@@ -90,11 +90,11 @@ export class VaultComponent implements OnInit, OnDestroy {
this.route.parent.params.subscribe(async (params: any) => {
this.organization = await this.organizationService.get(params.organizationId);
this.vaultFilterComponent.organization = this.organization;
this.ciphersComponent.organization = this.organization;
this.vaultItemsComponent.organization = this.organization;
/* eslint-disable-next-line rxjs-angular/prefer-takeuntil, rxjs/no-async-subscribe, rxjs/no-nested-subscribe */
this.route.queryParams.pipe(first()).subscribe(async (qParams) => {
this.ciphersComponent.searchText = this.vaultFilterComponent.searchText = qParams.search;
this.vaultItemsComponent.searchText = this.vaultFilterComponent.searchText = qParams.search;
if (!this.organization.canViewAllCollections) {
await this.syncService.fullSync(false);
this.broadcasterService.subscribe(BroadcasterSubscriptionId, (message: any) => {
@@ -104,7 +104,7 @@ export class VaultComponent implements OnInit, OnDestroy {
if (message.successfully) {
await Promise.all([
this.vaultFilterComponent.reloadCollectionsAndFolders(),
this.ciphersComponent.refresh(),
this.vaultItemsComponent.refresh(),
]);
this.changeDetectorRef.detectChanges();
}
@@ -119,10 +119,12 @@ export class VaultComponent implements OnInit, OnDestroy {
}
this.firstLoaded = true;
await this.ciphersComponent.reload();
await this.vaultItemsComponent.reload();
if (qParams.viewEvents != null) {
const cipher = this.ciphersComponent.ciphers.filter((c) => c.id === qParams.viewEvents);
const cipher = this.vaultItemsComponent.ciphers.filter(
(c) => c.id === qParams.viewEvents
);
if (cipher.length > 0) {
this.viewEvents(cipher[0]);
}
@@ -164,16 +166,16 @@ export class VaultComponent implements OnInit, OnDestroy {
}
async applyVaultFilter(vaultFilter: VaultFilter) {
this.ciphersComponent.showAddNew = vaultFilter.status !== "trash";
this.vaultItemsComponent.showAddNew = vaultFilter.status !== "trash";
this.activeFilter = vaultFilter;
// Hack to avoid calling cipherService.getAllFromApiForOrganization every time the vault filter changes.
// Call CiphersComponent.applyFilter directly instead of going through CiphersComponent.reload, which
// Call VaultItemsComponent.applyFilter directly instead of going through VaultItemsComponent.reload, which
// reloads all the ciphers unnecessarily. Will be fixed properly by EC-14.
this.ciphersComponent.loaded = false;
this.ciphersComponent.deleted = vaultFilter.status === "trash" || false;
await this.ciphersComponent.applyFilter(this.activeFilter.buildFilter());
this.ciphersComponent.loaded = true;
this.vaultItemsComponent.loaded = false;
this.vaultItemsComponent.deleted = vaultFilter.status === "trash" || false;
await this.vaultItemsComponent.applyFilter(this.activeFilter.buildFilter());
this.vaultItemsComponent.loaded = true;
// End hack
this.vaultFilterComponent.searchPlaceholder =
@@ -182,8 +184,8 @@ export class VaultComponent implements OnInit, OnDestroy {
}
filterSearchText(searchText: string) {
this.ciphersComponent.searchText = searchText;
this.ciphersComponent.search(200);
this.vaultItemsComponent.searchText = searchText;
this.vaultItemsComponent.search(200);
}
async editCipherAttachments(cipher: CipherView) {
@@ -210,7 +212,7 @@ export class VaultComponent implements OnInit, OnDestroy {
// eslint-disable-next-line rxjs-angular/prefer-takeuntil, rxjs/no-async-subscribe
modal.onClosed.subscribe(async () => {
if (madeAttachmentChanges) {
await this.ciphersComponent.refresh();
await this.vaultItemsComponent.refresh();
}
madeAttachmentChanges = false;
});
@@ -232,7 +234,7 @@ export class VaultComponent implements OnInit, OnDestroy {
// eslint-disable-next-line rxjs-angular/prefer-takeuntil, rxjs/no-async-subscribe
comp.onSavedCollections.subscribe(async () => {
modal.close();
await this.ciphersComponent.refresh();
await this.vaultItemsComponent.refresh();
});
}
);
@@ -274,17 +276,17 @@ export class VaultComponent implements OnInit, OnDestroy {
// eslint-disable-next-line rxjs-angular/prefer-takeuntil, rxjs/no-async-subscribe
comp.onSavedCipher.subscribe(async () => {
modal.close();
await this.ciphersComponent.refresh();
await this.vaultItemsComponent.refresh();
});
// eslint-disable-next-line rxjs-angular/prefer-takeuntil, rxjs/no-async-subscribe
comp.onDeletedCipher.subscribe(async () => {
modal.close();
await this.ciphersComponent.refresh();
await this.vaultItemsComponent.refresh();
});
// eslint-disable-next-line rxjs-angular/prefer-takeuntil, rxjs/no-async-subscribe
comp.onRestoredCipher.subscribe(async () => {
modal.close();
await this.ciphersComponent.refresh();
await this.vaultItemsComponent.refresh();
});
}
);

View File

@@ -2,14 +2,14 @@ import { NgModule } from "@angular/core";
import { VaultSharedModule } from "../../vault/shared/vault-shared.module";
import { CiphersComponent } from "./ciphers.component";
import { VaultFilterModule } from "./vault-filter/vault-filter.module";
import { VaultItemsComponent } from "./vault-items.component";
import { VaultRoutingModule } from "./vault-routing.module";
import { VaultComponent } from "./vault.component";
@NgModule({
imports: [VaultSharedModule, VaultRoutingModule, VaultFilterModule],
declarations: [VaultComponent, CiphersComponent],
declarations: [VaultComponent, VaultItemsComponent],
exports: [VaultComponent],
})
export class VaultModule {}

View File

@@ -11,7 +11,7 @@ import { BulkDeleteComponent } from "./bulk-delete.component";
import { BulkMoveComponent } from "./bulk-move.component";
import { BulkRestoreComponent } from "./bulk-restore.component";
import { BulkShareComponent } from "./bulk-share.component";
import { CiphersComponent } from "./ciphers.component";
import { VaultItemsComponent } from "./vault-items.component";
@Component({
selector: "app-vault-bulk-actions",
@@ -19,7 +19,7 @@ import { CiphersComponent } from "./ciphers.component";
})
// eslint-disable-next-line rxjs-angular/prefer-takeuntil
export class BulkActionsComponent {
@Input() ciphersComponent: CiphersComponent;
@Input() vaultItemsComponent: VaultItemsComponent;
@Input() deleted: boolean;
@Input() organization: Organization;
@@ -44,7 +44,7 @@ export class BulkActionsComponent {
return;
}
const selectedIds = this.ciphersComponent.getSelectedIds();
const selectedIds = this.vaultItemsComponent.getSelectedIds();
if (selectedIds.length === 0) {
this.platformUtilsService.showToast(
"error",
@@ -64,7 +64,7 @@ export class BulkActionsComponent {
// eslint-disable-next-line rxjs-angular/prefer-takeuntil, rxjs/no-async-subscribe
comp.onDeleted.subscribe(async () => {
modal.close();
await this.ciphersComponent.refresh();
await this.vaultItemsComponent.refresh();
});
}
);
@@ -75,7 +75,7 @@ export class BulkActionsComponent {
return;
}
const selectedIds = this.ciphersComponent.getSelectedIds();
const selectedIds = this.vaultItemsComponent.getSelectedIds();
if (selectedIds.length === 0) {
this.platformUtilsService.showToast(
"error",
@@ -93,7 +93,7 @@ export class BulkActionsComponent {
// eslint-disable-next-line rxjs-angular/prefer-takeuntil, rxjs/no-async-subscribe
comp.onRestored.subscribe(async () => {
modal.close();
await this.ciphersComponent.refresh();
await this.vaultItemsComponent.refresh();
});
}
);
@@ -104,7 +104,7 @@ export class BulkActionsComponent {
return;
}
const selectedCiphers = this.ciphersComponent.getSelected();
const selectedCiphers = this.vaultItemsComponent.getSelected();
if (selectedCiphers.length === 0) {
this.platformUtilsService.showToast(
"error",
@@ -122,7 +122,7 @@ export class BulkActionsComponent {
// eslint-disable-next-line rxjs-angular/prefer-takeuntil, rxjs/no-async-subscribe
comp.onShared.subscribe(async () => {
modal.close();
await this.ciphersComponent.refresh();
await this.vaultItemsComponent.refresh();
});
}
);
@@ -133,7 +133,7 @@ export class BulkActionsComponent {
return;
}
const selectedIds = this.ciphersComponent.getSelectedIds();
const selectedIds = this.vaultItemsComponent.getSelectedIds();
if (selectedIds.length === 0) {
this.platformUtilsService.showToast(
"error",
@@ -151,18 +151,18 @@ export class BulkActionsComponent {
// eslint-disable-next-line rxjs-angular/prefer-takeuntil, rxjs/no-async-subscribe
comp.onMoved.subscribe(async () => {
modal.close();
await this.ciphersComponent.refresh();
await this.vaultItemsComponent.refresh();
});
}
);
}
selectAll(select: boolean) {
this.ciphersComponent.selectAll(select);
this.vaultItemsComponent.selectAll(select);
}
private async promptPassword() {
const selectedCiphers = this.ciphersComponent.getSelected();
const selectedCiphers = this.vaultItemsComponent.getSelected();
const notProtected = !selectedCiphers.find(
(cipher) => cipher.reprompt !== CipherRepromptType.None
);

View File

@@ -1,6 +1,6 @@
import { Component, EventEmitter, Input, OnDestroy, Output } from "@angular/core";
import { CiphersComponent as BaseCiphersComponent } from "@bitwarden/angular/components/ciphers.component";
import { VaultItemsComponent as BaseVaultItemsComponent } from "@bitwarden/angular/components/vault-items.component";
import { CipherService } from "@bitwarden/common/abstractions/cipher.service";
import { EventService } from "@bitwarden/common/abstractions/event.service";
import { I18nService } from "@bitwarden/common/abstractions/i18n.service";
@@ -22,10 +22,10 @@ import { Icons } from "@bitwarden/components";
const MaxCheckedCount = 500;
@Component({
selector: "app-vault-ciphers",
templateUrl: "ciphers.component.html",
selector: "app-vault-items",
templateUrl: "vault-items.component.html",
})
export class CiphersComponent extends BaseCiphersComponent implements OnDestroy {
export class VaultItemsComponent extends BaseVaultItemsComponent implements OnDestroy {
@Input() showAddNew = true;
@Output() onAttachmentsClicked = new EventEmitter<CipherView>();
@Output() onShareClicked = new EventEmitter<CipherView>();

View File

@@ -20,7 +20,7 @@
<div class="page-header d-flex">
<h1>
{{ "vaultItems" | i18n }}
<small #actionSpinner [appApiAction]="ciphersComponent.actionPromise">
<small #actionSpinner [appApiAction]="vaultItemsComponent.actionPromise">
<ng-container *ngIf="actionSpinner.loading">
<i
class="bwi bwi-spinner bwi-spin text-muted"
@@ -33,7 +33,7 @@
</h1>
<div class="ml-auto d-flex">
<app-vault-bulk-actions
[ciphersComponent]="ciphersComponent"
[vaultItemsComponent]="vaultItemsComponent"
[deleted]="activeFilter.status === 'trash'"
>
</app-vault-bulk-actions>
@@ -54,7 +54,7 @@
>
{{ trashCleanupWarning }}
</app-callout>
<app-vault-ciphers
<app-vault-items
(onCipherClicked)="editCipher($event)"
(onAttachmentsClicked)="editCipherAttachments($event)"
(onAddCipher)="addCipher()"
@@ -63,7 +63,7 @@
(onCloneClicked)="cloneCipher($event)"
(onOrganzationBadgeClicked)="applyOrganizationFilter($event)"
>
</app-vault-ciphers>
</app-vault-items>
</div>
<div class="col-3">
<div class="card border-warning mb-4" *ngIf="showUpdateKey">

View File

@@ -29,13 +29,13 @@ import { UpdateKeyComponent } from "../settings/update-key.component";
import { AddEditComponent } from "./add-edit.component";
import { AttachmentsComponent } from "./attachments.component";
import { CiphersComponent } from "./ciphers.component";
import { CollectionsComponent } from "./collections.component";
import { FolderAddEditComponent } from "./folder-add-edit.component";
import { ShareComponent } from "./share.component";
import { VaultService } from "./shared/vault.service";
import { VaultFilterService } from "./vault-filter/shared/vault-filter.service";
import { VaultFilterComponent } from "./vault-filter/vault-filter.component";
import { VaultItemsComponent } from "./vault-items.component";
const BroadcasterSubscriptionId = "VaultComponent";
@@ -45,7 +45,7 @@ const BroadcasterSubscriptionId = "VaultComponent";
})
export class VaultComponent implements OnInit, OnDestroy {
@ViewChild("vaultFilter", { static: true }) filterComponent: VaultFilterComponent;
@ViewChild(CiphersComponent, { static: true }) ciphersComponent: CiphersComponent;
@ViewChild(VaultItemsComponent, { static: true }) vaultItemsComponent: VaultItemsComponent;
@ViewChild("attachments", { read: ViewContainerRef, static: true })
attachmentsModalRef: ViewContainerRef;
@ViewChild("folderAddEdit", { read: ViewContainerRef, static: true })
@@ -119,7 +119,7 @@ export class VaultComponent implements OnInit, OnDestroy {
await this.editCipher(cipherView);
}
}
await this.ciphersComponent.reload();
await this.vaultItemsComponent.reload();
/* eslint-disable-next-line rxjs-angular/prefer-takeuntil, rxjs/no-async-subscribe, rxjs/no-nested-subscribe */
this.route.queryParams.subscribe(async (params) => {
@@ -149,7 +149,7 @@ export class VaultComponent implements OnInit, OnDestroy {
await Promise.all([
this.filterComponent.reloadCollectionsAndFolders(this.activeFilter),
this.filterComponent.reloadOrganizations(),
this.ciphersComponent.load(this.ciphersComponent.filter),
this.vaultItemsComponent.load(this.vaultItemsComponent.filter),
]);
this.changeDetectorRef.detectChanges();
}
@@ -178,9 +178,9 @@ export class VaultComponent implements OnInit, OnDestroy {
}
async applyVaultFilter(vaultFilter: VaultFilter) {
this.ciphersComponent.showAddNew = vaultFilter.status !== "trash";
this.vaultItemsComponent.showAddNew = vaultFilter.status !== "trash";
this.activeFilter = vaultFilter;
await this.ciphersComponent.reload(
await this.vaultItemsComponent.reload(
this.activeFilter.buildFilter(),
vaultFilter.status === "trash"
);
@@ -202,8 +202,8 @@ export class VaultComponent implements OnInit, OnDestroy {
}
filterSearchText(searchText: string) {
this.ciphersComponent.searchText = searchText;
this.ciphersComponent.search(200);
this.vaultItemsComponent.searchText = searchText;
this.vaultItemsComponent.search(200);
}
async editCipherAttachments(cipher: CipherView) {
@@ -239,7 +239,7 @@ export class VaultComponent implements OnInit, OnDestroy {
// eslint-disable-next-line rxjs-angular/prefer-takeuntil, rxjs/no-async-subscribe
modal.onClosed.subscribe(async () => {
if (madeAttachmentChanges) {
await this.ciphersComponent.refresh();
await this.vaultItemsComponent.refresh();
}
madeAttachmentChanges = false;
});
@@ -254,7 +254,7 @@ export class VaultComponent implements OnInit, OnDestroy {
// eslint-disable-next-line rxjs-angular/prefer-takeuntil, rxjs/no-async-subscribe
comp.onSharedCipher.subscribe(async () => {
modal.close();
await this.ciphersComponent.refresh();
await this.vaultItemsComponent.refresh();
});
}
);
@@ -269,7 +269,7 @@ export class VaultComponent implements OnInit, OnDestroy {
// eslint-disable-next-line rxjs-angular/prefer-takeuntil, rxjs/no-async-subscribe
comp.onSavedCollections.subscribe(async () => {
modal.close();
await this.ciphersComponent.refresh();
await this.vaultItemsComponent.refresh();
});
}
);
@@ -352,17 +352,17 @@ export class VaultComponent implements OnInit, OnDestroy {
// eslint-disable-next-line rxjs-angular/prefer-takeuntil, rxjs/no-async-subscribe
comp.onSavedCipher.subscribe(async () => {
modal.close();
await this.ciphersComponent.refresh();
await this.vaultItemsComponent.refresh();
});
// eslint-disable-next-line rxjs-angular/prefer-takeuntil, rxjs/no-async-subscribe
comp.onDeletedCipher.subscribe(async () => {
modal.close();
await this.ciphersComponent.refresh();
await this.vaultItemsComponent.refresh();
});
// eslint-disable-next-line rxjs-angular/prefer-takeuntil, rxjs/no-async-subscribe
comp.onRestoredCipher.subscribe(async () => {
modal.close();
await this.ciphersComponent.refresh();
await this.vaultItemsComponent.refresh();
});
}
);

View File

@@ -1,14 +1,14 @@
import { NgModule } from "@angular/core";
import { CiphersComponent } from "./ciphers.component";
import { OrganizationBadgeModule } from "./organization-badge/organization-badge.module";
import { VaultSharedModule } from "./shared/vault-shared.module";
import { VaultItemsComponent } from "./vault-items.component";
import { VaultRoutingModule } from "./vault-routing.module";
import { VaultComponent } from "./vault.component";
@NgModule({
imports: [VaultSharedModule, VaultRoutingModule, OrganizationBadgeModule],
declarations: [VaultComponent, CiphersComponent],
declarations: [VaultComponent, VaultItemsComponent],
exports: [VaultComponent],
})
export class VaultModule {}