mirror of
https://github.com/bitwarden/browser
synced 2026-02-20 11:24:07 +00:00
67 lines
2.3 KiB
TypeScript
67 lines
2.3 KiB
TypeScript
import { CommonModule } from "@angular/common";
|
|
import { Component } from "@angular/core";
|
|
import { filter, map, Observable, switchMap } from "rxjs";
|
|
|
|
import { JslibModule } from "@bitwarden/angular/jslib.module";
|
|
import { NoFolders } from "@bitwarden/assets/svg";
|
|
import { AccountService } from "@bitwarden/common/auth/abstractions/account.service";
|
|
import { UserId } from "@bitwarden/common/types/guid";
|
|
import { FolderService } from "@bitwarden/common/vault/abstractions/folder/folder.service.abstraction";
|
|
import { FolderView } from "@bitwarden/common/vault/models/view/folder.view";
|
|
import {
|
|
AsyncActionsModule,
|
|
ButtonModule,
|
|
DialogService,
|
|
IconButtonModule,
|
|
ItemModule,
|
|
NoItemsModule,
|
|
} from "@bitwarden/components";
|
|
import { AddEditFolderDialogComponent } from "@bitwarden/vault";
|
|
|
|
import { PopOutComponent } from "../../../platform/popup/components/pop-out.component";
|
|
import { PopupHeaderComponent } from "../../../platform/popup/layout/popup-header.component";
|
|
import { PopupPageComponent } from "../../../platform/popup/layout/popup-page.component";
|
|
|
|
// FIXME(https://bitwarden.atlassian.net/browse/CL-764): Migrate to OnPush
|
|
// eslint-disable-next-line @angular-eslint/prefer-on-push-component-change-detection
|
|
@Component({
|
|
templateUrl: "./folders.component.html",
|
|
imports: [
|
|
CommonModule,
|
|
JslibModule,
|
|
PopOutComponent,
|
|
PopupPageComponent,
|
|
PopupHeaderComponent,
|
|
ItemModule,
|
|
NoItemsModule,
|
|
IconButtonModule,
|
|
ButtonModule,
|
|
AsyncActionsModule,
|
|
],
|
|
})
|
|
export class FoldersComponent {
|
|
folders$: Observable<FolderView[]>;
|
|
|
|
NoFoldersIcon = NoFolders;
|
|
private activeUserId$ = this.accountService.activeAccount$.pipe(map((a) => a?.id));
|
|
|
|
constructor(
|
|
private folderService: FolderService,
|
|
private dialogService: DialogService,
|
|
private accountService: AccountService,
|
|
) {
|
|
this.folders$ = this.activeUserId$.pipe(
|
|
filter((userId): userId is UserId => userId !== null),
|
|
switchMap((userId) => this.folderService.folderViews$(userId)),
|
|
);
|
|
}
|
|
|
|
/** Open the Add/Edit folder dialog */
|
|
openAddEditFolderDialog(folder?: FolderView) {
|
|
// If a folder is provided, the edit variant should be shown
|
|
const editFolderConfig = folder ? { folder } : undefined;
|
|
|
|
AddEditFolderDialogComponent.open(this.dialogService, { editFolderConfig });
|
|
}
|
|
}
|