226 lines
9.2 KiB
TypeScript
226 lines
9.2 KiB
TypeScript
import { BrowserModule } from '@angular/platform-browser';
|
|
import { ENVIRONMENT_INITIALIZER, ErrorHandler, inject, NgModule } from '@angular/core';
|
|
import { AppComponent } from './app.component';
|
|
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
|
|
import { HTTP_INTERCEPTORS } from '@angular/common/http';
|
|
import { BaseScreenComponent } from '@components/base-screen/base-screen.component';
|
|
import { MissingTranslationHandler } from '@ngx-translate/core';
|
|
import {
|
|
CachingModule,
|
|
CircleButtonComponent,
|
|
CommonUiModule,
|
|
EmptyStateComponent,
|
|
HelpModeKey,
|
|
HiddenActionDirective,
|
|
IconButtonComponent,
|
|
InputWithActionComponent,
|
|
IqserAllowDirective,
|
|
IqserDenyDirective,
|
|
IqserHelpModeModule,
|
|
IqserListingModule,
|
|
IqserLoadingModule,
|
|
IqserTranslateModule,
|
|
IqserUsersModule,
|
|
LanguageService,
|
|
LogoComponent,
|
|
MAX_RETRIES_ON_SERVER_ERROR,
|
|
RoundCheckboxComponent,
|
|
SERVER_ERROR_SKIP_PATHS,
|
|
ServerErrorInterceptor,
|
|
SkeletonComponent,
|
|
StopPropagationDirective,
|
|
TenantPipe,
|
|
TenantsModule,
|
|
ToastComponent,
|
|
} from '@iqser/common-ui';
|
|
import { ToastrModule } from 'ngx-toastr';
|
|
import { ServiceWorkerModule } from '@angular/service-worker';
|
|
import { environment } from '@environments/environment';
|
|
import { AuthErrorComponent } from '@components/auth-error/auth-error.component';
|
|
import { NotificationsComponent } from '@components/notifications/notifications.component';
|
|
import { DashboardSkeletonComponent } from '@components/skeleton/dashboard-skeleton/dashboard-skeleton.component';
|
|
import { DownloadsListScreenComponent } from '@components/downloads-list-screen/downloads-list-screen.component';
|
|
import { AppRoutingModule } from './app-routing.module';
|
|
import { SharedModule } from '@shared/shared.module';
|
|
import { FileUploadDownloadModule } from '@upload-download/file-upload-download.module';
|
|
import { DatePipe as BaseDatePipe } from '@angular/common';
|
|
import { ACTIVE_DOSSIERS_SERVICE, ARCHIVED_DOSSIERS_SERVICE } from './tokens';
|
|
import { MonacoEditorModule } from '@materia-ui/ngx-monaco-editor';
|
|
import { GlobalErrorHandler } from '@services/global-error-handler.service';
|
|
import { REDMissingTranslationHandler } from '@utils/missing-translations-handler';
|
|
import { ConfigService } from '@services/config.service';
|
|
import { SpotlightSearchComponent } from '@components/spotlight-search/spotlight-search.component';
|
|
import { DatePipe } from '@shared/pipes/date.pipe';
|
|
import * as helpModeKeys from '../assets/help-mode/help-mode-keys.json';
|
|
import { BreadcrumbsComponent } from '@components/breadcrumbs/breadcrumbs.component';
|
|
import { UserPreferenceService } from '@users/user-preference.service';
|
|
import { UserService } from '@users/user.service';
|
|
import { ActiveDossiersService } from '@services/dossiers/active-dossiers.service';
|
|
import { ArchivedDossiersService } from '@services/dossiers/archived-dossiers.service';
|
|
import { MAT_TOOLTIP_DEFAULT_OPTIONS } from '@angular/material/tooltip';
|
|
import { LoggerModule, NgxLoggerLevel, TOKEN_LOGGER_CONFIG, TOKEN_LOGGER_RULES_SERVICE } from 'ngx-logger';
|
|
import { LoggerRulesService } from '@services/logger-rules.service';
|
|
import { AppConfig, ILoggerConfig } from '@red/domain';
|
|
import { PdfViewerModule } from './modules/pdf-viewer/pdf-viewer.module';
|
|
import { UI_CACHES } from '@utils/constants';
|
|
import { RedRoleGuard } from '@users/red-role.guard';
|
|
import { SkeletonTopBarComponent } from '@components/skeleton/skeleton-top-bar/skeleton-top-bar.component';
|
|
import { DossierSkeletonComponent } from '@components/skeleton/dossier-skeleton/dossier-skeleton.component';
|
|
import { SkeletonStatsComponent } from '@components/skeleton/skeleton-stats/skeleton-stats.component';
|
|
import { UserMenuComponent } from '@components/user-menu/user-menu.component';
|
|
import { TenantsMenuComponent } from '@components/tenants-menu/tenants-menu.component';
|
|
import { MatDividerModule } from '@angular/material/divider';
|
|
|
|
export const appModuleFactory = (config: AppConfig) => {
|
|
@NgModule({
|
|
declarations: [
|
|
AppComponent,
|
|
AuthErrorComponent,
|
|
NotificationsComponent,
|
|
SpotlightSearchComponent,
|
|
BreadcrumbsComponent,
|
|
DashboardSkeletonComponent,
|
|
DossierSkeletonComponent,
|
|
SkeletonTopBarComponent,
|
|
SkeletonStatsComponent,
|
|
BaseScreenComponent,
|
|
UserMenuComponent,
|
|
TenantsMenuComponent,
|
|
DownloadsListScreenComponent,
|
|
],
|
|
imports: [
|
|
BrowserModule,
|
|
BrowserAnimationsModule,
|
|
SharedModule,
|
|
FileUploadDownloadModule,
|
|
AppRoutingModule,
|
|
MonacoEditorModule,
|
|
CommonUiModule.forRoot({
|
|
existingUserPreferenceService: UserPreferenceService,
|
|
configService: ConfigService,
|
|
configServiceFactory: () => new ConfigService(config),
|
|
}),
|
|
IqserUsersModule.forRoot({
|
|
existingUserService: UserService,
|
|
existingRoleGuard: RedRoleGuard,
|
|
}),
|
|
CachingModule.forRoot(UI_CACHES),
|
|
IqserHelpModeModule.forRoot(helpModeKeys as HelpModeKey[]),
|
|
PdfViewerModule,
|
|
ToastrModule.forRoot({
|
|
closeButton: true,
|
|
enableHtml: true,
|
|
toastComponent: ToastComponent,
|
|
preventDuplicates: true,
|
|
resetTimeoutOnDuplicate: true,
|
|
}),
|
|
TenantsModule.forRoot(),
|
|
IqserTranslateModule.forRoot({ pathPrefix: config.BASE_TRANSLATIONS_DIRECTORY || '/assets/i18n/redact/' }),
|
|
IqserLoadingModule.forRoot(),
|
|
ServiceWorkerModule.register('ngsw-worker.js', { enabled: environment.production }),
|
|
LoggerModule.forRoot(undefined, {
|
|
ruleProvider: {
|
|
provide: TOKEN_LOGGER_RULES_SERVICE,
|
|
useClass: LoggerRulesService,
|
|
},
|
|
configProvider: {
|
|
provide: TOKEN_LOGGER_CONFIG,
|
|
useValue: {
|
|
level: environment.production ? NgxLoggerLevel.ERROR : NgxLoggerLevel.DEBUG,
|
|
enableSourceMaps: false,
|
|
timestampFormat: 'mm:ss:SSS',
|
|
disableFileDetails: true,
|
|
features: {
|
|
ANNOTATIONS: {
|
|
color: 'aqua',
|
|
enabled: false,
|
|
level: NgxLoggerLevel.DEBUG,
|
|
},
|
|
FILTERS: {
|
|
enabled: false,
|
|
},
|
|
PDF: {
|
|
enabled: false,
|
|
},
|
|
FILE: {
|
|
enabled: false,
|
|
},
|
|
CHANGES: {
|
|
enabled: false,
|
|
},
|
|
STATS: {
|
|
enabled: false,
|
|
},
|
|
},
|
|
} as ILoggerConfig,
|
|
},
|
|
}),
|
|
CircleButtonComponent,
|
|
EmptyStateComponent,
|
|
SkeletonComponent,
|
|
LogoComponent,
|
|
HiddenActionDirective,
|
|
StopPropagationDirective,
|
|
InputWithActionComponent,
|
|
RoundCheckboxComponent,
|
|
IqserAllowDirective,
|
|
IqserDenyDirective,
|
|
IqserListingModule,
|
|
IconButtonComponent,
|
|
TenantPipe,
|
|
MatDividerModule,
|
|
],
|
|
providers: [
|
|
{
|
|
provide: HTTP_INTERCEPTORS,
|
|
multi: true,
|
|
useClass: ServerErrorInterceptor,
|
|
},
|
|
{
|
|
provide: ErrorHandler,
|
|
useClass: GlobalErrorHandler,
|
|
},
|
|
{
|
|
provide: ENVIRONMENT_INITIALIZER,
|
|
multi: true,
|
|
useValue: async () => {
|
|
const languageService = inject(LanguageService);
|
|
return languageService.setInitialLanguage();
|
|
},
|
|
},
|
|
{
|
|
provide: MissingTranslationHandler,
|
|
useClass: REDMissingTranslationHandler,
|
|
},
|
|
{
|
|
provide: MAX_RETRIES_ON_SERVER_ERROR,
|
|
useFactory: () => config.MAX_RETRIES_ON_SERVER_ERROR,
|
|
},
|
|
{
|
|
provide: SERVER_ERROR_SKIP_PATHS,
|
|
useValue: ['redaction-gateway-v1/license'],
|
|
},
|
|
{
|
|
provide: ACTIVE_DOSSIERS_SERVICE,
|
|
useExisting: ActiveDossiersService,
|
|
},
|
|
{
|
|
provide: ARCHIVED_DOSSIERS_SERVICE,
|
|
useExisting: ArchivedDossiersService,
|
|
},
|
|
{
|
|
provide: MAT_TOOLTIP_DEFAULT_OPTIONS,
|
|
useValue: {
|
|
disableTooltipInteractivity: true,
|
|
},
|
|
},
|
|
DatePipe,
|
|
BaseDatePipe,
|
|
],
|
|
bootstrap: [AppComponent],
|
|
})
|
|
class AppModule {}
|
|
|
|
return AppModule;
|
|
};
|