From e3f55d793d62e78463650cddec699aed0c13d357 Mon Sep 17 00:00:00 2001 From: Patrick-Pimentel-Bitwarden Date: Thu, 4 Sep 2025 16:57:34 -0400 Subject: [PATCH] fix(signalr-premature-closure): [PM-25459] Signalr Closure - Installed the noop auth request answering service properly and made it into a noop. (#16297) --- .../src/popup/services/services.module.ts | 20 ++++++++++++++++++- .../src/services/jslib-services.module.ts | 14 +++---------- ...=> noop-auth-request-answering.service.ts} | 12 +++-------- 3 files changed, 25 insertions(+), 21 deletions(-) rename libs/common/src/auth/services/auth-request-answering/{unsupported-auth-request-answering.service.ts => noop-auth-request-answering.service.ts} (59%) diff --git a/apps/browser/src/popup/services/services.module.ts b/apps/browser/src/popup/services/services.module.ts index 1372059d86..d68e71f3bc 100644 --- a/apps/browser/src/popup/services/services.module.ts +++ b/apps/browser/src/popup/services/services.module.ts @@ -43,11 +43,13 @@ import { AccountService, AccountService as AccountServiceAbstraction, } from "@bitwarden/common/auth/abstractions/account.service"; +import { AuthRequestAnsweringServiceAbstraction } from "@bitwarden/common/auth/abstractions/auth-request-answering/auth-request-answering.service.abstraction"; import { AuthService } from "@bitwarden/common/auth/abstractions/auth.service"; import { MasterPasswordApiService } from "@bitwarden/common/auth/abstractions/master-password-api.service.abstraction"; import { SsoLoginServiceAbstraction } from "@bitwarden/common/auth/abstractions/sso-login.service.abstraction"; import { TokenService } from "@bitwarden/common/auth/abstractions/token.service"; import { UserVerificationService } from "@bitwarden/common/auth/abstractions/user-verification/user-verification.service.abstraction"; +import { AuthRequestAnsweringService } from "@bitwarden/common/auth/services/auth-request-answering/auth-request-answering.service"; import { AutofillSettingsService, AutofillSettingsServiceAbstraction, @@ -66,7 +68,10 @@ import { KeyGenerationService } from "@bitwarden/common/key-management/crypto"; import { CryptoFunctionService } from "@bitwarden/common/key-management/crypto/abstractions/crypto-function.service"; import { EncryptService } from "@bitwarden/common/key-management/crypto/abstractions/encrypt.service"; import { WebCryptoFunctionService } from "@bitwarden/common/key-management/crypto/services/web-crypto-function.service"; -import { InternalMasterPasswordServiceAbstraction } from "@bitwarden/common/key-management/master-password/abstractions/master-password.service.abstraction"; +import { + InternalMasterPasswordServiceAbstraction, + MasterPasswordServiceAbstraction, +} from "@bitwarden/common/key-management/master-password/abstractions/master-password.service.abstraction"; import { PinServiceAbstraction } from "@bitwarden/common/key-management/pin/pin.service.abstraction"; import { VaultTimeoutService, @@ -466,6 +471,19 @@ const safeProviders: SafeProvider[] = [ useClass: InlineDerivedStateProvider, deps: [], }), + safeProvider({ + provide: AuthRequestAnsweringServiceAbstraction, + useClass: AuthRequestAnsweringService, + deps: [ + AccountServiceAbstraction, + ActionsService, + AuthService, + I18nServiceAbstraction, + MasterPasswordServiceAbstraction, + PlatformUtilsService, + SystemNotificationsService, + ], + }), safeProvider({ provide: AutofillSettingsServiceAbstraction, useClass: AutofillSettingsService, diff --git a/libs/angular/src/services/jslib-services.module.ts b/libs/angular/src/services/jslib-services.module.ts index 5066cabd05..05226179c6 100644 --- a/libs/angular/src/services/jslib-services.module.ts +++ b/libs/angular/src/services/jslib-services.module.ts @@ -105,7 +105,7 @@ import { WebAuthnLoginServiceAbstraction } from "@bitwarden/common/auth/abstract import { AccountApiServiceImplementation } from "@bitwarden/common/auth/services/account-api.service"; import { AccountServiceImplementation } from "@bitwarden/common/auth/services/account.service"; import { AnonymousHubService } from "@bitwarden/common/auth/services/anonymous-hub.service"; -import { AuthRequestAnsweringService } from "@bitwarden/common/auth/services/auth-request-answering/auth-request-answering.service"; +import { NoopAuthRequestAnsweringService } from "@bitwarden/common/auth/services/auth-request-answering/noop-auth-request-answering.service"; import { AuthService } from "@bitwarden/common/auth/services/auth.service"; import { AvatarService } from "@bitwarden/common/auth/services/avatar.service"; import { DefaultActiveUserAccessor } from "@bitwarden/common/auth/services/default-active-user.accessor"; @@ -944,16 +944,8 @@ const safeProviders: SafeProvider[] = [ }), safeProvider({ provide: AuthRequestAnsweringServiceAbstraction, - useClass: AuthRequestAnsweringService, - deps: [ - AccountServiceAbstraction, - ActionsService, - AuthServiceAbstraction, - I18nServiceAbstraction, - MasterPasswordServiceAbstraction, - PlatformUtilsServiceAbstraction, - SystemNotificationsService, - ], + useClass: NoopAuthRequestAnsweringService, + deps: [], }), safeProvider({ provide: ServerNotificationsService, diff --git a/libs/common/src/auth/services/auth-request-answering/unsupported-auth-request-answering.service.ts b/libs/common/src/auth/services/auth-request-answering/noop-auth-request-answering.service.ts similarity index 59% rename from libs/common/src/auth/services/auth-request-answering/unsupported-auth-request-answering.service.ts rename to libs/common/src/auth/services/auth-request-answering/noop-auth-request-answering.service.ts index c4f503bd39..9e229ef112 100644 --- a/libs/common/src/auth/services/auth-request-answering/unsupported-auth-request-answering.service.ts +++ b/libs/common/src/auth/services/auth-request-answering/noop-auth-request-answering.service.ts @@ -3,15 +3,9 @@ import { UserId } from "@bitwarden/user-core"; import { AuthRequestAnsweringServiceAbstraction } from "../../abstractions/auth-request-answering/auth-request-answering.service.abstraction"; -export class UnsupportedAuthRequestAnsweringService - implements AuthRequestAnsweringServiceAbstraction -{ +export class NoopAuthRequestAnsweringService implements AuthRequestAnsweringServiceAbstraction { constructor() {} - async handleAuthRequestNotificationClicked(event: SystemNotificationEvent): Promise { - throw new Error("Received pending auth request not supported."); - } + async handleAuthRequestNotificationClicked(event: SystemNotificationEvent): Promise {} - async receivedPendingAuthRequest(userId: UserId, notificationId: string): Promise { - throw new Error("Received pending auth request not supported."); - } + async receivedPendingAuthRequest(userId: UserId, notificationId: string): Promise {} }