mirror of
https://github.com/bitwarden/browser
synced 2026-01-31 00:33:33 +00:00
PR followup:
- removed `DesktopRoutedVaultFilterBridgeService` - added 'baseRoute' injectable in `RoutedVaultFilterService` - removed `folderAddEditModalRef` from `VaultComponent`
This commit is contained in:
@@ -1,38 +0,0 @@
|
||||
import { Injectable } from "@angular/core";
|
||||
import { Router } from "@angular/router";
|
||||
|
||||
import {
|
||||
RoutedVaultFilterService,
|
||||
RoutedVaultFilterBridgeService,
|
||||
RoutedVaultFilterModel,
|
||||
VaultFilterServiceAbstraction as VaultFilterService,
|
||||
} from "@bitwarden/vault";
|
||||
|
||||
/**
|
||||
* Desktop-specific extension of RoutedVaultFilterBridgeService that ensures
|
||||
* vault filter navigation always goes to the /new-vault route.
|
||||
*/
|
||||
@Injectable()
|
||||
export class DesktopRoutedVaultFilterBridgeService extends RoutedVaultFilterBridgeService {
|
||||
private static readonly VAULT_ROUTE = "/new-vault";
|
||||
private readonly desktopRouter: Router;
|
||||
private readonly desktopRoutedVaultFilterService: RoutedVaultFilterService;
|
||||
|
||||
constructor(
|
||||
router: Router,
|
||||
routedVaultFilterService: RoutedVaultFilterService,
|
||||
vaultFilterService: VaultFilterService,
|
||||
) {
|
||||
super(router, routedVaultFilterService, vaultFilterService);
|
||||
this.desktopRouter = router;
|
||||
this.desktopRoutedVaultFilterService = routedVaultFilterService;
|
||||
}
|
||||
|
||||
override navigate(filter: RoutedVaultFilterModel) {
|
||||
const extras = this.desktopRoutedVaultFilterService.createRoute(filter)[1];
|
||||
const vaultCommands = [DesktopRoutedVaultFilterBridgeService.VAULT_ROUTE];
|
||||
|
||||
// FIXME: Verify that this floating promise is intentional. If it is, add an explanatory comment and ensure there is proper error handling.
|
||||
void this.desktopRouter.navigate(vaultCommands, extras);
|
||||
}
|
||||
}
|
||||
@@ -126,6 +126,8 @@ import {
|
||||
VaultFilterServiceAbstraction,
|
||||
VaultFilterService,
|
||||
RoutedVaultFilterService,
|
||||
RoutedVaultFilterBridgeService,
|
||||
VAULT_FILTER_BASE_ROUTE,
|
||||
} from "@bitwarden/vault";
|
||||
|
||||
import { DesktopLoginApprovalDialogComponentService } from "../../auth/login/desktop-login-approval-dialog-component.service";
|
||||
@@ -161,7 +163,6 @@ import { NativeMessagingService } from "../../services/native-messaging.service"
|
||||
import { SearchBarService } from "../layout/search/search-bar.service";
|
||||
|
||||
import { DesktopFileDownloadService } from "./desktop-file-download.service";
|
||||
import { DesktopRoutedVaultFilterBridgeService } from "./desktop-routed-vault-filter-bridge.service";
|
||||
import { InitService } from "./init.service";
|
||||
import { NativeMessagingManifestService } from "./native-messaging-manifest.service";
|
||||
import { DesktopSetInitialPasswordService } from "./set-initial-password/desktop-set-initial-password.service";
|
||||
@@ -533,14 +534,18 @@ const safeProviders: SafeProvider[] = [
|
||||
ConfigService,
|
||||
],
|
||||
}),
|
||||
safeProvider({
|
||||
provide: VAULT_FILTER_BASE_ROUTE,
|
||||
useValue: "/new-vault",
|
||||
}),
|
||||
safeProvider({
|
||||
provide: RoutedVaultFilterService,
|
||||
useClass: RoutedVaultFilterService,
|
||||
deps: [ActivatedRoute],
|
||||
}),
|
||||
safeProvider({
|
||||
provide: DesktopRoutedVaultFilterBridgeService,
|
||||
useClass: DesktopRoutedVaultFilterBridgeService,
|
||||
provide: RoutedVaultFilterBridgeService,
|
||||
useClass: RoutedVaultFilterBridgeService,
|
||||
deps: [Router, RoutedVaultFilterService, VaultFilterServiceAbstraction],
|
||||
}),
|
||||
];
|
||||
|
||||
@@ -21,9 +21,9 @@ import {
|
||||
VaultFilter,
|
||||
VaultFilterServiceAbstraction as VaultFilterService,
|
||||
AddEditFolderDialogComponent,
|
||||
RoutedVaultFilterBridgeService,
|
||||
} from "@bitwarden/vault";
|
||||
|
||||
import { DesktopRoutedVaultFilterBridgeService } from "../../../../app/services/desktop-routed-vault-filter-bridge.service";
|
||||
import { DesktopPremiumUpgradePromptService } from "../../../../services/desktop-premium-upgrade-prompt.service";
|
||||
|
||||
import { CollectionFilterComponent } from "./filters/collection-filter.component";
|
||||
@@ -56,7 +56,7 @@ import { TypeFilterComponent } from "./filters/type-filter.component";
|
||||
],
|
||||
})
|
||||
export class VaultFilterComponent implements OnInit {
|
||||
private routedVaultFilterBridgeService = inject(DesktopRoutedVaultFilterBridgeService);
|
||||
private routedVaultFilterBridgeService = inject(RoutedVaultFilterBridgeService);
|
||||
private vaultFilterService: VaultFilterService = inject(VaultFilterService);
|
||||
private accountService: AccountService = inject(AccountService);
|
||||
private cipherArchiveService: CipherArchiveService = inject(CipherArchiveService);
|
||||
|
||||
@@ -1,13 +1,5 @@
|
||||
import { CommonModule } from "@angular/common";
|
||||
import {
|
||||
ChangeDetectorRef,
|
||||
Component,
|
||||
NgZone,
|
||||
OnDestroy,
|
||||
OnInit,
|
||||
ViewChild,
|
||||
ViewContainerRef,
|
||||
} from "@angular/core";
|
||||
import { ChangeDetectorRef, Component, NgZone, OnDestroy, OnInit, ViewChild } from "@angular/core";
|
||||
import { ActivatedRoute, Router } from "@angular/router";
|
||||
import {
|
||||
firstValueFrom,
|
||||
@@ -83,10 +75,10 @@ import {
|
||||
ArchiveCipherUtilitiesService,
|
||||
VaultFilter,
|
||||
VaultFilterServiceAbstraction as VaultFilterService,
|
||||
RoutedVaultFilterBridgeService,
|
||||
} from "@bitwarden/vault";
|
||||
|
||||
import { SearchBarService } from "../../../app/layout/search/search-bar.service";
|
||||
import { DesktopRoutedVaultFilterBridgeService } from "../../../app/services/desktop-routed-vault-filter-bridge.service";
|
||||
import { DesktopCredentialGenerationService } from "../../../services/desktop-cipher-form-generator.service";
|
||||
import { DesktopPremiumUpgradePromptService } from "../../../services/desktop-premium-upgrade-prompt.service";
|
||||
import { invokeMenu, RendererMenuItem } from "../../../utils";
|
||||
@@ -144,10 +136,6 @@ export class VaultComponent implements OnInit, OnDestroy, CopyClickListener {
|
||||
vaultItemsComponent: VaultItemsV2Component<CipherView> | null = null;
|
||||
// FIXME(https://bitwarden.atlassian.net/browse/CL-903): Migrate to Signals
|
||||
// eslint-disable-next-line @angular-eslint/prefer-signals
|
||||
@ViewChild("folderAddEdit", { read: ViewContainerRef, static: true })
|
||||
folderAddEditModalRef: ViewContainerRef | null = null;
|
||||
// FIXME(https://bitwarden.atlassian.net/browse/CL-903): Migrate to Signals
|
||||
// eslint-disable-next-line @angular-eslint/prefer-signals
|
||||
@ViewChild(CipherFormComponent)
|
||||
cipherFormComponent: CipherFormComponent | null = null;
|
||||
|
||||
@@ -221,7 +209,7 @@ export class VaultComponent implements OnInit, OnDestroy, CopyClickListener {
|
||||
private cipherArchiveService: CipherArchiveService,
|
||||
private policyService: PolicyService,
|
||||
private archiveCipherUtilitiesService: ArchiveCipherUtilitiesService,
|
||||
private routedVaultFilterBridgeService: DesktopRoutedVaultFilterBridgeService,
|
||||
private routedVaultFilterBridgeService: RoutedVaultFilterBridgeService,
|
||||
private vaultFilterService: VaultFilterService,
|
||||
) {}
|
||||
|
||||
|
||||
@@ -1,14 +1,20 @@
|
||||
import { Injectable, OnDestroy } from "@angular/core";
|
||||
import { Injectable, OnDestroy, inject } from "@angular/core";
|
||||
import { ActivatedRoute, NavigationExtras } from "@angular/router";
|
||||
import { combineLatest, map, Observable, Subject, takeUntil } from "rxjs";
|
||||
|
||||
import { CollectionId, OrganizationId } from "@bitwarden/common/types/guid";
|
||||
import { SafeInjectionToken } from "@bitwarden/ui-common";
|
||||
|
||||
import {
|
||||
isRoutedVaultFilterItemType,
|
||||
RoutedVaultFilterModel,
|
||||
} from "../models/routed-vault-filter.model";
|
||||
|
||||
/**
|
||||
* Injection token for the base route path used in vault filter navigation.
|
||||
*/
|
||||
export const VAULT_FILTER_BASE_ROUTE = new SafeInjectionToken<string>("VaultFilterBaseRoute");
|
||||
|
||||
/**
|
||||
* This service is an abstraction layer on top of ActivatedRoute that
|
||||
* encapsulates the logic of how filters are stored in the URL.
|
||||
@@ -19,6 +25,7 @@ import {
|
||||
@Injectable()
|
||||
export class RoutedVaultFilterService implements OnDestroy {
|
||||
private onDestroy = new Subject<void>();
|
||||
private baseRoute: string = inject(VAULT_FILTER_BASE_ROUTE, { optional: true }) ?? "";
|
||||
|
||||
/**
|
||||
* Filter values extracted from the URL.
|
||||
@@ -64,7 +71,7 @@ export class RoutedVaultFilterService implements OnDestroy {
|
||||
* @returns route that can be used with Router or RouterLink
|
||||
*/
|
||||
createRoute(filter: RoutedVaultFilterModel): [commands: any[], extras?: NavigationExtras] {
|
||||
const commands: string[] = [];
|
||||
const commands: string[] = this.baseRoute ? [this.baseRoute] : [];
|
||||
const extras: NavigationExtras = {
|
||||
queryParams: {
|
||||
collectionId: filter.collectionId ?? null,
|
||||
|
||||
Reference in New Issue
Block a user