mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-13 13:03:04 +00:00
Merge branch 'master' into improve-support-for-hal-links
This commit is contained in:
74
src/modules/app/browser-app.module.ts
Normal file
74
src/modules/app/browser-app.module.ts
Normal file
@@ -0,0 +1,74 @@
|
||||
import { HttpClient, HttpClientModule } from '@angular/common/http';
|
||||
import { APP_INITIALIZER, NgModule } from '@angular/core';
|
||||
import { BrowserModule } from '@angular/platform-browser';
|
||||
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
|
||||
import { RouterModule } from '@angular/router';
|
||||
|
||||
import { IdlePreload, IdlePreloadModule } from '@angularclass/idle-preload';
|
||||
|
||||
import { EffectsModule } from '@ngrx/effects';
|
||||
|
||||
import { TranslateLoader, TranslateModule } from '@ngx-translate/core';
|
||||
import { TranslateHttpLoader } from '@ngx-translate/http-loader';
|
||||
|
||||
import { AppComponent } from '../../app/app.component';
|
||||
|
||||
import { AppModule } from '../../app/app.module';
|
||||
import { BrowserTransferStateModule } from '../transfer-state/browser-transfer-state.module';
|
||||
|
||||
import { TransferState } from '../transfer-state/transfer-state';
|
||||
import { BrowserTransferStoreEffects } from '../transfer-store/browser-transfer-store.effects';
|
||||
import { BrowserTransferStoreModule } from '../transfer-store/browser-transfer-store.module';
|
||||
|
||||
export function init(cache: TransferState) {
|
||||
return () => {
|
||||
cache.initialize();
|
||||
};
|
||||
}
|
||||
|
||||
export function createTranslateLoader(http: HttpClient) {
|
||||
return new TranslateHttpLoader(http, 'assets/i18n/', '.json');
|
||||
}
|
||||
|
||||
@NgModule({
|
||||
bootstrap: [AppComponent],
|
||||
imports: [
|
||||
BrowserModule.withServerTransition({
|
||||
appId: 'ds-app-id'
|
||||
}),
|
||||
HttpClientModule,
|
||||
// forRoot ensures the providers are only created once
|
||||
IdlePreloadModule.forRoot(),
|
||||
RouterModule.forRoot([], {
|
||||
// enableTracing: true,
|
||||
useHash: false,
|
||||
preloadingStrategy:
|
||||
IdlePreload
|
||||
}),
|
||||
BrowserAnimationsModule,
|
||||
BrowserTransferStateModule,
|
||||
BrowserTransferStoreModule,
|
||||
TranslateModule.forRoot({
|
||||
loader: {
|
||||
provide: TranslateLoader,
|
||||
useFactory: (createTranslateLoader),
|
||||
deps: [HttpClient]
|
||||
}
|
||||
}),
|
||||
EffectsModule.forRoot([BrowserTransferStoreEffects]),
|
||||
AppModule
|
||||
],
|
||||
providers: [
|
||||
{
|
||||
provide: APP_INITIALIZER,
|
||||
multi: true,
|
||||
useFactory: init,
|
||||
deps: [
|
||||
TransferState
|
||||
]
|
||||
}
|
||||
]
|
||||
})
|
||||
export class BrowserAppModule {
|
||||
|
||||
}
|
88
src/modules/app/server-app.module.ts
Normal file
88
src/modules/app/server-app.module.ts
Normal file
@@ -0,0 +1,88 @@
|
||||
import 'rxjs/add/operator/filter';
|
||||
import 'rxjs/add/operator/first';
|
||||
|
||||
import { ApplicationRef, NgModule, APP_BOOTSTRAP_LISTENER } from '@angular/core';
|
||||
import { RouterModule } from '@angular/router';
|
||||
import { ServerModule } from '@angular/platform-server';
|
||||
import { BrowserModule } from '@angular/platform-browser';
|
||||
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
|
||||
|
||||
import { Request } from 'express';
|
||||
|
||||
import { REQUEST } from '@nguniversal/express-engine/tokens';
|
||||
|
||||
import { TranslateModule, TranslateLoader } from '@ngx-translate/core';
|
||||
|
||||
import { Store } from '@ngrx/store';
|
||||
import { EffectsModule } from '@ngrx/effects';
|
||||
|
||||
import { TranslateUniversalLoader } from '../translate-universal-loader';
|
||||
|
||||
import { ServerTransferStateModule } from '../transfer-state/server-transfer-state.module';
|
||||
import { TransferState } from '../transfer-state/transfer-state';
|
||||
|
||||
import { ServerTransferStoreEffects } from '../transfer-store/server-transfer-store.effects';
|
||||
import { ServerTransferStoreModule } from '../transfer-store/server-transfer-store.module';
|
||||
|
||||
import { AppState } from '../../app/app.reducer';
|
||||
|
||||
import { AppModule } from '../../app/app.module';
|
||||
|
||||
import { AppComponent } from '../../app/app.component';
|
||||
|
||||
import { GLOBAL_CONFIG, GlobalConfig } from '../../config';
|
||||
|
||||
export function boot(cache: TransferState, appRef: ApplicationRef, store: Store<AppState>, request: Request, config: GlobalConfig) {
|
||||
// authentication mechanism goes here
|
||||
return () => {
|
||||
appRef.isStable.filter((stable: boolean) => stable).first().subscribe(() => {
|
||||
cache.inject();
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
export function createTranslateLoader() {
|
||||
return new TranslateUniversalLoader('dist/assets/i18n/', '.json');
|
||||
}
|
||||
|
||||
@NgModule({
|
||||
bootstrap: [AppComponent],
|
||||
imports: [
|
||||
BrowserModule.withServerTransition({
|
||||
appId: 'ds-app-id'
|
||||
}),
|
||||
RouterModule.forRoot([], {
|
||||
useHash: false
|
||||
}),
|
||||
NoopAnimationsModule,
|
||||
ServerTransferStateModule,
|
||||
ServerTransferStoreModule,
|
||||
TranslateModule.forRoot({
|
||||
loader: {
|
||||
provide: TranslateLoader,
|
||||
useFactory: (createTranslateLoader),
|
||||
deps: []
|
||||
}
|
||||
}),
|
||||
EffectsModule.forRoot([ServerTransferStoreEffects]),
|
||||
ServerModule,
|
||||
AppModule
|
||||
],
|
||||
providers: [
|
||||
{
|
||||
provide: APP_BOOTSTRAP_LISTENER,
|
||||
multi: true,
|
||||
useFactory: boot,
|
||||
deps: [
|
||||
TransferState,
|
||||
ApplicationRef,
|
||||
Store,
|
||||
REQUEST,
|
||||
GLOBAL_CONFIG
|
||||
]
|
||||
}
|
||||
]
|
||||
})
|
||||
export class ServerAppModule {
|
||||
|
||||
}
|
Reference in New Issue
Block a user