From 98af7a13ed1ca812687dd77a5637ac36a5c29ef2 Mon Sep 17 00:00:00 2001 From: Jason Ng Date: Tue, 14 Oct 2025 17:41:05 -0400 Subject: [PATCH] [PM-19152] Archive in Web (#16686) * archive and unarchive an individual item * bulk archive and unachive * updates to text strings for archive empty state and tooltips * update translation keys to have an archive verb and noun differentiation * if premium member loses premium and has archive items. apply filter changes, and item more option changes * updating unArchive text * unarchive an archived item on edit if user loses premium * updates for unarchive btn, refactor archive flag for less churn * add services to cipher form stories * add refresh to archive calls in vault, update bulk archive copy * Do not show archive ability for deleted items * add archive check for login menu actions * remove assign to collections for archive filter * update bulk success message * add error handling for archive methods * fix null reference check * add unarchive icon --------- Co-authored-by: Nick Krantz --- apps/browser/src/_locales/en/messages.json | 10 +- .../item-more-options.component.ts | 2 +- .../popup/settings/archive.component.html | 2 +- .../vault/popup/settings/archive.component.ts | 2 +- apps/desktop/src/locales/en/messages.json | 10 +- .../vault-cipher-row.component.html | 16 +- .../vault-items/vault-cipher-row.component.ts | 61 +++++++- .../vault-items/vault-item-event.ts | 4 +- .../vault-items/vault-items.component.html | 18 +++ .../vault-items/vault-items.component.ts | 56 ++++++- .../components/vault-filter.component.ts | 7 +- .../individual-vault/vault.component.html | 2 + .../vault/individual-vault/vault.component.ts | 146 +++++++++++++++++- apps/web/src/locales/en/messages.json | 37 ++++- .../abstractions/cipher-archive.service.ts | 1 + .../default-cipher-archive.service.ts | 4 + .../src/cipher-form/cipher-form.stories.ts | 16 +- .../components/cipher-form.component.spec.ts | 35 ++++- .../components/cipher-form.component.ts | 19 ++- 19 files changed, 414 insertions(+), 34 deletions(-) diff --git a/apps/browser/src/_locales/en/messages.json b/apps/browser/src/_locales/en/messages.json index d91a33c6796..a5d0852eed5 100644 --- a/apps/browser/src/_locales/en/messages.json +++ b/apps/browser/src/_locales/en/messages.json @@ -558,7 +558,7 @@ "message": "Archive", "description": "Verb" }, - "unarchive": { + "unArchive": { "message": "Unarchive" }, "itemsInArchive": { @@ -570,11 +570,11 @@ "noItemsInArchiveDesc": { "message": "Archived items will appear here and will be excluded from general search results and autofill suggestions." }, - "itemSentToArchive": { - "message": "Item sent to archive" + "itemWasSentToArchive": { + "message": "Item was sent to archive" }, - "itemRemovedFromArchive": { - "message": "Item removed from archive" + "itemUnarchived": { + "message": "Item was unarchived" }, "archiveItem": { "message": "Archive item" diff --git a/apps/browser/src/vault/popup/components/vault-v2/item-more-options/item-more-options.component.ts b/apps/browser/src/vault/popup/components/vault-v2/item-more-options/item-more-options.component.ts index ebcd8707597..83535b09e66 100644 --- a/apps/browser/src/vault/popup/components/vault-v2/item-more-options/item-more-options.component.ts +++ b/apps/browser/src/vault/popup/components/vault-v2/item-more-options/item-more-options.component.ts @@ -302,7 +302,7 @@ export class ItemMoreOptionsComponent { await this.cipherArchiveService.archiveWithServer(this.cipher.id as CipherId, activeUserId); this.toastService.showToast({ variant: "success", - message: this.i18nService.t("itemSentToArchive"), + message: this.i18nService.t("itemWasSentToArchive"), }); } } diff --git a/apps/browser/src/vault/popup/settings/archive.component.html b/apps/browser/src/vault/popup/settings/archive.component.html index 5fb57814fff..faaf0243fc7 100644 --- a/apps/browser/src/vault/popup/settings/archive.component.html +++ b/apps/browser/src/vault/popup/settings/archive.component.html @@ -49,7 +49,7 @@ {{ "clone" | i18n }} - + + @if (showArchiveButton) { + + } + + @if (showUnArchiveButton) { + + } + + + + + +