X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=client%2Fsrc%2Fapp%2Fapp.module.ts;h=7e4fac730fee05aec961e4d85a3e8a835fe620c5;hb=52798aa5f277492d4dd2482bca9396d2e982fa19;hp=9698de275bc585b41ef7d50406a0d2208c480fae;hpb=f0b56fdd0ce063315dffdfb718204564834f7135;p=github%2FChocobozzz%2FPeerTube.git diff --git a/client/src/app/app.module.ts b/client/src/app/app.module.ts index 9698de275..7e4fac730 100644 --- a/client/src/app/app.module.ts +++ b/client/src/app/app.module.ts @@ -1,23 +1,25 @@ import 'focus-visible' +import { tap } from 'rxjs/operators' +import { environment } from 'src/environments/environment' import { APP_BASE_HREF, registerLocaleData } from '@angular/common' -import { LOCALE_ID, NgModule, TRANSLATIONS, TRANSLATIONS_FORMAT } from '@angular/core' +import { APP_INITIALIZER, NgModule } from '@angular/core' import { BrowserModule } from '@angular/platform-browser' -import { ServerService } from '@app/core' +import { ServiceWorkerModule } from '@angular/service-worker' import localeOc from '@app/helpers/locales/oc' -import { MetaLoader, MetaModule, MetaStaticLoader, PageTitlePositioning } from '@ngx-meta/core' -import { buildFileLocale, getCompleteLocale, isDefaultLocale } from '@shared/models' import { AppRoutingModule } from './app-routing.module' import { AppComponent } from './app.component' -import { CoreModule } from './core' +import { CoreModule, PluginService, RedirectService, ServerService } from './core' import { EmptyComponent } from './empty.component' import { HeaderComponent, SearchTypeaheadComponent, SuggestionComponent } from './header' import { HighlightPipe } from './header/highlight.pipe' -import { AvatarNotificationComponent, LanguageChooserComponent, MenuComponent } from './menu' +import { LanguageChooserComponent, MenuComponent, NotificationComponent } from './menu' import { ConfirmComponent } from './modal/confirm.component' import { CustomModalComponent } from './modal/custom-modal.component' import { InstanceConfigWarningModalComponent } from './modal/instance-config-warning-modal.component' import { QuickSettingsModalComponent } from './modal/quick-settings-modal.component' -import { WelcomeModalComponent } from './modal/welcome-modal.component' +import { AdminWelcomeModalComponent } from './modal/admin-welcome-modal.component' +import { AccountSetupWarningModalComponent } from './modal/account-setup-warning-modal.component' +import { SharedActorImageModule } from './shared/shared-actor-image/shared-actor-image.module' import { SharedFormModule } from './shared/shared-forms' import { SharedGlobalIconModule } from './shared/shared-icons' import { SharedInstanceModule } from './shared/shared-instance' @@ -26,6 +28,20 @@ import { SharedUserInterfaceSettingsModule } from './shared/shared-user-settings registerLocaleData(localeOc, 'oc') +export function loadConfigFactory (server: ServerService, pluginService: PluginService, redirectService: RedirectService) { + const initializeServices = () => { + redirectService.init() + pluginService.initializePlugins() + } + + return () => { + const result = server.loadHTMLConfig() + if (result) return result.pipe(tap(() => initializeServices())) + + initializeServices() + } +} + @NgModule({ bootstrap: [ AppComponent ], @@ -36,20 +52,22 @@ registerLocaleData(localeOc, 'oc') MenuComponent, LanguageChooserComponent, QuickSettingsModalComponent, - AvatarNotificationComponent, + NotificationComponent, HeaderComponent, SearchTypeaheadComponent, SuggestionComponent, HighlightPipe, + AccountSetupWarningModalComponent, CustomModalComponent, - WelcomeModalComponent, + AdminWelcomeModalComponent, InstanceConfigWarningModalComponent, ConfirmComponent ], imports: [ BrowserModule, + ServiceWorkerModule.register('ngsw-worker.js', { enabled: environment.production }), CoreModule, SharedMainModule, @@ -57,22 +75,7 @@ registerLocaleData(localeOc, 'oc') SharedUserInterfaceSettingsModule, SharedGlobalIconModule, SharedInstanceModule, - - MetaModule.forRoot({ - provide: MetaLoader, - useFactory: (serverService: ServerService) => { - return new MetaStaticLoader({ - pageTitlePositioning: PageTitlePositioning.PrependPageTitle, - pageTitleSeparator: ' - ', - get applicationName () { return serverService.getTmpConfig().instance.name }, - defaults: { - get title () { return serverService.getTmpConfig().instance.name }, - get description () { return serverService.getTmpConfig().instance.shortDescription } - } - }) - }, - deps: [ ServerService ] - }), + SharedActorImageModule, AppRoutingModule // Put it after all the module because it has the 404 route ], @@ -82,20 +85,12 @@ registerLocaleData(localeOc, 'oc') provide: APP_BASE_HREF, useValue: '/' }, - { - provide: TRANSLATIONS, - useFactory: (locale: string) => { - // Default locale, nothing to translate - const completeLocale = getCompleteLocale(locale) - if (isDefaultLocale(completeLocale)) return '' - - const fileLocale = buildFileLocale(locale) - return require(`raw-loader!../locale/angular.${fileLocale}.xlf`).default - }, - deps: [ LOCALE_ID ] - }, - { provide: TRANSLATIONS_FORMAT, useValue: 'xlf' } + provide: APP_INITIALIZER, + useFactory: loadConfigFactory, + deps: [ ServerService, PluginService, RedirectService ], + multi: true + } ] }) export class AppModule {}