Skip to content

Commit

Permalink
[PM-12759] - Admin Console - Link to vault cipher is not opening ciph…
Browse files Browse the repository at this point in the history
…er modal (#12738)

* fix initial load emission race

* prevent double dialog render

* put logic back in place
  • Loading branch information
jaasen-livefront authored Jan 10, 2025
1 parent 2a30c27 commit b8f57f3
Showing 1 changed file with 16 additions and 10 deletions.
26 changes: 16 additions & 10 deletions apps/web/src/app/vault/org-vault/vault.component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@ import {
switchMap,
takeUntil,
tap,
withLatestFrom,
} from "rxjs/operators";

import {
Expand Down Expand Up @@ -194,6 +193,7 @@ export class VaultComponent implements OnInit, OnDestroy {
protected currentSearchText$: Observable<string>;
protected freeTrial$: Observable<FreeTrial>;
protected resellerWarning$: Observable<ResellerWarning | null>;
protected prevCipherId: string | null = null;
/**
* A list of collections that the user can assign items to and edit those items within.
* @protected
Expand Down Expand Up @@ -538,25 +538,26 @@ export class VaultComponent implements OnInit, OnDestroy {

firstSetup$
.pipe(
switchMap(() => this.route.queryParams),
// Only process the queryParams if the dialog is not open (only when extension refresh is enabled)
switchMap(() => combineLatest([this.route.queryParams, allCipherMap$])),
filter(() => this.vaultItemDialogRef == undefined || !this.extensionRefreshEnabled),
withLatestFrom(allCipherMap$, allCollections$, organization$),
switchMap(async ([qParams, allCiphersMap]) => {
const cipherId = getCipherIdFromParams(qParams);

if (!cipherId) {
this.prevCipherId = null;
return;
}

if (cipherId === this.prevCipherId) {
return;
}
const cipher = allCiphersMap[cipherId];

this.prevCipherId = cipherId;

const cipher = allCiphersMap[cipherId];
if (cipher) {
let action = qParams.action;

// Default to "view" if extension refresh is enabled
if (action == null && this.extensionRefreshEnabled) {
action = "view";
}

if (action == "showFailedToDecrypt") {
DecryptionFailureDialogComponent.open(this.dialogService, {
cipherIds: [cipherId as CipherId],
Expand All @@ -569,6 +570,11 @@ export class VaultComponent implements OnInit, OnDestroy {
return;
}

// Default to "view" if extension refresh is enabled
if (action == null && this.extensionRefreshEnabled) {
action = "view";
}

if (action === "view") {
await this.viewCipherById(cipher);
} else {
Expand Down

0 comments on commit b8f57f3

Please sign in to comment.