diff --git a/apps/browser/src/background/main.background.ts b/apps/browser/src/background/main.background.ts index e77203f83e..ae5f5bf589 100644 --- a/apps/browser/src/background/main.background.ts +++ b/apps/browser/src/background/main.background.ts @@ -1214,7 +1214,22 @@ export default class MainBackground { ); // can be removed once password generation history is migrated to state providers await this.stateService.clearDecryptedData(currentlyActiveAccount); + // HACK to ensure account is switched before proceeding + const switchPromise = firstValueFrom( + this.accountService.activeAccount$.pipe( + filter((account) => (account?.id ?? null) === (userId ?? null)), + timeout({ + first: 1_000, + with: () => { + throw new Error( + "The account switch process did not complete in a reasonable amount of time.", + ); + }, + }), + ), + ); await this.accountService.switchAccount(userId); + await switchPromise; // Clear sequentialized caches clearCaches(); diff --git a/apps/browser/src/background/runtime.background.ts b/apps/browser/src/background/runtime.background.ts index 1db32659d2..5473664e3b 100644 --- a/apps/browser/src/background/runtime.background.ts +++ b/apps/browser/src/background/runtime.background.ts @@ -196,8 +196,6 @@ export default class RuntimeBackground { } await this.notificationsService.updateConnection(msg.command === "loggedIn"); - await this.main.refreshBadge(); - await this.main.refreshMenu(false); this.systemService.cancelProcessReload(); if (item) { @@ -209,6 +207,13 @@ export default class RuntimeBackground { item, ); } + + // @TODO these need to happen last to avoid blocking `tabSendMessageData` above + // The underlying cause exists within `cipherService.getAllDecrypted` via + // `getAllDecryptedForUrl` and is anticipated to be refactored + await this.main.refreshBadge(); + await this.main.refreshMenu(false); + break; } case "addToLockedVaultPendingNotifications": diff --git a/apps/web/src/app/billing/organizations/organization-subscription-cloud.component.html b/apps/web/src/app/billing/organizations/organization-subscription-cloud.component.html index 5a71e353d7..25ac3a7a15 100644 --- a/apps/web/src/app/billing/organizations/organization-subscription-cloud.component.html +++ b/apps/web/src/app/billing/organizations/organization-subscription-cloud.component.html @@ -142,10 +142,22 @@

{{ "manageSubscription" | i18n }}

+

+ {{ "smStandaloneTrialSeatCountUpdateMessageFragment1" | i18n }} + {{ "passwordManager" | i18n }} + {{ "smStandaloneTrialSeatCountUpdateMessageFragment2" | i18n }} + {{ "contactSupportShort" | i18n }}. + +

{{ subscriptionDesc }}

{{ "passwordManager" | i18n }}

@@ -168,32 +180,36 @@ > {{ "removeSponsorship" | i18n }} -

{{ "storage" | i18n }}

-

- {{ "subscriptionStorage" | i18n: sub.maxStorageGb || 0 : sub.storageName || "0 MB" }} -

- - -
-
- - + +

{{ "storage" | i18n }}

+

+ {{ "subscriptionStorage" | i18n: sub.maxStorageGb || 0 : sub.storageName || "0 MB" }} +

+ + +
+
+ + +
-
+

{{ "secretsManager" | i18n }}

diff --git a/apps/web/src/locales/en/messages.json b/apps/web/src/locales/en/messages.json index fb1c30e546..650ec4b8e1 100644 --- a/apps/web/src/locales/en/messages.json +++ b/apps/web/src/locales/en/messages.json @@ -3565,6 +3565,12 @@ "subscriptionUserSeatsUnlimitedAutoscale": { "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited members exceed your subscription seats, you will immediately receive a prorated charge for the additional members." }, + "smStandaloneTrialSeatCountUpdateMessageFragment1": { + "message": "If you want to add additional" + }, + "smStandaloneTrialSeatCountUpdateMessageFragment2": { + "message": "seats without the bundled offer, please contact" + }, "subscriptionUserSeatsLimitedAutoscale": { "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited members exceed your subscription seats, you will immediately receive a prorated charge for the additional members until your $MAX$ seat limit is reached.", "placeholders": {