Add premium dialog when trying to navigate to attachments without premium permissions (#11387)

This commit is contained in:
Nick Krantz 2024-10-04 08:30:39 -05:00 committed by GitHub
parent f82563ee23
commit 8ec5517809
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 14 additions and 0 deletions

View File

@ -207,6 +207,7 @@ export class VaultItemDialogComponent implements OnInit, OnDestroy {
private accountService: AccountService, private accountService: AccountService,
private router: Router, private router: Router,
private billingAccountProfileStateService: BillingAccountProfileStateService, private billingAccountProfileStateService: BillingAccountProfileStateService,
private premiumUpgradeService: PremiumUpgradePromptService,
) { ) {
this.updateTitle(); this.updateTitle();
} }
@ -297,6 +298,13 @@ export class VaultItemDialogComponent implements OnInit, OnDestroy {
}; };
openAttachmentsDialog = async () => { openAttachmentsDialog = async () => {
const canAccessAttachments = await firstValueFrom(this.canAccessAttachments$);
if (!canAccessAttachments) {
await this.premiumUpgradeService.promptForPremium();
return;
}
const dialogRef = this.dialogService.open<AttachmentDialogCloseResult, { cipherId: CipherId }>( const dialogRef = this.dialogService.open<AttachmentDialogCloseResult, { cipherId: CipherId }>(
AttachmentsV2Component, AttachmentsV2Component,
{ {

View File

@ -611,6 +611,12 @@ export class VaultComponent implements OnInit, OnDestroy {
const result = await lastValueFrom(this.vaultItemDialogRef.closed); const result = await lastValueFrom(this.vaultItemDialogRef.closed);
this.vaultItemDialogRef = undefined; this.vaultItemDialogRef = undefined;
// When the dialog is closed for a premium upgrade, return early as the user
// should be navigated to the subscription settings elsewhere
if (result === VaultItemDialogResult.PremiumUpgrade) {
return;
}
// If the dialog was closed by deleting the cipher, refresh the vault. // If the dialog was closed by deleting the cipher, refresh the vault.
if (result === VaultItemDialogResult.Deleted || result === VaultItemDialogResult.Saved) { if (result === VaultItemDialogResult.Deleted || result === VaultItemDialogResult.Saved) {
this.refresh(); this.refresh();