2018-06-05 21:02:53 +02:00
|
|
|
import { APP_INITIALIZER, Injector, NgModule } from "@angular/core";
|
2021-12-07 20:41:45 +01:00
|
|
|
import { ToastrModule } from "ngx-toastr";
|
2018-06-05 21:02:53 +02:00
|
|
|
|
2018-06-10 04:40:53 +02:00
|
|
|
import { BroadcasterMessagingService } from "../../services/broadcasterMessaging.service";
|
|
|
|
import { HtmlStorageService } from "../../services/htmlStorage.service";
|
|
|
|
import { I18nService } from "../../services/i18n.service";
|
|
|
|
import { MemoryStorageService } from "../../services/memoryStorage.service";
|
|
|
|
import { WebPlatformUtilsService } from "../../services/webPlatformUtils.service";
|
2018-06-05 21:02:53 +02:00
|
|
|
|
2018-07-07 05:08:10 +02:00
|
|
|
import { EventService } from "./event.service";
|
2021-12-03 03:32:58 +01:00
|
|
|
import { ModalService } from "./modal.service";
|
2018-07-05 21:27:23 +02:00
|
|
|
import { OrganizationGuardService } from "./organization-guard.service";
|
|
|
|
import { OrganizationTypeGuardService } from "./organization-type-guard.service";
|
2021-08-25 16:10:17 +02:00
|
|
|
import { PolicyListService } from "./policy-list.service";
|
2018-06-10 04:40:53 +02:00
|
|
|
import { RouterService } from "./router.service";
|
2018-06-10 04:02:45 +02:00
|
|
|
|
2021-12-03 03:32:58 +01:00
|
|
|
import { JslibServicesModule } from "jslib-angular/services/jslib-services.module";
|
2021-08-27 14:50:58 +02:00
|
|
|
import { ModalService as ModalServiceAbstraction } from "jslib-angular/services/modal.service";
|
2018-06-05 21:02:53 +02:00
|
|
|
|
2021-06-07 20:13:58 +02:00
|
|
|
import { AuthService } from "jslib-common/services/auth.service";
|
|
|
|
import { ContainerService } from "jslib-common/services/container.service";
|
|
|
|
import { CryptoService } from "jslib-common/services/crypto.service";
|
|
|
|
import { EventService as EventLoggingService } from "jslib-common/services/event.service";
|
|
|
|
import { ImportService } from "jslib-common/services/import.service";
|
|
|
|
import { VaultTimeoutService } from "jslib-common/services/vaultTimeout.service";
|
2018-06-05 21:02:53 +02:00
|
|
|
|
2021-06-07 20:13:58 +02:00
|
|
|
import { ApiService as ApiServiceAbstraction } from "jslib-common/abstractions/api.service";
|
|
|
|
import { AuthService as AuthServiceAbstraction } from "jslib-common/abstractions/auth.service";
|
|
|
|
import { CipherService as CipherServiceAbstraction } from "jslib-common/abstractions/cipher.service";
|
|
|
|
import { CollectionService as CollectionServiceAbstraction } from "jslib-common/abstractions/collection.service";
|
|
|
|
import { CryptoService as CryptoServiceAbstraction } from "jslib-common/abstractions/crypto.service";
|
|
|
|
import { CryptoFunctionService as CryptoFunctionServiceAbstraction } from "jslib-common/abstractions/cryptoFunction.service";
|
2021-08-25 20:15:31 +02:00
|
|
|
import {
|
|
|
|
EnvironmentService as EnvironmentServiceAbstraction,
|
|
|
|
Urls,
|
|
|
|
} from "jslib-common/abstractions/environment.service";
|
2021-06-07 20:13:58 +02:00
|
|
|
import { EventService as EventLoggingServiceAbstraction } from "jslib-common/abstractions/event.service";
|
|
|
|
import { FolderService as FolderServiceAbstraction } from "jslib-common/abstractions/folder.service";
|
|
|
|
import { I18nService as I18nServiceAbstraction } from "jslib-common/abstractions/i18n.service";
|
|
|
|
import { ImportService as ImportServiceAbstraction } from "jslib-common/abstractions/import.service";
|
2021-07-23 21:30:04 +02:00
|
|
|
import { LogService } from "jslib-common/abstractions/log.service";
|
2021-06-07 20:13:58 +02:00
|
|
|
import { MessagingService as MessagingServiceAbstraction } from "jslib-common/abstractions/messaging.service";
|
|
|
|
import { NotificationsService as NotificationsServiceAbstraction } from "jslib-common/abstractions/notifications.service";
|
|
|
|
import { PlatformUtilsService as PlatformUtilsServiceAbstraction } from "jslib-common/abstractions/platformUtils.service";
|
|
|
|
import { StateService as StateServiceAbstraction } from "jslib-common/abstractions/state.service";
|
|
|
|
import { StorageService as StorageServiceAbstraction } from "jslib-common/abstractions/storage.service";
|
|
|
|
import { VaultTimeoutService as VaultTimeoutServiceAbstraction } from "jslib-common/abstractions/vaultTimeout.service";
|
2018-06-05 21:02:53 +02:00
|
|
|
|
2021-09-30 00:06:20 +02:00
|
|
|
import { ThemeType } from "jslib-common/enums/themeType";
|
|
|
|
|
2021-12-03 03:32:58 +01:00
|
|
|
export function initFactory(
|
|
|
|
window: Window,
|
|
|
|
storageService: StorageServiceAbstraction,
|
|
|
|
environmentService: EnvironmentServiceAbstraction,
|
|
|
|
notificationsService: NotificationsServiceAbstraction,
|
|
|
|
vaultTimeoutService: VaultTimeoutService,
|
|
|
|
i18nService: I18nService,
|
|
|
|
eventLoggingService: EventLoggingService,
|
|
|
|
authService: AuthService,
|
|
|
|
stateService: StateServiceAbstraction,
|
|
|
|
platformUtilsService: PlatformUtilsServiceAbstraction,
|
|
|
|
cryptoService: CryptoServiceAbstraction
|
|
|
|
): Function {
|
2018-06-05 21:02:53 +02:00
|
|
|
return async () => {
|
2018-07-27 21:08:59 +02:00
|
|
|
await (storageService as HtmlStorageService).init();
|
2021-12-14 17:10:26 +01:00
|
|
|
await stateService.init();
|
2021-04-09 09:57:25 +02:00
|
|
|
|
2021-08-25 20:15:31 +02:00
|
|
|
const urls = process.env.URLS as Urls;
|
|
|
|
urls.base ??= window.location.origin;
|
|
|
|
environmentService.setUrls(urls, false);
|
2021-04-09 09:57:25 +02:00
|
|
|
|
2021-07-23 20:47:43 +02:00
|
|
|
setTimeout(() => notificationsService.init(), 3000);
|
2018-06-22 03:32:17 +02:00
|
|
|
|
2020-03-30 16:59:47 +02:00
|
|
|
vaultTimeoutService.init(true);
|
2021-12-14 17:10:26 +01:00
|
|
|
const locale = await stateService.getLocale();
|
2018-06-05 21:02:53 +02:00
|
|
|
await i18nService.init(locale);
|
2019-07-12 04:03:12 +02:00
|
|
|
eventLoggingService.init(true);
|
2018-10-04 17:58:19 +02:00
|
|
|
authService.init();
|
2018-06-05 21:02:53 +02:00
|
|
|
const htmlEl = window.document.documentElement;
|
|
|
|
htmlEl.classList.add("locale_" + i18nService.translationLocale);
|
2021-09-30 00:06:20 +02:00
|
|
|
|
|
|
|
// Initial theme is set in index.html which must be updated if there are any changes to theming logic
|
|
|
|
platformUtilsService.onDefaultSystemThemeChange(async (sysTheme) => {
|
2021-12-14 17:10:26 +01:00
|
|
|
const bwTheme = await stateService.getTheme();
|
2021-09-30 00:06:20 +02:00
|
|
|
if (bwTheme === ThemeType.System) {
|
|
|
|
htmlEl.classList.remove("theme_" + ThemeType.Light, "theme_" + ThemeType.Dark);
|
|
|
|
htmlEl.classList.add("theme_" + sysTheme);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2021-12-03 03:32:58 +01:00
|
|
|
const containerService = new ContainerService(cryptoService);
|
|
|
|
containerService.attachToWindow(window);
|
2018-06-05 21:02:53 +02:00
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
@NgModule({
|
2021-12-03 03:32:58 +01:00
|
|
|
imports: [ToastrModule, JslibServicesModule],
|
2018-06-05 21:02:53 +02:00
|
|
|
declarations: [],
|
|
|
|
providers: [
|
2021-12-03 03:32:58 +01:00
|
|
|
{
|
|
|
|
provide: APP_INITIALIZER,
|
|
|
|
useFactory: initFactory,
|
|
|
|
deps: [
|
|
|
|
"WINDOW",
|
|
|
|
StorageServiceAbstraction,
|
|
|
|
EnvironmentServiceAbstraction,
|
|
|
|
NotificationsServiceAbstraction,
|
|
|
|
VaultTimeoutServiceAbstraction,
|
|
|
|
I18nServiceAbstraction,
|
|
|
|
EventLoggingServiceAbstraction,
|
|
|
|
AuthServiceAbstraction,
|
|
|
|
StateServiceAbstraction,
|
|
|
|
PlatformUtilsServiceAbstraction,
|
|
|
|
CryptoServiceAbstraction,
|
|
|
|
],
|
|
|
|
multi: true,
|
|
|
|
},
|
2018-07-05 21:27:23 +02:00
|
|
|
OrganizationGuardService,
|
|
|
|
OrganizationTypeGuardService,
|
2018-06-10 04:40:53 +02:00
|
|
|
RouterService,
|
2018-07-07 05:08:10 +02:00
|
|
|
EventService,
|
2021-08-25 16:10:17 +02:00
|
|
|
PolicyListService,
|
2021-12-03 03:32:58 +01:00
|
|
|
{
|
|
|
|
provide: I18nServiceAbstraction,
|
|
|
|
useFactory: (window: Window) => new I18nService(window.navigator.language, "locales"),
|
|
|
|
deps: ["WINDOW"],
|
|
|
|
},
|
|
|
|
{ provide: StorageServiceAbstraction, useClass: HtmlStorageService },
|
|
|
|
{ provide: "SECURE_STORAGE", useClass: MemoryStorageService },
|
|
|
|
{
|
|
|
|
provide: PlatformUtilsServiceAbstraction,
|
|
|
|
useFactory: (
|
|
|
|
i18nService: I18nServiceAbstraction,
|
|
|
|
messagingService: MessagingServiceAbstraction,
|
2021-12-14 17:10:26 +01:00
|
|
|
logService: LogService,
|
|
|
|
stateService: StateServiceAbstraction
|
|
|
|
) => new WebPlatformUtilsService(i18nService, messagingService, logService, stateService),
|
2021-12-03 03:32:58 +01:00
|
|
|
deps: [
|
|
|
|
I18nServiceAbstraction,
|
|
|
|
MessagingServiceAbstraction,
|
|
|
|
LogService,
|
2021-12-14 17:10:26 +01:00
|
|
|
StateServiceAbstraction,
|
2021-12-03 03:32:58 +01:00
|
|
|
],
|
|
|
|
},
|
|
|
|
{ provide: MessagingServiceAbstraction, useClass: BroadcasterMessagingService },
|
2021-08-27 14:50:58 +02:00
|
|
|
{ provide: ModalServiceAbstraction, useClass: ModalService },
|
2018-06-05 21:02:53 +02:00
|
|
|
{
|
2021-12-03 03:32:58 +01:00
|
|
|
provide: ImportServiceAbstraction,
|
|
|
|
useClass: ImportService,
|
|
|
|
deps: [
|
|
|
|
CipherServiceAbstraction,
|
|
|
|
FolderServiceAbstraction,
|
|
|
|
ApiServiceAbstraction,
|
|
|
|
I18nServiceAbstraction,
|
|
|
|
CollectionServiceAbstraction,
|
|
|
|
PlatformUtilsServiceAbstraction,
|
|
|
|
CryptoServiceAbstraction,
|
|
|
|
],
|
2018-06-05 21:02:53 +02:00
|
|
|
},
|
2018-07-24 03:47:08 +02:00
|
|
|
{
|
2021-12-03 03:32:58 +01:00
|
|
|
provide: CryptoServiceAbstraction,
|
2021-12-14 17:10:26 +01:00
|
|
|
useClass: CryptoService,
|
2021-12-03 03:32:58 +01:00
|
|
|
deps: [
|
|
|
|
CryptoFunctionServiceAbstraction,
|
|
|
|
PlatformUtilsServiceAbstraction,
|
|
|
|
LogService,
|
2021-12-14 17:10:26 +01:00
|
|
|
StateServiceAbstraction,
|
2021-12-03 03:32:58 +01:00
|
|
|
],
|
2018-07-24 03:47:08 +02:00
|
|
|
},
|
2018-06-05 21:02:53 +02:00
|
|
|
],
|
|
|
|
})
|
|
|
|
export class ServicesModule {}
|