]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - client/src/app/app.module.ts
Speed up plugins loading
[github/Chocobozzz/PeerTube.git] / client / src / app / app.module.ts
CommitLineData
67ed6552 1import 'focus-visible'
fc21ef5c 2import { tap } from 'rxjs/operators'
1d22d251 3import { environment } from 'src/environments/environment'
67ed6552 4import { APP_BASE_HREF, registerLocaleData } from '@angular/common'
8e08d415 5import { APP_INITIALIZER, NgModule } from '@angular/core'
df98563e 6import { BrowserModule } from '@angular/platform-browser'
1d22d251 7import { ServiceWorkerModule } from '@angular/service-worker'
67ed6552 8import localeOc from '@app/helpers/locales/oc'
df98563e
C
9import { AppRoutingModule } from './app-routing.module'
10import { AppComponent } from './app.component'
fc21ef5c 11import { CoreModule, PluginService, ServerService } from './core'
f0b56fdd 12import { EmptyComponent } from './empty.component'
5fb2e288 13import { HeaderComponent, SearchTypeaheadComponent, SuggestionComponent } from './header'
1942f11d 14import { HighlightPipe } from './header/highlight.pipe'
1d22d251 15import { LanguageChooserComponent, MenuComponent, NotificationComponent } from './menu'
67ed6552
C
16import { ConfirmComponent } from './modal/confirm.component'
17import { CustomModalComponent } from './modal/custom-modal.component'
18import { InstanceConfigWarningModalComponent } from './modal/instance-config-warning-modal.component'
19import { QuickSettingsModalComponent } from './modal/quick-settings-modal.component'
20import { WelcomeModalComponent } from './modal/welcome-modal.component'
0f01a8ba 21import { SharedActorImageModule } from './shared/shared-actor-image/shared-actor-image.module'
67ed6552
C
22import { SharedFormModule } from './shared/shared-forms'
23import { SharedGlobalIconModule } from './shared/shared-icons'
24import { SharedInstanceModule } from './shared/shared-instance'
25import { SharedMainModule } from './shared/shared-main'
26import { SharedUserInterfaceSettingsModule } from './shared/shared-user-settings'
2a39506c
C
27
28registerLocaleData(localeOc, 'oc')
693b1aba 29
fc21ef5c
C
30export function loadConfigFactory (server: ServerService, pluginService: PluginService) {
31 return () => {
32 const result = server.loadHTMLConfig()
33
34 if (result) return result.pipe(tap(() => pluginService.initializePlugins()))
35
36 return pluginService.initializePlugins()
37 }
8e08d415
C
38}
39
ab32b0fc
C
40@NgModule({
41 bootstrap: [ AppComponent ],
67ed6552 42
ab32b0fc 43 declarations: [
b33f657c 44 AppComponent,
f0b56fdd 45 EmptyComponent,
b33f657c
C
46
47 MenuComponent,
8afc19a6 48 LanguageChooserComponent,
d3217560 49 QuickSettingsModalComponent,
51a83970 50 NotificationComponent,
43d0ea7f 51 HeaderComponent,
f409f0c3 52 SearchTypeaheadComponent,
6af662a5 53 SuggestionComponent,
1942f11d 54 HighlightPipe,
43d0ea7f 55
437e8e06 56 CustomModalComponent,
43d0ea7f 57 WelcomeModalComponent,
67ed6552
C
58 InstanceConfigWarningModalComponent,
59 ConfirmComponent
ab32b0fc 60 ],
67ed6552 61
693b1aba 62 imports: [
ab32b0fc 63 BrowserModule,
1d22d251 64 ServiceWorkerModule.register('ngsw-worker.js', { enabled: environment.production }),
23bcf666 65
693b1aba 66 CoreModule,
67ed6552
C
67 SharedMainModule,
68 SharedFormModule,
69 SharedUserInterfaceSettingsModule,
70 SharedGlobalIconModule,
71 SharedInstanceModule,
746018f6 72 SharedActorImageModule,
693b1aba 73
a9614776 74 AppRoutingModule // Put it after all the module because it has the 404 route
ab32b0fc 75 ],
361dcebc 76
989e526a 77 providers: [
8cc56c7f
C
78 {
79 provide: APP_BASE_HREF,
80 useValue: '/'
8e08d415
C
81 },
82 {
83 provide: APP_INITIALIZER,
84 useFactory: loadConfigFactory,
fc21ef5c 85 deps: [ ServerService, PluginService ],
8e08d415 86 multi: true
fc21ef5c 87 }
989e526a 88 ]
ab32b0fc 89})
63c4db6d 90export class AppModule {}