2018-04-04 04:14:54 +02:00
import { APP_INITIALIZER , LOCALE_ID , NgModule } from "@angular/core" ;
2021-12-21 15:43:35 +01:00
2023-02-06 22:53:37 +01:00
import { LockGuard as BaseLockGuardService } from "@bitwarden/angular/auth/guards/lock.guard" ;
import { UnauthGuard as BaseUnauthGuardService } from "@bitwarden/angular/auth/guards/unauth.guard" ;
2022-09-07 22:23:32 +02:00
import { MEMORY_STORAGE , SECURE_STORAGE } from "@bitwarden/angular/services/injection-tokens" ;
import { JslibServicesModule } from "@bitwarden/angular/services/jslib-services.module" ;
2022-07-14 20:47:45 +02:00
import { ThemingService } from "@bitwarden/angular/services/theming/theming.service" ;
import { AbstractThemingService } from "@bitwarden/angular/services/theming/theming.service.abstraction" ;
2022-06-14 17:10:53 +02:00
import { ApiService } from "@bitwarden/common/abstractions/api.service" ;
import { AppIdService } from "@bitwarden/common/abstractions/appId.service" ;
import { AuditService } from "@bitwarden/common/abstractions/audit.service" ;
import { CollectionService } from "@bitwarden/common/abstractions/collection.service" ;
2023-01-30 20:04:22 +01:00
import { ConfigApiServiceAbstraction } from "@bitwarden/common/abstractions/config/config-api.service.abstraction" ;
import { ConfigServiceAbstraction } from "@bitwarden/common/abstractions/config/config.service.abstraction" ;
2022-06-14 17:10:53 +02:00
import { CryptoService } from "@bitwarden/common/abstractions/crypto.service" ;
import { CryptoFunctionService } from "@bitwarden/common/abstractions/cryptoFunction.service" ;
2023-01-30 20:04:22 +01:00
import { EncryptService } from "@bitwarden/common/abstractions/encrypt.service" ;
2022-06-14 17:10:53 +02:00
import { EnvironmentService } from "@bitwarden/common/abstractions/environment.service" ;
2022-12-06 14:47:42 +01:00
import { EventCollectionService } from "@bitwarden/common/abstractions/event/event-collection.service" ;
import { EventUploadService } from "@bitwarden/common/abstractions/event/event-upload.service" ;
2022-06-14 17:10:53 +02:00
import { ExportService } from "@bitwarden/common/abstractions/export.service" ;
2022-06-29 23:15:29 +02:00
import { FileDownloadService } from "@bitwarden/common/abstractions/fileDownload/fileDownload.service" ;
2022-06-14 17:10:53 +02:00
import { FileUploadService } from "@bitwarden/common/abstractions/fileUpload.service" ;
2023-01-30 20:04:22 +01:00
import { I18nService as I18nServiceAbstraction } from "@bitwarden/common/abstractions/i18n.service" ;
2022-06-14 17:10:53 +02:00
import { LogService as LogServiceAbstraction } from "@bitwarden/common/abstractions/log.service" ;
import { MessagingService } from "@bitwarden/common/abstractions/messaging.service" ;
import { NotificationsService } from "@bitwarden/common/abstractions/notifications.service" ;
2022-09-27 22:25:19 +02:00
import { OrganizationService } from "@bitwarden/common/abstractions/organization/organization.service.abstraction" ;
2022-06-14 17:10:53 +02:00
import { PasswordGenerationService } from "@bitwarden/common/abstractions/passwordGeneration.service" ;
import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service" ;
2022-08-08 11:04:36 +02:00
import { PolicyApiServiceAbstraction } from "@bitwarden/common/abstractions/policy/policy-api.service.abstraction" ;
2023-01-30 20:04:22 +01:00
import {
InternalPolicyService ,
PolicyService ,
} from "@bitwarden/common/abstractions/policy/policy.service.abstraction" ;
2022-06-14 17:10:53 +02:00
import { ProviderService } from "@bitwarden/common/abstractions/provider.service" ;
import { SearchService as SearchServiceAbstraction } from "@bitwarden/common/abstractions/search.service" ;
import { SendService } from "@bitwarden/common/abstractions/send.service" ;
import { SettingsService } from "@bitwarden/common/abstractions/settings.service" ;
2023-01-30 20:04:22 +01:00
import {
StateService as BaseStateServiceAbstraction ,
StateService ,
} from "@bitwarden/common/abstractions/state.service" ;
2022-11-23 23:26:57 +01:00
import { StateMigrationService } from "@bitwarden/common/abstractions/stateMigration.service" ;
2023-01-12 21:39:33 +01:00
import {
AbstractMemoryStorageService ,
AbstractStorageService ,
} from "@bitwarden/common/abstractions/storage.service" ;
2022-06-14 17:10:53 +02:00
import { TotpService } from "@bitwarden/common/abstractions/totp.service" ;
2022-08-10 03:31:02 +02:00
import { UserVerificationService } from "@bitwarden/common/abstractions/userVerification/userVerification.service.abstraction" ;
2022-06-14 17:10:53 +02:00
import { UsernameGenerationService } from "@bitwarden/common/abstractions/usernameGeneration.service" ;
2022-08-30 16:11:19 +02:00
import { VaultTimeoutService } from "@bitwarden/common/abstractions/vaultTimeout/vaultTimeout.service" ;
2022-08-30 22:30:43 +02:00
import { VaultTimeoutSettingsService } from "@bitwarden/common/abstractions/vaultTimeout/vaultTimeoutSettings.service" ;
2023-02-06 22:53:37 +01:00
import { AuthService as AuthServiceAbstraction } from "@bitwarden/common/auth/abstractions/auth.service" ;
import { KeyConnectorService } from "@bitwarden/common/auth/abstractions/key-connector.service" ;
import { LoginService as LoginServiceAbstraction } from "@bitwarden/common/auth/abstractions/login.service" ;
import { TokenService } from "@bitwarden/common/auth/abstractions/token.service" ;
import { TwoFactorService } from "@bitwarden/common/auth/abstractions/two-factor.service" ;
import { AuthService } from "@bitwarden/common/auth/services/auth.service" ;
import { LoginService } from "@bitwarden/common/auth/services/login.service" ;
2022-11-23 23:26:57 +01:00
import { StateFactory } from "@bitwarden/common/factories/stateFactory" ;
import { GlobalState } from "@bitwarden/common/models/domain/global-state" ;
2022-06-14 17:10:53 +02:00
import { ConsoleLogService } from "@bitwarden/common/services/consoleLog.service" ;
2023-01-30 20:04:22 +01:00
import { ContainerService } from "@bitwarden/common/services/container.service" ;
import { PolicyApiService } from "@bitwarden/common/services/policy/policy-api.service" ;
2022-06-14 17:10:53 +02:00
import { SearchService } from "@bitwarden/common/services/search.service" ;
2023-01-31 22:08:37 +01:00
import { CipherService } from "@bitwarden/common/vault/abstractions/cipher.service" ;
import { FolderApiServiceAbstraction } from "@bitwarden/common/vault/abstractions/folder/folder-api.service.abstraction" ;
import {
FolderService ,
InternalFolderService ,
} from "@bitwarden/common/vault/abstractions/folder/folder.service.abstraction" ;
import { PasswordRepromptService as PasswordRepromptServiceAbstraction } from "@bitwarden/common/vault/abstractions/password-reprompt.service" ;
import { SyncService } from "@bitwarden/common/vault/abstractions/sync/sync.service.abstraction" ;
import { FolderApiService } from "@bitwarden/common/vault/services/folder/folder-api.service" ;
2021-12-21 15:43:35 +01:00
2023-02-06 22:53:37 +01:00
import { LockGuardService , UnauthGuardService } from "../../auth/popup/services" ;
2023-01-31 22:08:37 +01:00
import { AutofillService } from "../../autofill/services/abstractions/autofill.service" ;
2022-02-24 18:14:04 +01:00
import MainBackground from "../../background/main.background" ;
import { BrowserApi } from "../../browser/browserApi" ;
2022-11-23 23:26:57 +01:00
import { Account } from "../../models/account" ;
import { BrowserStateService as StateServiceAbstraction } from "../../services/abstractions/browser-state.service" ;
2023-01-30 20:04:22 +01:00
import { BrowserConfigService } from "../../services/browser-config.service" ;
2022-08-08 13:40:09 +02:00
import { BrowserEnvironmentService } from "../../services/browser-environment.service" ;
2023-01-30 20:04:22 +01:00
import { BrowserI18nService } from "../../services/browser-i18n.service" ;
2022-11-23 23:26:57 +01:00
import { BrowserOrganizationService } from "../../services/browser-organization.service" ;
import { BrowserPolicyService } from "../../services/browser-policy.service" ;
import { BrowserSettingsService } from "../../services/browser-settings.service" ;
import { BrowserStateService } from "../../services/browser-state.service" ;
2022-06-29 23:15:29 +02:00
import { BrowserFileDownloadService } from "../../services/browserFileDownloadService" ;
2018-04-04 14:27:31 +02:00
import BrowserMessagingService from "../../services/browserMessaging.service" ;
2022-02-15 23:06:35 +01:00
import BrowserMessagingPrivateModePopupService from "../../services/browserMessagingPrivateModePopup.service" ;
2023-01-31 22:08:37 +01:00
import { PasswordRepromptService } from "../../vault/popup/services/password-reprompt.service" ;
import { BrowserFolderService } from "../../vault/services/browser-folder.service" ;
import { VaultFilterService } from "../../vault/services/vault-filter.service" ;
2021-12-21 15:43:35 +01:00
2022-02-24 18:14:04 +01:00
import { DebounceNavigationService } from "./debounceNavigationService" ;
2022-04-27 01:11:39 +02:00
import { InitService } from "./init.service" ;
2018-08-17 05:33:07 +02:00
import { PopupSearchService } from "./popup-search.service" ;
2018-04-05 21:35:56 +02:00
import { PopupUtilsService } from "./popup-utils.service" ;
2022-02-15 23:06:35 +01:00
2022-10-19 15:55:57 +02:00
const needsBackgroundInit = BrowserApi . getBackgroundPage ( ) == null ;
const isPrivateMode = needsBackgroundInit && BrowserApi . manifestVersion !== 3 ;
const mainBackground : MainBackground = needsBackgroundInit
2022-02-15 23:06:35 +01:00
? createLocalBgService ( )
: BrowserApi . getBackgroundPage ( ) . bitwardenMain ;
function createLocalBgService() {
2022-10-19 15:55:57 +02:00
const localBgService = new MainBackground ( isPrivateMode ) ;
2022-02-15 23:06:35 +01:00
localBgService . bootstrap ( ) ;
return localBgService ;
}
function getBgService < T > ( service : keyof MainBackground ) {
2018-04-04 14:27:31 +02:00
return ( ) : T = > {
2022-02-15 23:06:35 +01:00
return mainBackground ? ( mainBackground [ service ] as any as T ) : null ;
2018-04-04 14:27:31 +02:00
} ;
}
2018-04-04 04:14:54 +02:00
@NgModule ( {
2021-12-06 12:21:07 +01:00
imports : [ JslibServicesModule ] ,
2018-04-04 04:14:54 +02:00
declarations : [ ] ,
providers : [
2022-04-27 01:11:39 +02:00
InitService ,
DebounceNavigationService ,
2021-12-06 12:21:07 +01:00
{
provide : LOCALE_ID ,
2023-01-30 20:04:22 +01:00
useFactory : ( ) = > getBgService < I18nServiceAbstraction > ( "i18nService" ) ( ) . translationLocale ,
2021-12-06 12:21:07 +01:00
deps : [ ] ,
} ,
{
provide : APP_INITIALIZER ,
2022-04-27 01:11:39 +02:00
useFactory : ( initService : InitService ) = > initService . init ( ) ,
deps : [ InitService ] ,
2021-12-06 12:21:07 +01:00
multi : true ,
2021-12-21 15:43:35 +01:00
} ,
2021-12-06 12:21:07 +01:00
{ provide : BaseLockGuardService , useClass : LockGuardService } ,
{ provide : BaseUnauthGuardService , useClass : UnauthGuardService } ,
2022-02-15 23:06:35 +01:00
{ provide : PopupUtilsService , useFactory : ( ) = > new PopupUtilsService ( isPrivateMode ) } ,
{
provide : MessagingService ,
useFactory : ( ) = > {
2022-10-19 15:55:57 +02:00
return needsBackgroundInit
2022-02-15 23:06:35 +01:00
? new BrowserMessagingPrivateModePopupService ( )
: new BrowserMessagingService ( ) ;
} ,
} ,
{
provide : TwoFactorService ,
useFactory : getBgService < TwoFactorService > ( "twoFactorService" ) ,
deps : [ ] ,
} ,
2021-03-17 22:14:26 +01:00
{
provide : AuthServiceAbstraction ,
useFactory : getBgService < AuthService > ( "authService" ) ,
deps : [ ] ,
} ,
2021-12-06 12:21:07 +01:00
{
provide : SearchServiceAbstraction ,
useFactory : (
cipherService : CipherService ,
logService : ConsoleLogService ,
2023-01-30 20:04:22 +01:00
i18nService : I18nServiceAbstraction
2021-12-06 12:21:07 +01:00
) = > {
2022-02-15 23:06:35 +01:00
return new PopupSearchService (
getBgService < SearchService > ( "searchService" ) ( ) ,
cipherService ,
logService ,
i18nService
) ;
2021-12-06 12:21:07 +01:00
} ,
2023-01-30 20:04:22 +01:00
deps : [ CipherService , LogServiceAbstraction , I18nServiceAbstraction ] ,
2021-12-06 12:21:07 +01:00
} ,
2018-04-04 14:27:31 +02:00
{ provide : AuditService , useFactory : getBgService < AuditService > ( "auditService" ) , deps : [ ] } ,
2021-03-29 17:16:31 +02:00
{
provide : FileUploadService ,
useFactory : getBgService < FileUploadService > ( "fileUploadService" ) ,
deps : [ ] ,
} ,
2018-04-04 14:27:31 +02:00
{ provide : CipherService , useFactory : getBgService < CipherService > ( "cipherService" ) , deps : [ ] } ,
2020-08-31 20:21:59 +02:00
{
provide : CryptoFunctionService ,
useFactory : getBgService < CryptoFunctionService > ( "cryptoFunctionService" ) ,
deps : [ ] ,
} ,
2022-07-08 15:40:31 +02:00
{
provide : FolderService ,
2023-01-30 20:04:22 +01:00
useFactory : (
cryptoService : CryptoService ,
i18nService : I18nServiceAbstraction ,
cipherService : CipherService ,
stateService : StateServiceAbstraction
) = > {
return new BrowserFolderService ( cryptoService , i18nService , cipherService , stateService ) ;
} ,
deps : [ CryptoService , I18nServiceAbstraction , CipherService , StateServiceAbstraction ] ,
} ,
{
provide : InternalFolderService ,
useExisting : FolderService ,
2022-07-08 15:40:31 +02:00
} ,
{
provide : FolderApiServiceAbstraction ,
2023-01-30 20:04:22 +01:00
useFactory : ( folderService : InternalFolderService , apiService : ApiService ) = > {
return new FolderApiService ( folderService , apiService ) ;
} ,
deps : [ InternalFolderService , ApiService ] ,
2022-07-08 15:40:31 +02:00
} ,
2018-04-04 14:27:31 +02:00
{
provide : CollectionService ,
useFactory : getBgService < CollectionService > ( "collectionService" ) ,
2021-07-23 22:32:42 +02:00
deps : [ ] ,
} ,
{
provide : LogServiceAbstraction ,
useFactory : getBgService < ConsoleLogService > ( "logService" ) ,
2018-04-04 14:27:31 +02:00
deps : [ ] ,
} ,
2022-08-08 13:40:09 +02:00
{
provide : BrowserEnvironmentService ,
useExisting : EnvironmentService ,
} ,
2018-04-04 14:27:31 +02:00
{
provide : EnvironmentService ,
useFactory : getBgService < EnvironmentService > ( "environmentService" ) ,
2021-12-21 15:43:35 +01:00
deps : [ ] ,
} ,
2018-04-04 14:27:31 +02:00
{ provide : TotpService , useFactory : getBgService < TotpService > ( "totpService" ) , deps : [ ] } ,
{ provide : TokenService , useFactory : getBgService < TokenService > ( "tokenService" ) , deps : [ ] } ,
2023-01-30 20:04:22 +01:00
{
provide : I18nServiceAbstraction ,
useFactory : ( stateService : BrowserStateService ) = > {
return new BrowserI18nService ( BrowserApi . getUILanguage ( window ) , stateService ) ;
} ,
deps : [ StateService ] ,
} ,
{
provide : CryptoService ,
useFactory : ( encryptService : EncryptService ) = > {
const cryptoService = getBgService < CryptoService > ( "cryptoService" ) ( ) ;
new ContainerService ( cryptoService , encryptService ) . attachToGlobal ( self ) ;
return cryptoService ;
} ,
deps : [ EncryptService ] ,
} ,
2022-12-06 14:47:42 +01:00
{
provide : EventUploadService ,
useFactory : getBgService < EventUploadService > ( "eventUploadService" ) ,
deps : [ ] ,
} ,
{
provide : EventCollectionService ,
useFactory : getBgService < EventCollectionService > ( "eventCollectionService" ) ,
deps : [ ] ,
} ,
2022-08-08 11:04:36 +02:00
{
provide : PolicyService ,
2022-11-23 23:26:57 +01:00
useFactory : (
stateService : StateServiceAbstraction ,
organizationService : OrganizationService
) = > {
return new BrowserPolicyService ( stateService , organizationService ) ;
} ,
deps : [ StateServiceAbstraction , OrganizationService ] ,
2022-08-08 11:04:36 +02:00
} ,
{
provide : PolicyApiServiceAbstraction ,
2023-01-30 20:04:22 +01:00
useFactory : (
policyService : InternalPolicyService ,
apiService : ApiService ,
stateService : StateService
) = > {
return new PolicyApiService ( policyService , apiService , stateService ) ;
} ,
deps : [ InternalPolicyService , ApiService , StateService ] ,
2022-08-08 11:04:36 +02:00
} ,
2018-04-04 14:27:31 +02:00
{
provide : PlatformUtilsService ,
useFactory : getBgService < PlatformUtilsService > ( "platformUtilsService" ) ,
2018-04-11 05:49:46 +02:00
deps : [ ] ,
2018-04-04 14:27:31 +02:00
} ,
{
provide : PasswordGenerationService ,
useFactory : getBgService < PasswordGenerationService > ( "passwordGenerationService" ) ,
2018-04-11 05:49:46 +02:00
deps : [ ] ,
2018-04-04 14:27:31 +02:00
} ,
{ provide : ApiService , useFactory : getBgService < ApiService > ( "apiService" ) , deps : [ ] } ,
{ provide : SyncService , useFactory : getBgService < SyncService > ( "syncService" ) , deps : [ ] } ,
{
provide : SettingsService ,
2022-11-23 23:26:57 +01:00
useFactory : ( stateService : StateServiceAbstraction ) = > {
return new BrowserSettingsService ( stateService ) ;
} ,
deps : [ StateServiceAbstraction ] ,
2018-04-04 14:27:31 +02:00
} ,
{
2022-06-27 19:38:12 +02:00
provide : AbstractStorageService ,
useFactory : getBgService < AbstractStorageService > ( "storageService" ) ,
2021-12-21 15:43:35 +01:00
deps : [ ] ,
} ,
2018-04-04 14:27:31 +02:00
{ provide : AppIdService , useFactory : getBgService < AppIdService > ( "appIdService" ) , deps : [ ] } ,
{
provide : AutofillService ,
useFactory : getBgService < AutofillService > ( "autofillService" ) ,
deps : [ ] ,
} ,
2018-08-13 17:53:16 +02:00
{ provide : ExportService , useFactory : getBgService < ExportService > ( "exportService" ) , deps : [ ] } ,
2020-11-18 22:54:29 +01:00
{ provide : SendService , useFactory : getBgService < SendService > ( "sendService" ) , deps : [ ] } ,
2021-11-09 18:59:51 +01:00
{
provide : KeyConnectorService ,
useFactory : getBgService < KeyConnectorService > ( "keyConnectorService" ) ,
deps : [ ] ,
} ,
2021-11-16 11:50:58 +01:00
{
provide : UserVerificationService ,
useFactory : getBgService < UserVerificationService > ( "userVerificationService" ) ,
deps : [ ] ,
} ,
2022-08-30 22:30:43 +02:00
{
provide : VaultTimeoutSettingsService ,
useFactory : getBgService < VaultTimeoutSettingsService > ( "vaultTimeoutSettingsService" ) ,
deps : [ ] ,
} ,
2020-04-06 17:40:16 +02:00
{
provide : VaultTimeoutService ,
useFactory : getBgService < VaultTimeoutService > ( "vaultTimeoutService" ) ,
deps : [ ] ,
} ,
2018-08-20 23:40:39 +02:00
{
provide : NotificationsService ,
useFactory : getBgService < NotificationsService > ( "notificationsService" ) ,
deps : [ ] ,
} ,
2021-12-06 12:21:07 +01:00
{
provide : LogServiceAbstraction ,
useFactory : getBgService < ConsoleLogService > ( "logService" ) ,
deps : [ ] ,
} ,
2021-08-27 15:27:22 +02:00
{ provide : PasswordRepromptServiceAbstraction , useClass : PasswordRepromptService } ,
2022-01-27 22:22:51 +01:00
{
provide : OrganizationService ,
2022-11-23 23:26:57 +01:00
useFactory : ( stateService : StateServiceAbstraction ) = > {
return new BrowserOrganizationService ( stateService ) ;
} ,
deps : [ StateServiceAbstraction ] ,
2022-01-27 22:22:51 +01:00
} ,
2022-05-09 14:19:18 +02:00
{
provide : VaultFilterService ,
2023-01-30 20:04:22 +01:00
useFactory : (
stateService : StateServiceAbstraction ,
organizationService : OrganizationService ,
folderService : FolderService ,
policyService : PolicyService
) = > {
2022-05-09 14:19:18 +02:00
return new VaultFilterService (
2023-01-30 20:04:22 +01:00
stateService ,
organizationService ,
folderService ,
2022-05-09 14:19:18 +02:00
getBgService < CipherService > ( "cipherService" ) ( ) ,
getBgService < CollectionService > ( "collectionService" ) ( ) ,
2023-01-30 20:04:22 +01:00
policyService
2022-05-09 14:19:18 +02:00
) ;
} ,
2023-01-30 20:04:22 +01:00
deps : [ StateServiceAbstraction , OrganizationService , FolderService , PolicyService ] ,
2022-05-09 14:19:18 +02:00
} ,
2022-01-27 22:22:51 +01:00
{
provide : ProviderService ,
useFactory : getBgService < ProviderService > ( "providerService" ) ,
deps : [ ] ,
} ,
{
2022-04-27 01:11:39 +02:00
provide : SECURE_STORAGE ,
2022-06-27 19:38:12 +02:00
useFactory : getBgService < AbstractStorageService > ( "secureStorageService" ) ,
2022-01-27 22:22:51 +01:00
deps : [ ] ,
} ,
2022-06-27 19:38:12 +02:00
{
provide : MEMORY_STORAGE ,
useFactory : getBgService < AbstractStorageService > ( "memoryStorageService" ) ,
} ,
2022-01-27 22:22:51 +01:00
{
2022-11-23 23:26:57 +01:00
provide : StateMigrationService ,
useFactory : getBgService < StateMigrationService > ( "stateMigrationService" ) ,
2022-01-27 22:22:51 +01:00
deps : [ ] ,
} ,
2022-11-23 23:26:57 +01:00
{
provide : StateServiceAbstraction ,
useFactory : (
storageService : AbstractStorageService ,
secureStorageService : AbstractStorageService ,
2023-01-12 21:39:33 +01:00
memoryStorageService : AbstractMemoryStorageService ,
2022-11-23 23:26:57 +01:00
logService : LogServiceAbstraction ,
stateMigrationService : StateMigrationService
) = > {
return new BrowserStateService (
storageService ,
secureStorageService ,
memoryStorageService ,
logService ,
stateMigrationService ,
new StateFactory ( GlobalState , Account )
) ;
} ,
deps : [
AbstractStorageService ,
SECURE_STORAGE ,
MEMORY_STORAGE ,
LogServiceAbstraction ,
StateMigrationService ,
] ,
} ,
2022-03-30 23:59:58 +02:00
{
provide : UsernameGenerationService ,
useFactory : getBgService < UsernameGenerationService > ( "usernameGenerationService" ) ,
deps : [ ] ,
} ,
2022-01-27 22:22:51 +01:00
{
provide : BaseStateServiceAbstraction ,
useExisting : StateServiceAbstraction ,
deps : [ ] ,
} ,
2022-06-29 23:15:29 +02:00
{
provide : FileDownloadService ,
useClass : BrowserFileDownloadService ,
} ,
2022-10-28 20:54:55 +02:00
{
provide : LoginServiceAbstraction ,
useClass : LoginService ,
2022-12-16 16:08:44 +01:00
deps : [ StateServiceAbstraction ] ,
2022-10-28 20:54:55 +02:00
} ,
2022-07-14 20:47:45 +02:00
{
provide : AbstractThemingService ,
2022-11-23 23:26:57 +01:00
useFactory : (
stateService : StateServiceAbstraction ,
platformUtilsService : PlatformUtilsService
) = > {
2022-07-14 20:47:45 +02:00
return new ThemingService (
2022-11-23 23:26:57 +01:00
stateService ,
2022-07-14 20:47:45 +02:00
// Safari doesn't properly handle the (prefers-color-scheme) media query in the popup window, it always returns light.
// In Safari we have to use the background page instead, which comes with limitations like not dynamically changing the extension theme when the system theme is changed.
2022-11-23 23:26:57 +01:00
platformUtilsService . isSafari ( ) ? getBgService < Window > ( "backgroundWindow" ) ( ) : window ,
2022-07-14 20:47:45 +02:00
document
) ;
} ,
2022-11-23 23:26:57 +01:00
deps : [ StateServiceAbstraction , PlatformUtilsService ] ,
2022-07-14 20:47:45 +02:00
} ,
2023-01-30 20:04:22 +01:00
{
provide : ConfigServiceAbstraction ,
useClass : BrowserConfigService ,
deps : [ StateServiceAbstraction , ConfigApiServiceAbstraction ] ,
} ,
2018-04-04 04:14:54 +02:00
] ,
} )
export class ServicesModule { }