From 4a3ae5f358bc28277c16bcd4ee2d97b4241796f5 Mon Sep 17 00:00:00 2001 From: Ryan Mathis Date: Wed, 14 Nov 2018 08:27:10 -0700 Subject: [PATCH] SHIBUI-985 added resolver service --- .../container/new-resolver.component.ts | 4 +-- .../effect/draft-collection.effects.ts | 25 ------------------ .../app/metadata/resolver/resolver.module.ts | 4 ++- .../app/metadata/resolver/resolver.routing.ts | 4 +++ .../resolver/service/create-draft.resolver.ts | 26 +++++++++++++++++++ 5 files changed, 35 insertions(+), 28 deletions(-) create mode 100644 ui/src/app/metadata/resolver/service/create-draft.resolver.ts diff --git a/ui/src/app/metadata/resolver/container/new-resolver.component.ts b/ui/src/app/metadata/resolver/container/new-resolver.component.ts index ab4f09103..ff916d836 100644 --- a/ui/src/app/metadata/resolver/container/new-resolver.component.ts +++ b/ui/src/app/metadata/resolver/container/new-resolver.component.ts @@ -31,9 +31,9 @@ export class NewResolverComponent { }) ); - this.actionsSubscription = this.route.queryParams.pipe( + this.actionsSubscription = this.route.data.pipe( distinctUntilChanged(), - map(params => new SelectDraftRequest(params.id)) + map(data => new SelectDraftRequest(data.draft)) ).subscribe(this.store); } } diff --git a/ui/src/app/metadata/resolver/effect/draft-collection.effects.ts b/ui/src/app/metadata/resolver/effect/draft-collection.effects.ts index f6e203381..ac94d2410 100644 --- a/ui/src/app/metadata/resolver/effect/draft-collection.effects.ts +++ b/ui/src/app/metadata/resolver/effect/draft-collection.effects.ts @@ -63,13 +63,6 @@ export class DraftCollectionEffects { ) ); - @Effect({ dispatch: false }) - addDraftSuccessRedirect$ = this.actions$.pipe( - ofType(DraftActionTypes.ADD_DRAFT_SUCCESS), - map(getPayload), - tap(provider => this.router.navigate(['metadata', 'resolver', provider.entityId, 'wizard'])) - ); - @Effect() updateDraft$ = this.actions$.pipe( ofType(DraftActionTypes.UPDATE_DRAFT_REQUEST), @@ -107,24 +100,6 @@ export class DraftCollectionEffects { map(id => new actions.LoadDraftRequest()) ); - @Effect() - selectDraftError$ = this.actions$.pipe( - ofType(DraftActionTypes.SELECT_ERROR), - map(getPayload), - switchMap(id => - this.draftService - .save({ id: `r-${ Date.now() }`, serviceProviderName: '' }) - .pipe( - map(p => new SelectDraftRequest(p.id)), - catchError(e => of(new SelectDraftError())) - ) - ), - tap(() => { - // this.store.dispatch(new ClearWizard()); - this.store.dispatch(new Clear()); - }) - ); - @Effect() removeDraft$ = this.actions$.pipe( ofType(DraftActionTypes.REMOVE_DRAFT), diff --git a/ui/src/app/metadata/resolver/resolver.module.ts b/ui/src/app/metadata/resolver/resolver.module.ts index 39f4b67f1..c5290431f 100644 --- a/ui/src/app/metadata/resolver/resolver.module.ts +++ b/ui/src/app/metadata/resolver/resolver.module.ts @@ -35,6 +35,7 @@ import { ResolverSelectComponent } from './container/resolver-select.component'; import { MetadataSourceEditor } from '../domain/model/wizards/metadata-source-editor'; import { FinishFormComponent } from './component/finish-form.component'; import { ProviderFormFragmentComponent } from './component/provider-form-fragment.component'; +import { CreateDraftResolverService } from './service/create-draft.resolver'; @NgModule({ declarations: [ @@ -75,7 +76,8 @@ export class ResolverModule { return { ngModule: RootResolverModule, providers: [ - CopyIsSetGuard + CopyIsSetGuard, + CreateDraftResolverService ] }; } diff --git a/ui/src/app/metadata/resolver/resolver.routing.ts b/ui/src/app/metadata/resolver/resolver.routing.ts index 1d080bd5f..9916e2206 100644 --- a/ui/src/app/metadata/resolver/resolver.routing.ts +++ b/ui/src/app/metadata/resolver/resolver.routing.ts @@ -13,6 +13,7 @@ import { ResolverWizardStepComponent } from './container/resolver-wizard-step.co import { ResolverEditComponent } from './container/resolver-edit.component'; import { ResolverEditStepComponent } from './container/resolver-edit-step.component'; import { ResolverSelectComponent } from './container/resolver-select.component'; +import { CreateDraftResolverService } from './service/create-draft.resolver'; export const ResolverRoutes: Routes = [ { @@ -21,6 +22,9 @@ export const ResolverRoutes: Routes = [ { path: 'new', component: NewResolverComponent, + resolve: { + draft: CreateDraftResolverService + }, children: [ { path: '', redirectTo: 'blank/common', pathMatch: 'prefix' }, { diff --git a/ui/src/app/metadata/resolver/service/create-draft.resolver.ts b/ui/src/app/metadata/resolver/service/create-draft.resolver.ts new file mode 100644 index 000000000..d928d4849 --- /dev/null +++ b/ui/src/app/metadata/resolver/service/create-draft.resolver.ts @@ -0,0 +1,26 @@ +import { Injectable } from '@angular/core'; +import { ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router'; +import { Observable, of } from 'rxjs'; +import { Store } from '@ngrx/store'; +import { MetadataResolver } from '../../domain/model'; +import { AddDraftRequest } from '../action/draft.action'; +import * as fromResolver from '../reducer'; + +@Injectable() +export class CreateDraftResolverService { + constructor( + private store: Store + ) { } + + resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable | Observable { + let id = route.paramMap.get('id'); + let resolver = { + id: `r-${Date.now()}` + }; + if (!id) { + id = resolver.id; + this.store.dispatch(new AddDraftRequest(resolver)); + } + return of(id); + } +}