app.module.ts 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. import 'focus-visible'
  2. import { tap } from 'rxjs/operators'
  3. import { environment } from 'src/environments/environment'
  4. import { APP_BASE_HREF, registerLocaleData } from '@angular/common'
  5. import { APP_INITIALIZER, NgModule } from '@angular/core'
  6. import { BrowserModule } from '@angular/platform-browser'
  7. import { ServiceWorkerModule } from '@angular/service-worker'
  8. import localeOc from '@app/helpers/locales/oc'
  9. import { AppRoutingModule } from './app-routing.module'
  10. import { AppComponent } from './app.component'
  11. import { CoreModule, PluginService, ServerService } from './core'
  12. import { EmptyComponent } from './empty.component'
  13. import { HeaderComponent, SearchTypeaheadComponent, SuggestionComponent } from './header'
  14. import { HighlightPipe } from './header/highlight.pipe'
  15. import { LanguageChooserComponent, MenuComponent, NotificationComponent } from './menu'
  16. import { ConfirmComponent } from './modal/confirm.component'
  17. import { CustomModalComponent } from './modal/custom-modal.component'
  18. import { InstanceConfigWarningModalComponent } from './modal/instance-config-warning-modal.component'
  19. import { QuickSettingsModalComponent } from './modal/quick-settings-modal.component'
  20. import { AdminWelcomeModalComponent } from './modal/admin-welcome-modal.component'
  21. import { AccountSetupWarningModalComponent } from './modal/account-setup-warning-modal.component'
  22. import { SharedActorImageModule } from './shared/shared-actor-image/shared-actor-image.module'
  23. import { SharedFormModule } from './shared/shared-forms'
  24. import { SharedGlobalIconModule } from './shared/shared-icons'
  25. import { SharedInstanceModule } from './shared/shared-instance'
  26. import { SharedMainModule } from './shared/shared-main'
  27. import { SharedUserInterfaceSettingsModule } from './shared/shared-user-settings'
  28. registerLocaleData(localeOc, 'oc')
  29. export function loadConfigFactory (server: ServerService, pluginService: PluginService) {
  30. return () => {
  31. const result = server.loadHTMLConfig()
  32. if (result) return result.pipe(tap(() => pluginService.initializePlugins()))
  33. return pluginService.initializePlugins()
  34. }
  35. }
  36. @NgModule({
  37. bootstrap: [ AppComponent ],
  38. declarations: [
  39. AppComponent,
  40. EmptyComponent,
  41. MenuComponent,
  42. LanguageChooserComponent,
  43. QuickSettingsModalComponent,
  44. NotificationComponent,
  45. HeaderComponent,
  46. SearchTypeaheadComponent,
  47. SuggestionComponent,
  48. HighlightPipe,
  49. AccountSetupWarningModalComponent,
  50. CustomModalComponent,
  51. AdminWelcomeModalComponent,
  52. InstanceConfigWarningModalComponent,
  53. ConfirmComponent
  54. ],
  55. imports: [
  56. BrowserModule,
  57. ServiceWorkerModule.register('ngsw-worker.js', { enabled: environment.production }),
  58. CoreModule,
  59. SharedMainModule,
  60. SharedFormModule,
  61. SharedUserInterfaceSettingsModule,
  62. SharedGlobalIconModule,
  63. SharedInstanceModule,
  64. SharedActorImageModule,
  65. AppRoutingModule // Put it after all the module because it has the 404 route
  66. ],
  67. providers: [
  68. {
  69. provide: APP_BASE_HREF,
  70. useValue: '/'
  71. },
  72. {
  73. provide: APP_INITIALIZER,
  74. useFactory: loadConfigFactory,
  75. deps: [ ServerService, PluginService ],
  76. multi: true
  77. }
  78. ]
  79. })
  80. export class AppModule {}