From 4fbceab1b941f491c1d88e148a72f5608def00dc Mon Sep 17 00:00:00 2001 From: Art Lowel Date: Thu, 1 Feb 2018 13:17:59 +0100 Subject: [PATCH] Switched to angular 5's built-in transfer state api --- src/app/app.component.spec.ts | 5 -- src/app/app.component.ts | 12 --- src/app/app.module.ts | 39 ++++----- src/main.browser.ts | 62 +++++++-------- src/modules/app/browser-app.module.ts | 43 +++------- src/modules/app/server-app.module.ts | 79 +++++-------------- .../browser-transfer-state.module.ts | 12 --- .../transfer-state/browser-transfer-state.ts | 47 ----------- .../dspace-browser-transfer-state.module.ts | 16 ++++ .../dspace-browser-transfer-state.service.ts | 12 +++ .../dspace-server-transfer-state.module.ts | 16 ++++ .../dspace-server-transfer-state.service.ts | 16 ++++ .../dspace-transfer-state.service.ts | 18 +++++ .../server-transfer-state.module.ts | 12 --- .../transfer-state/server-transfer-state.ts | 37 --------- src/modules/transfer-state/transfer-state.ts | 40 ---------- .../browser-transfer-store.effects.ts | 28 ------- .../browser-transfer-store.module.ts | 12 --- .../server-transfer-store.effects.ts | 36 --------- .../server-transfer-store.module.ts | 12 --- .../transfer-store/transfer-store.effects.ts | 3 - 21 files changed, 159 insertions(+), 398 deletions(-) delete mode 100644 src/modules/transfer-state/browser-transfer-state.module.ts delete mode 100644 src/modules/transfer-state/browser-transfer-state.ts create mode 100644 src/modules/transfer-state/dspace-browser-transfer-state.module.ts create mode 100644 src/modules/transfer-state/dspace-browser-transfer-state.service.ts create mode 100644 src/modules/transfer-state/dspace-server-transfer-state.module.ts create mode 100644 src/modules/transfer-state/dspace-server-transfer-state.service.ts create mode 100644 src/modules/transfer-state/dspace-transfer-state.service.ts delete mode 100644 src/modules/transfer-state/server-transfer-state.module.ts delete mode 100644 src/modules/transfer-state/server-transfer-state.ts delete mode 100644 src/modules/transfer-state/transfer-state.ts delete mode 100644 src/modules/transfer-store/browser-transfer-store.effects.ts delete mode 100644 src/modules/transfer-store/browser-transfer-store.module.ts delete mode 100644 src/modules/transfer-store/server-transfer-store.effects.ts delete mode 100644 src/modules/transfer-store/server-transfer-store.module.ts delete mode 100644 src/modules/transfer-store/transfer-store.effects.ts diff --git a/src/app/app.component.spec.ts b/src/app/app.component.spec.ts index 0854c5756e..5c77b34549 100644 --- a/src/app/app.component.spec.ts +++ b/src/app/app.component.spec.ts @@ -23,9 +23,6 @@ import { AppComponent } from './app.component'; import { HostWindowState } from './shared/host-window.reducer'; import { HostWindowResizeAction } from './shared/host-window.actions'; -import { BrowserTransferStateModule } from '../modules/transfer-state/browser-transfer-state.module'; -import { BrowserTransferStoreModule } from '../modules/transfer-store/browser-transfer-store.module'; - import { MetadataService } from './core/metadata/metadata.service'; import { GLOBAL_CONFIG, ENV_CONFIG } from '../config'; @@ -53,8 +50,6 @@ describe('App component', () => { useClass: MockTranslateLoader } }), - BrowserTransferStateModule, - BrowserTransferStoreModule ], declarations: [AppComponent], // declare the test component providers: [ diff --git a/src/app/app.component.ts b/src/app/app.component.ts index f7e30674b8..25bdde2d23 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -13,7 +13,6 @@ import { TranslateService } from '@ngx-translate/core'; import { GLOBAL_CONFIG, GlobalConfig } from '../config'; -import { TransferState } from '../modules/transfer-state/transfer-state'; import { MetadataService } from './core/metadata/metadata.service'; import { HostWindowResizeAction } from './shared/host-window.actions'; import { HostWindowState } from './shared/host-window.reducer'; @@ -32,7 +31,6 @@ export class AppComponent implements OnInit { @Inject(GLOBAL_CONFIG) public config: GlobalConfig, @Inject(NativeWindowService) private _window: NativeWindowRef, private translate: TranslateService, - private cache: TransferState, private store: Store, private metadata: MetadataService ) { @@ -48,16 +46,6 @@ export class AppComponent implements OnInit { } } - ngAfterViewChecked() { - this.syncCache(); - } - - syncCache() { - this.store.take(1).subscribe((state: HostWindowState) => { - this.cache.set('state', state); - }); - } - ngOnInit() { const env: string = this.config.production ? 'Production' : 'Development'; const color: string = this.config.production ? 'red' : 'green'; diff --git a/src/app/app.module.ts b/src/app/app.module.ts index c2728941d0..d2b0d72b78 100755 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -1,31 +1,32 @@ -import { NgModule } from '@angular/core'; -import { CommonModule, APP_BASE_HREF } from '@angular/common'; +import { APP_BASE_HREF, CommonModule } from '@angular/common'; import { HttpClientModule } from '@angular/common/http'; - -import { EffectsModule } from '@ngrx/effects'; -import { StoreModule, MetaReducer, META_REDUCERS } from '@ngrx/store'; -import { StoreDevtoolsModule } from '@ngrx/store-devtools'; -import { RouterStateSerializer, StoreRouterConnectingModule } from '@ngrx/router-store'; - -import { storeFreeze } from 'ngrx-store-freeze'; - -import { TranslateModule } from '@ngx-translate/core'; +import { NgModule } from '@angular/core'; +import { BrowserTransferStateModule } from '@angular/platform-browser'; import { NgbModule } from '@ng-bootstrap/ng-bootstrap'; -import { appEffects } from './app.effects'; -import { appReducers, AppState } from './app.reducer'; -import { appMetaReducers, debugMetaReducers } from './app.metareducers'; +import { EffectsModule } from '@ngrx/effects'; +import { RouterStateSerializer, StoreRouterConnectingModule } from '@ngrx/router-store'; +import { META_REDUCERS, MetaReducer, StoreModule } from '@ngrx/store'; +import { StoreDevtoolsModule } from '@ngrx/store-devtools'; -import { CoreModule } from './core/core.module'; +import { TranslateModule } from '@ngx-translate/core'; + +import { storeFreeze } from 'ngrx-store-freeze'; + +import { ENV_CONFIG, GLOBAL_CONFIG, GlobalConfig } from '../config'; import { AppRoutingModule } from './app-routing.module'; import { AppComponent } from './app.component'; -import { HeaderComponent } from './header/header.component'; -import { FooterComponent } from './footer/footer.component'; -import { PageNotFoundComponent } from './pagenotfound/pagenotfound.component'; -import { GLOBAL_CONFIG, ENV_CONFIG, GlobalConfig } from '../config'; +import { appEffects } from './app.effects'; +import { appMetaReducers, debugMetaReducers } from './app.metareducers'; +import { appReducers, AppState } from './app.reducer'; + +import { CoreModule } from './core/core.module'; +import { FooterComponent } from './footer/footer.component'; +import { HeaderComponent } from './header/header.component'; +import { PageNotFoundComponent } from './pagenotfound/pagenotfound.component'; import { DSpaceRouterStateSerializer } from './shared/ngrx/dspace-router-state-serializer'; diff --git a/src/main.browser.ts b/src/main.browser.ts index 55e346108f..a2bf836865 100644 --- a/src/main.browser.ts +++ b/src/main.browser.ts @@ -1,31 +1,31 @@ -import 'zone.js/dist/zone'; -import 'reflect-metadata'; - -import { enableProdMode } from '@angular/core'; -import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; -import { bootloader } from '@angularclass/bootloader'; - -import { load as loadWebFont } from 'webfontloader'; - -import { BrowserAppModule } from './modules/app/browser-app.module'; - -import { ENV_CONFIG } from './config'; - -if (ENV_CONFIG.production) { - enableProdMode(); -} - -export function main() { - // Load fonts async - // https://github.com/typekit/webfontloader#configuration - loadWebFont({ - google: { - families: ['Droid Sans'] - } - }); - - return platformBrowserDynamic().bootstrapModule(BrowserAppModule); -} - -// support async tag or hmr -bootloader(main); +import 'zone.js/dist/zone'; +import 'reflect-metadata'; + +import { enableProdMode } from '@angular/core'; +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; +import { bootloader } from '@angularclass/bootloader'; + +import { load as loadWebFont } from 'webfontloader'; + +import { BrowserAppModule } from './modules/app/browser-app.module'; + +import { ENV_CONFIG } from './config'; + +if (ENV_CONFIG.production) { + enableProdMode(); +} + +export function main() { + // Load fonts async + // https://github.com/typekit/webfontloader#configuration + loadWebFont({ + google: { + families: ['Droid Sans'] + } + }); + + return platformBrowserDynamic().bootstrapModule(BrowserAppModule); +} + +// support async tag or hmr +document.addEventListener('DOMContentLoaded', () => bootloader(main)); diff --git a/src/modules/app/browser-app.module.ts b/src/modules/app/browser-app.module.ts index a0c3cf7212..df77dad74f 100644 --- a/src/modules/app/browser-app.module.ts +++ b/src/modules/app/browser-app.module.ts @@ -1,30 +1,19 @@ import { HttpClient, HttpClientModule } from '@angular/common/http'; -import { APP_INITIALIZER, NgModule } from '@angular/core'; +import { 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 'angular-idle-preload'; - -import { EffectsModule } from '@ngrx/effects'; - import { TranslateLoader, TranslateModule } from '@ngx-translate/core'; import { TranslateHttpLoader } from '@ngx-translate/http-loader'; +import { IdlePreload, IdlePreloadModule } from 'angular-idle-preload'; + 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(); - }; -} +import { DSpaceBrowserTransferStateModule } from '../transfer-state/dspace-browser-transfer-state.module'; +import { DSpaceTransferState } from '../transfer-state/dspace-transfer-state.service'; export function createTranslateLoader(http: HttpClient) { return new TranslateHttpLoader(http, 'assets/i18n/', '.json'); @@ -34,7 +23,7 @@ export function createTranslateLoader(http: HttpClient) { bootstrap: [AppComponent], imports: [ BrowserModule.withServerTransition({ - appId: 'ds-app-id' + appId: 'dspace-angular' }), HttpClientModule, // forRoot ensures the providers are only created once @@ -46,8 +35,7 @@ export function createTranslateLoader(http: HttpClient) { IdlePreload }), BrowserAnimationsModule, - BrowserTransferStateModule, - BrowserTransferStoreModule, + DSpaceBrowserTransferStateModule, TranslateModule.forRoot({ loader: { provide: TranslateLoader, @@ -55,20 +43,13 @@ export function createTranslateLoader(http: HttpClient) { deps: [HttpClient] } }), - EffectsModule.forRoot([BrowserTransferStoreEffects]), AppModule ], - providers: [ - { - provide: APP_INITIALIZER, - multi: true, - useFactory: init, - deps: [ - TransferState - ] - } - ] }) export class BrowserAppModule { - + constructor( + private transferState: DSpaceTransferState, + ) { + this.transferState.transfer(); + } } diff --git a/src/modules/app/server-app.module.ts b/src/modules/app/server-app.module.ts index eaac592dff..ff8455cca0 100644 --- a/src/modules/app/server-app.module.ts +++ b/src/modules/app/server-app.module.ts @@ -1,53 +1,20 @@ +import { NgModule } from '@angular/core'; +import { BrowserModule } from '@angular/platform-browser'; +import { NoopAnimationsModule } from '@angular/platform-browser/animations'; +import { ServerModule } from '@angular/platform-server'; +import { RouterModule } from '@angular/router'; + +import { TranslateLoader, TranslateModule } from '@ngx-translate/core'; 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'; +import { AppModule } from '../../app/app.module'; +import { DSpaceServerTransferStateModule } from '../transfer-state/dspace-server-transfer-state.module'; +import { DSpaceTransferState } from '../transfer-state/dspace-transfer-state.service'; -export function boot(cache: TransferState, appRef: ApplicationRef, store: Store, request: Request, config: GlobalConfig) { - // authentication mechanism goes here - return () => { - appRef.isStable.filter((stable: boolean) => stable).first().subscribe(() => { - // isStable == true doesn't guarantee that all dispatched actions have been - // processed yet. So in those cases the store snapshot wouldn't be complete - // and a rehydrate would leave the app in a broken state - // - // This setTimeout without delay schedules the cache.inject() to happen ASAP - // after everything that's already scheduled, and it solves that problem. - setTimeout(() => { - cache.inject(); - }, 0); - }); - }; -} +import { TranslateUniversalLoader } from '../translate-universal-loader'; export function createTranslateLoader() { return new TranslateUniversalLoader('dist/assets/i18n/', '.json'); @@ -57,14 +24,13 @@ export function createTranslateLoader() { bootstrap: [AppComponent], imports: [ BrowserModule.withServerTransition({ - appId: 'ds-app-id' + appId: 'dspace-angular' }), RouterModule.forRoot([], { useHash: false }), NoopAnimationsModule, - ServerTransferStateModule, - ServerTransferStoreModule, + DSpaceServerTransferStateModule, TranslateModule.forRoot({ loader: { provide: TranslateLoader, @@ -72,25 +38,16 @@ export function 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 { - + constructor( + private transferState: DSpaceTransferState, + ) { + this.transferState.transfer(); + } } diff --git a/src/modules/transfer-state/browser-transfer-state.module.ts b/src/modules/transfer-state/browser-transfer-state.module.ts deleted file mode 100644 index 9bf3f1bae9..0000000000 --- a/src/modules/transfer-state/browser-transfer-state.module.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { NgModule } from '@angular/core'; -import { BrowserTransferState } from './browser-transfer-state'; -import { TransferState } from './transfer-state'; - -@NgModule({ - providers: [ - { provide: TransferState, useClass: BrowserTransferState } - ] -}) -export class BrowserTransferStateModule { - -} diff --git a/src/modules/transfer-state/browser-transfer-state.ts b/src/modules/transfer-state/browser-transfer-state.ts deleted file mode 100644 index 79d7ee3df0..0000000000 --- a/src/modules/transfer-state/browser-transfer-state.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { Inject, Injectable } from '@angular/core'; - -import { Action, Store } from '@ngrx/store'; - -import { TransferState } from './transfer-state'; - -import { StoreAction, StoreActionTypes } from '../../app/store.actions'; -import { AppState } from '../../app/app.reducer'; - -import { GLOBAL_CONFIG, GlobalConfig } from '../../config'; -import { RouterNavigationAction } from '@ngrx/router-store'; - -@Injectable() -export class BrowserTransferState extends TransferState { - - constructor(private store: Store, @Inject(GLOBAL_CONFIG) private config: GlobalConfig) { - super(); - } - - initialize() { - // tslint:disable-next-line:no-string-literal - const cache: any = window['TRANSFER_STATE'] || {}; - Object.keys(cache).forEach((key: string) => { - if (key !== 'actions') { - this.set(key, cache[key]); - } - }); - if (this.config.prerenderStrategy === 'replay') { - if (cache.actions !== undefined) { - if (this.config.debug) { - console.info('Replay:', (cache.actions !== undefined && cache.actions !== null) ? cache.actions : []); - } - this.store.dispatch(new StoreAction(StoreActionTypes.REPLAY, cache.actions)); - } else { - console.info('No actions occured during prerender.'); - } - } else if (this.config.prerenderStrategy === 'rehydrate') { - if (this.config.debug) { - console.info('Rehydrate:', (cache.state !== undefined && cache.state !== null) ? cache.state : []); - } - this.store.dispatch(new StoreAction(StoreActionTypes.REHYDRATE, cache.state)); - } else { - console.warn([this.config.prerenderStrategy, 'is not a valid prerender strategy!'].join(' ')); - } - } - -} diff --git a/src/modules/transfer-state/dspace-browser-transfer-state.module.ts b/src/modules/transfer-state/dspace-browser-transfer-state.module.ts new file mode 100644 index 0000000000..e251d0b3b2 --- /dev/null +++ b/src/modules/transfer-state/dspace-browser-transfer-state.module.ts @@ -0,0 +1,16 @@ +import { NgModule } from '@angular/core'; +import { BrowserTransferStateModule } from '@angular/platform-browser'; +import { DSpaceBrowserTransferState } from './dspace-browser-transfer-state.service'; +import { DSpaceTransferState } from './dspace-transfer-state.service'; + +@NgModule({ + imports: [ + BrowserTransferStateModule + ], + providers: [ + { provide: DSpaceTransferState, useClass: DSpaceBrowserTransferState } + ] +}) +export class DSpaceBrowserTransferStateModule { + +} diff --git a/src/modules/transfer-state/dspace-browser-transfer-state.service.ts b/src/modules/transfer-state/dspace-browser-transfer-state.service.ts new file mode 100644 index 0000000000..ae3306c3fb --- /dev/null +++ b/src/modules/transfer-state/dspace-browser-transfer-state.service.ts @@ -0,0 +1,12 @@ +import { Injectable } from '@angular/core'; +import { StoreAction, StoreActionTypes } from '../../app/store.actions'; +import { DSpaceTransferState } from './dspace-transfer-state.service'; + +@Injectable() +export class DSpaceBrowserTransferState extends DSpaceTransferState { + transfer() { + const state = this.transferState.get(DSpaceTransferState.NGRX_STATE, null); + this.transferState.remove(DSpaceTransferState.NGRX_STATE); + this.store.dispatch(new StoreAction(StoreActionTypes.REHYDRATE, state)); + } +} diff --git a/src/modules/transfer-state/dspace-server-transfer-state.module.ts b/src/modules/transfer-state/dspace-server-transfer-state.module.ts new file mode 100644 index 0000000000..f8f2631cd0 --- /dev/null +++ b/src/modules/transfer-state/dspace-server-transfer-state.module.ts @@ -0,0 +1,16 @@ +import { NgModule } from '@angular/core'; +import { ServerTransferStateModule } from '@angular/platform-server'; +import { DSpaceServerTransferState } from './dspace-server-transfer-state.service'; +import { DSpaceTransferState } from './dspace-transfer-state.service'; + +@NgModule({ + imports: [ + ServerTransferStateModule + ], + providers: [ + { provide: DSpaceTransferState, useClass: DSpaceServerTransferState } + ] +}) +export class DSpaceServerTransferStateModule { + +} diff --git a/src/modules/transfer-state/dspace-server-transfer-state.service.ts b/src/modules/transfer-state/dspace-server-transfer-state.service.ts new file mode 100644 index 0000000000..380bb3f9f3 --- /dev/null +++ b/src/modules/transfer-state/dspace-server-transfer-state.service.ts @@ -0,0 +1,16 @@ +import { Injectable } from '@angular/core'; +import { DSpaceTransferState } from './dspace-transfer-state.service'; + +@Injectable() +export class DSpaceServerTransferState extends DSpaceTransferState { + transfer() { + this.transferState.onSerialize(DSpaceTransferState.NGRX_STATE, () => { + let state; + this.store.take(1).subscribe((saveState: any) => { + state = saveState; + }); + + return state; + }); + } +} diff --git a/src/modules/transfer-state/dspace-transfer-state.service.ts b/src/modules/transfer-state/dspace-transfer-state.service.ts new file mode 100644 index 0000000000..a0cf4ebb34 --- /dev/null +++ b/src/modules/transfer-state/dspace-transfer-state.service.ts @@ -0,0 +1,18 @@ +import { Injectable } from '@angular/core'; +import { makeStateKey, TransferState } from '@angular/platform-browser'; +import { Store } from '@ngrx/store'; +import { AppState } from '../../app/app.reducer'; + +@Injectable() +export abstract class DSpaceTransferState { + + protected static NGRX_STATE = makeStateKey('NGRX_STATE'); + + constructor( + protected transferState: TransferState, + protected store: Store + ) { + } + + abstract transfer(): void +} diff --git a/src/modules/transfer-state/server-transfer-state.module.ts b/src/modules/transfer-state/server-transfer-state.module.ts deleted file mode 100644 index 1a77f6539a..0000000000 --- a/src/modules/transfer-state/server-transfer-state.module.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { NgModule } from '@angular/core'; -import { ServerTransferState } from './server-transfer-state'; -import { TransferState } from './transfer-state'; - -@NgModule({ - providers: [ - { provide: TransferState, useClass: ServerTransferState } - ] -}) -export class ServerTransferStateModule { - -} diff --git a/src/modules/transfer-state/server-transfer-state.ts b/src/modules/transfer-state/server-transfer-state.ts deleted file mode 100644 index 6daf17f4ac..0000000000 --- a/src/modules/transfer-state/server-transfer-state.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { Inject, Injectable, RendererFactory2, ViewEncapsulation } from '@angular/core'; - -import { INITIAL_CONFIG, PlatformState } from '@angular/platform-server'; - -import { TransferState } from './transfer-state'; - -@Injectable() -export class ServerTransferState extends TransferState { - - constructor(private state: PlatformState, private rendererFactory: RendererFactory2) { - super(); - } - - inject() { - try { - const document: any = this.state.getDocument(); - const transferStateString = JSON.stringify(this.toJson()); - const renderer = this.rendererFactory.createRenderer(document, { - id: '-1', - encapsulation: ViewEncapsulation.None, - styles: [], - data: {} - }); - const head = document.children[1].children[0]; - if (head.name !== 'head') { - throw new Error('Please have as the first element in your document'); - } - const script = renderer.createElement('script'); - renderer.setValue(script, `window['TRANSFER_STATE'] = ${transferStateString}`); - renderer.appendChild(head, script); - } catch (e) { - console.error(e); - } - - } - -} diff --git a/src/modules/transfer-state/transfer-state.ts b/src/modules/transfer-state/transfer-state.ts deleted file mode 100644 index 94298a9c1e..0000000000 --- a/src/modules/transfer-state/transfer-state.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { Injectable } from '@angular/core'; - -import { Action } from '@ngrx/store'; -import { Store } from '@ngrx/store'; - -@Injectable() -export class TransferState { - - protected map = new Map(); - - keys() { - return this.map.keys(); - } - - get(key: string): any { - return this.map.get(key); - } - - set(key: string, value: any): Map { - return this.map.set(key, value); - } - - toJson(): any { - const json: any = {}; - Array.from(this.keys()) - .forEach((key: string) => { - json[key] = this.get(key); - }); - return json; - } - - initialize(): void { - console.log('Initialize does nothing!'); - } - - inject(): void { - console.log('Inject does nothing!'); - } - -} diff --git a/src/modules/transfer-store/browser-transfer-store.effects.ts b/src/modules/transfer-store/browser-transfer-store.effects.ts deleted file mode 100644 index 589db968e3..0000000000 --- a/src/modules/transfer-store/browser-transfer-store.effects.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { Inject, Injectable } from '@angular/core'; - -import { Action } from '@ngrx/store'; -import { Effect, Actions } from '@ngrx/effects'; - -import { Observable } from 'rxjs/Observable'; - -import { types } from '../../app/shared/ngrx/type'; - -import { TransferStoreEffects } from './transfer-store.effects'; - -import { GLOBAL_CONFIG, GlobalConfig } from '../../config'; - -@Injectable() -export class BrowserTransferStoreEffects extends TransferStoreEffects { - - @Effect({ dispatch: false }) log = this.actions.ofType(...types()).switchMap((action: Action) => { - if (this.config.debug) { - console.info(action); - } - return Observable.of({}); - }); - - constructor(private actions: Actions, @Inject(GLOBAL_CONFIG) public config: GlobalConfig) { - super(); - } - -} diff --git a/src/modules/transfer-store/browser-transfer-store.module.ts b/src/modules/transfer-store/browser-transfer-store.module.ts deleted file mode 100644 index 78a2bd6abc..0000000000 --- a/src/modules/transfer-store/browser-transfer-store.module.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { NgModule } from '@angular/core'; -import { BrowserTransferStoreEffects } from './browser-transfer-store.effects'; -import { TransferStoreEffects } from './transfer-store.effects'; - -@NgModule({ - providers: [ - { provide: TransferStoreEffects, useClass: BrowserTransferStoreEffects } - ] -}) -export class BrowserTransferStoreModule { - -} diff --git a/src/modules/transfer-store/server-transfer-store.effects.ts b/src/modules/transfer-store/server-transfer-store.effects.ts deleted file mode 100644 index ad1f656acf..0000000000 --- a/src/modules/transfer-store/server-transfer-store.effects.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { Inject, Injectable } from '@angular/core'; - -import { Action } from '@ngrx/store'; -import { Effect, Actions } from '@ngrx/effects'; - -import { Observable } from 'rxjs/Observable'; - -import { types } from '../../app/shared/ngrx/type'; - -import { TransferStoreEffects } from './transfer-store.effects'; - -import { TransferState } from '../transfer-state/transfer-state'; - -import { GLOBAL_CONFIG, GlobalConfig } from '../../config'; - -@Injectable() -export class ServerTransferStoreEffects extends TransferStoreEffects { - - @Effect({ dispatch: false }) track = this.actions.ofType(...types()).switchMap((action: Action) => { - this.cacheAction(action); - return Observable.of({}); - }); - - constructor(private actions: Actions, private cache: TransferState, @Inject(GLOBAL_CONFIG) public config: GlobalConfig) { - super(); - this.cache.set('actions', new Array()); - } - - private cacheAction(action: Action): void { - if (this.config.debug) { - console.info('Cache:', action); - } - this.cache.get('actions').push(action); - } - -} diff --git a/src/modules/transfer-store/server-transfer-store.module.ts b/src/modules/transfer-store/server-transfer-store.module.ts deleted file mode 100644 index 25a0703c3a..0000000000 --- a/src/modules/transfer-store/server-transfer-store.module.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { NgModule } from '@angular/core'; -import { ServerTransferStoreEffects } from './server-transfer-store.effects'; -import { TransferStoreEffects } from './transfer-store.effects'; - -@NgModule({ - providers: [ - { provide: TransferStoreEffects, useClass: ServerTransferStoreEffects } - ] -}) -export class ServerTransferStoreModule { - -} diff --git a/src/modules/transfer-store/transfer-store.effects.ts b/src/modules/transfer-store/transfer-store.effects.ts deleted file mode 100644 index f74bb3c728..0000000000 --- a/src/modules/transfer-store/transfer-store.effects.ts +++ /dev/null @@ -1,3 +0,0 @@ -export abstract class TransferStoreEffects { - -}