1
0
mirror of https://github.com/bitwarden/browser synced 2025-12-17 08:43:33 +00:00
Files
browser/libs/importer/src/components/dialog/import-success-dialog.component.ts
2024-11-19 14:16:42 +01:00

93 lines
2.5 KiB
TypeScript

import { DialogRef, DIALOG_DATA } from "@angular/cdk/dialog";
import { CommonModule } from "@angular/common";
import { Component, Inject, OnInit } from "@angular/core";
import { JslibModule } from "@bitwarden/angular/jslib.module";
import { CipherType } from "@bitwarden/common/vault/enums";
import { ButtonModule, DialogModule, TableDataSource, TableModule } from "@bitwarden/components";
import { ImportResult } from "../../models";
export interface ResultList {
icon: string;
type: string;
count: number;
}
@Component({
templateUrl: "./import-success-dialog.component.html",
standalone: true,
imports: [CommonModule, JslibModule, DialogModule, TableModule, ButtonModule],
})
export class ImportSuccessDialogComponent implements OnInit {
protected dataSource = new TableDataSource<ResultList>();
constructor(
public dialogRef: DialogRef,
@Inject(DIALOG_DATA) public data: ImportResult,
) {}
ngOnInit(): void {
if (this.data != null) {
this.dataSource.data = this.buildResultList();
}
}
private buildResultList(): ResultList[] {
let logins = 0;
let cards = 0;
let identities = 0;
let secureNotes = 0;
let sshKeys = 0;
this.data.ciphers.map((c) => {
switch (c.type) {
case CipherType.Login:
logins++;
break;
case CipherType.Card:
cards++;
break;
case CipherType.SecureNote:
secureNotes++;
break;
case CipherType.Identity:
identities++;
break;
case CipherType.SshKey:
sshKeys++;
break;
default:
break;
}
});
const list: ResultList[] = [];
if (logins > 0) {
list.push({ icon: "globe", type: "typeLogin", count: logins });
}
if (cards > 0) {
list.push({ icon: "credit-card", type: "typeCard", count: cards });
}
if (identities > 0) {
list.push({ icon: "id-card", type: "typeIdentity", count: identities });
}
if (secureNotes > 0) {
list.push({ icon: "sticky-note", type: "typeSecureNote", count: secureNotes });
}
if (sshKeys > 0) {
list.push({ icon: "key", type: "typeSshKey", count: sshKeys });
}
if (this.data.folders.length > 0) {
list.push({ icon: "folder", type: "folders", count: this.data.folders.length });
}
if (this.data.collections.length > 0) {
list.push({
icon: "collection",
type: "collections",
count: this.data.collections.length,
});
}
return list;
}
}