From deda769e8bf524fb8b3ce08f615ffab8c653ccaa Mon Sep 17 00:00:00 2001 From: Willem Dantuma Date: Tue, 12 Nov 2019 22:50:57 +0100 Subject: [PATCH] Add service module --- .../common/src/fm/common-service.module.ts | 105 ++++++++++++++++++ projects/common/src/fm/common.module.ts | 63 +---------- projects/common/src/public-api.ts | 1 + src/app/app.component.spec.ts | 31 ------ 4 files changed, 108 insertions(+), 92 deletions(-) create mode 100644 projects/common/src/fm/common-service.module.ts delete mode 100644 src/app/app.component.spec.ts diff --git a/projects/common/src/fm/common-service.module.ts b/projects/common/src/fm/common-service.module.ts new file mode 100644 index 0000000..d9dcdfe --- /dev/null +++ b/projects/common/src/fm/common-service.module.ts @@ -0,0 +1,105 @@ +// angular modules +import { NgModule, APP_INITIALIZER, ModuleWithProviders, Injector,Optional,SkipSelf } from '@angular/core'; +import { CommonModule, DatePipe } from '@angular/common'; +import { HttpClientModule, HttpClient, HTTP_INTERCEPTORS } from '@angular/common/http'; +import { FormsModule } from '@angular/forms'; + +// external modules +import { OAuthModule,AuthConfig, OAuthService, OAuthStorage } from 'angular-oauth2-oidc'; + + +// routing module +import { AppCommonRoutingModule } from './common-routing.module'; + +import { MODULE_NAME } from './module-name'; + +//components +import { ItemTypeService } from './services/itemtype.service'; +import { FolderService } from './services/folder.service'; +import { TimespanService} from './services/timespan.service'; +import { ItemService} from './services/item.service'; +import { EventService } from './services/event.service'; +import { TypeaheadService } from './services/typeahead.service'; +import { UserService } from './services/user.service'; +import { AppConfig } from './shared/app.config'; +import { AccessTokenInterceptor } from "./shared/accesstoken.interceptor"; +import { appConfigFactory } from "./shared/app.config.factory"; +import { AuthGuard } from './services/auth-guard.service'; +import { NavBarGuard } from './services/nav-bar-guard.service'; +import { FullScreenGuard } from './services/full-screen-guard.service'; +import { SafePipe } from './shared/safe.pipe'; +import { AppComponent} from './components/app/app.component'; +import { AuthCallbackComponent } from './components/auth-callback/auth-callback.component'; +import { AuthCallbackGuard } from './components/auth-callback/auth-callback.guard'; +import { SessionClearedComponent } from './components/session-cleared/session-cleared.component'; +import { ResumableFileUploadService } from './components/resumable-file-upload/resumable-file-upload.service'; +import { ResumableFileUploadComponent } from './components/resumable-file-upload/resumable-file-upload.component'; +import { NotFoundComponent } from './components/not-found/not-found.component'; +import { NotImplementedComponent } from './components/not-implemented/not-implemented.component'; +import { SidePanelComponent } from './components/side-panel/side-panel.component'; +import { TimespanComponent } from './components/timespan/timespan.component'; +import { TagInputComponent } from './components/tag-input/tag-input.component'; +import {IEventMessage } from './models/event.message'; +import { IItem, Item } from './models/item'; +import {IItemType} from './models/item.type'; +import {IItemTypes} from './models/item.types'; +import {IItemTask,ItemTask} from './models/itemTask'; +import {IListItem} from './models/list.item'; +import {ITypeaheadItem} from './models/typeahead.item'; +import {IUser} from './models/user'; +import * as commonActions from './actions/app-common.actions'; +import * as commonReducers from './reducers/app-common.reducer'; +import * as commonEffects from './effects/app-common.effects'; +import {NgbDateNativeAdapter} from './services/date-adapter.service' +import { from } from 'rxjs'; + +export {FolderService, + ItemTypeService, + TimespanService, + ItemService, + EventService, + TypeaheadService, + UserService, + AppConfig, + AccessTokenInterceptor, + AuthGuard, + NavBarGuard, + FullScreenGuard, + AuthCallbackGuard, + ResumableFileUploadService, + NgbDateNativeAdapter +}; + +@NgModule({ + imports: [ + OAuthModule.forRoot(), + ] +}) +export class AppCommonServiceModule { + constructor (@Optional() @SkipSelf() parentModule: AppCommonServiceModule) { + if (parentModule) { + throw new Error( + 'AppCommonServiceModule is already loaded. Import it in the AppModule only'); + } + } + static forRoot(): ModuleWithProviders { + return { + ngModule: AppCommonServiceModule, + providers: [ + AppConfig, + { + provide: APP_INITIALIZER, + useFactory: appConfigFactory, + deps: [Injector, AppConfig, OAuthService], + multi: true + }, + { + provide: HTTP_INTERCEPTORS, + useClass: AccessTokenInterceptor, + multi: true + }, + DatePipe + ] + }; + } +} diff --git a/projects/common/src/fm/common.module.ts b/projects/common/src/fm/common.module.ts index a22f2ac..41e49a7 100644 --- a/projects/common/src/fm/common.module.ts +++ b/projects/common/src/fm/common.module.ts @@ -18,25 +18,10 @@ import { AppCommonRoutingModule } from './common-routing.module'; import { MODULE_NAME } from './module-name'; //components -import { ItemTypeService } from './services/itemtype.service'; -import { FolderService } from './services/folder.service'; -import { TimespanService} from './services/timespan.service'; -import { ItemService} from './services/item.service'; -import { EventService } from './services/event.service'; -import { TypeaheadService } from './services/typeahead.service'; -import { UserService } from './services/user.service'; -import { AppConfig } from './shared/app.config'; -import { AccessTokenInterceptor } from "./shared/accesstoken.interceptor"; -import { appConfigFactory } from "./shared/app.config.factory"; -import { AuthGuard } from './services/auth-guard.service'; -import { NavBarGuard } from './services/nav-bar-guard.service'; -import { FullScreenGuard } from './services/full-screen-guard.service'; import { SafePipe } from './shared/safe.pipe'; import { AppComponent} from './components/app/app.component'; import { AuthCallbackComponent } from './components/auth-callback/auth-callback.component'; -import { AuthCallbackGuard } from './components/auth-callback/auth-callback.guard'; import { SessionClearedComponent } from './components/session-cleared/session-cleared.component'; -import { ResumableFileUploadService } from './components/resumable-file-upload/resumable-file-upload.service'; import { ResumableFileUploadComponent } from './components/resumable-file-upload/resumable-file-upload.component'; import { NotFoundComponent } from './components/not-found/not-found.component'; import { NotImplementedComponent } from './components/not-implemented/not-implemented.component'; @@ -54,27 +39,12 @@ import {IUser} from './models/user'; import * as commonActions from './actions/app-common.actions'; import * as commonReducers from './reducers/app-common.reducer'; import * as commonEffects from './effects/app-common.effects'; -import {NgbDateNativeAdapter} from './services/date-adapter.service' -import { from } from 'rxjs'; -export {FolderService, - ItemTypeService, - TimespanService, - ItemService, - EventService, - TypeaheadService, - UserService, - AppConfig, - AccessTokenInterceptor, - AuthGuard, - NavBarGuard, - FullScreenGuard, +export { SafePipe, AuthCallbackComponent, - AuthCallbackGuard, AppComponent, SessionClearedComponent, - ResumableFileUploadService, ResumableFileUploadComponent, NotFoundComponent, NotImplementedComponent, @@ -92,8 +62,7 @@ export {FolderService, ITypeaheadItem, IUser, commonActions, - commonReducers, - NgbDateNativeAdapter + commonReducers }; @NgModule({ @@ -108,9 +77,6 @@ export {FolderService, FormsModule, UploadxModule ], - providers: [ - DatePipe - ], declarations: [ AppComponent, AuthCallbackComponent, @@ -141,29 +107,4 @@ export {FolderService, ] }) export class AppCommonModule { - constructor (@Optional() @SkipSelf() parentModule: AppCommonModule) { - if (parentModule) { - throw new Error( - 'AppCommonModule is already loaded. Import it in the AppModule only'); - } - } - static forRoot(): ModuleWithProviders { - return { - ngModule: AppCommonModule, - providers: [ - AppConfig, - { - provide: APP_INITIALIZER, - useFactory: appConfigFactory, - deps: [Injector, AppConfig, OAuthService], - multi: true - }, - { - provide: HTTP_INTERCEPTORS, - useClass: AccessTokenInterceptor, - multi: true - } - ] - }; - } } diff --git a/projects/common/src/public-api.ts b/projects/common/src/public-api.ts index dbd6f92..1b11ce9 100644 --- a/projects/common/src/public-api.ts +++ b/projects/common/src/public-api.ts @@ -3,3 +3,4 @@ */ export * from './fm/common.module'; +export * from './fm/common-service.module'; diff --git a/src/app/app.component.spec.ts b/src/app/app.component.spec.ts deleted file mode 100644 index e348735..0000000 --- a/src/app/app.component.spec.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { TestBed, async } from '@angular/core/testing'; -import { AppComponent } from './app.component'; - -describe('AppComponent', () => { - beforeEach(async(() => { - TestBed.configureTestingModule({ - declarations: [ - AppComponent - ], - }).compileComponents(); - })); - - it('should create the app', () => { - const fixture = TestBed.createComponent(AppComponent); - const app = fixture.debugElement.componentInstance; - expect(app).toBeTruthy(); - }); - - it(`should have as title 'farmmaps-lib-app'`, () => { - const fixture = TestBed.createComponent(AppComponent); - const app = fixture.debugElement.componentInstance; - expect(app.title).toEqual('farmmaps-lib-app'); - }); - - it('should render title in a h1 tag', () => { - const fixture = TestBed.createComponent(AppComponent); - fixture.detectChanges(); - const compiled = fixture.debugElement.nativeElement; - expect(compiled.querySelector('h1').textContent).toContain('Welcome to farmmaps-lib-app!'); - }); -});