diff --git a/alfa-client/libs/tech-shared/src/lib/ngrx/actions.ts b/alfa-client/libs/tech-shared/src/lib/ngrx/actions.ts index 43baadf366f04420513f674de3e867153590bad8..b72e3d41ece3c13fd66dff1977c8755ab545d065 100644 --- a/alfa-client/libs/tech-shared/src/lib/ngrx/actions.ts +++ b/alfa-client/libs/tech-shared/src/lib/ngrx/actions.ts @@ -39,17 +39,14 @@ export interface ApiErrorAction { export interface ResourceUriProps { resourceUri: ResourceUri; - resourcePath?: string; } export interface LoadResourceSuccessProps { resource: Resource; - resourcePath?: string; } export interface LoadResourceFailureProps { error: HttpError; - resourcePath?: string; } export interface LoadResourceSuccessProps {} diff --git a/alfa-client/libs/tech-shared/src/lib/ngrx/resource.effects.ts b/alfa-client/libs/tech-shared/src/lib/ngrx/resource.effects.ts index 9811c4f4146c2c7987c606f9f32af79ce41c2a36..1975516fda46fb3b58ff96e35eaa9822bb62deba 100644 --- a/alfa-client/libs/tech-shared/src/lib/ngrx/resource.effects.ts +++ b/alfa-client/libs/tech-shared/src/lib/ngrx/resource.effects.ts @@ -24,7 +24,7 @@ import { Actions, createEffect, ofType } from '@ngrx/effects'; import { Resource } from '@ngxp/rest'; import { of } from 'rxjs'; -import { catchError, map, switchMap, tap } from 'rxjs/operators'; +import { catchError, map, switchMap } from 'rxjs/operators'; import { ResourceRepository } from '../resource/resource.repository'; import { ResourceActions, ResourceUriProps } from './actions'; @@ -37,25 +37,11 @@ export class ResourceEffects<T extends Resource> { loadByUri$ = createEffect(() => this.actions$.pipe( - tap((action) => console.info('Effect triggered for:', action.type)), ofType(this.resourceActions.loadAction), - tap(() => console.info('Effect execute...')), switchMap((props: ResourceUriProps) => { return this.repository.getResource<T>(props.resourceUri).pipe( - map((resource: T) => - this.resourceActions.loadSuccessAction({ - resource, - resourcePath: props.resourcePath, - }), - ), - catchError((error) => - of( - this.resourceActions.loadFailureAction({ - error, - resourcePath: props.resourcePath, - }), - ), - ), + map((resource: T) => this.resourceActions.loadSuccessAction({ resource })), + catchError((error) => of(this.resourceActions.loadFailureAction({ error }))), ); }), ), diff --git a/alfa-client/libs/tech-shared/src/lib/ngrx/resource.state.service.ts b/alfa-client/libs/tech-shared/src/lib/ngrx/resource.state.service.ts index 450a98e2d8702fbf7429524762e6b46c92226a34..1c03f24ccc953ba31984d55f91a96000d257db53 100644 --- a/alfa-client/libs/tech-shared/src/lib/ngrx/resource.state.service.ts +++ b/alfa-client/libs/tech-shared/src/lib/ngrx/resource.state.service.ts @@ -16,29 +16,28 @@ export class StateService { private effectService: EffectService, ) {} - public createInstance(): ResourceStateService { - return new ResourceStateService(this.store, this.effectService); + public createInstance(stateInfo: StateInfo): ResourceStateService { + return new ResourceStateService(stateInfo, this.store, this.effectService); } } export class ResourceStateService { - stateInfo: StateInfo; actions: ResourceActions; constructor( + private stateInfo: StateInfo, private store: Store, private effectService: EffectService, ) {} - public init(stateInfo: StateInfo) { - this.stateInfo = stateInfo; - this.createActions(stateInfo.name); + public init() { + this.createActions(); this.initEffects(); return this; } - private createActions(featureName: string): void { - this.actions = createResourceAction(featureName); + private createActions(): void { + this.actions = createResourceAction(this.stateInfo.name); } private initEffects(): void { diff --git a/alfa-client/libs/tech-shared/src/lib/resource/api-resource.service.ts b/alfa-client/libs/tech-shared/src/lib/resource/api-resource.service.ts index 87c58ca194aa8196bd0406fd4763ebb97c29542e..5fc2b11bc89e1479144998213b83128f6196963e 100644 --- a/alfa-client/libs/tech-shared/src/lib/resource/api-resource.service.ts +++ b/alfa-client/libs/tech-shared/src/lib/resource/api-resource.service.ts @@ -1,6 +1,6 @@ import { HttpErrorResponse } from '@angular/common/http'; import { Resource } from '@ngxp/rest'; -import { Observable, catchError, map, startWith, switchMap, tap } from 'rxjs'; +import { Observable, catchError, map, startWith, switchMap } from 'rxjs'; import { StateService } from '../ngrx/resource.state.service'; import { HttpError } from '../tech.model'; import { ResourceServiceConfig } from './resource.model'; @@ -22,18 +22,11 @@ export class ApiResourceService<B extends Resource, T extends Resource> extends public save(toSave: unknown): Observable<StateResource<T | HttpError>> { return this.getResource().pipe( - switchMap((stateResource: StateResource<T>) => { - console.info('Save stateResource: ', stateResource); - return this.doSave(stateResource.resource, toSave).pipe( - tap((response: StateResource<T>) => { - console.info('Saved Response: ', response); - // this.store.dispatch( - // ResourceActions.loadResourceSuccess({ resource: response.resource }), - // ); - }), + switchMap((stateResource: StateResource<T>) => + this.doSave(stateResource.resource, toSave).pipe( catchError((errorResponse: HttpErrorResponse) => this.handleError(errorResponse)), - ); - }), + ), + ), startWith(createEmptyStateResource<T | HttpError>(true)), ); } @@ -47,8 +40,4 @@ export class ApiResourceService<B extends Resource, T extends Resource> extends }) .pipe(map((value: T) => createStateResource<T>(value))); } - - public delete(): Observable<Resource> { - throw new Error('Function not implemented yet'); - } } diff --git a/alfa-client/libs/tech-shared/src/lib/resource/resource.service.ts b/alfa-client/libs/tech-shared/src/lib/resource/resource.service.ts index 3323096ec1a4d951455748e64a4d626346203938..6ca741504cbfce44d903f5645a18c5e3ca1b6d56 100644 --- a/alfa-client/libs/tech-shared/src/lib/resource/resource.service.ts +++ b/alfa-client/libs/tech-shared/src/lib/resource/resource.service.ts @@ -30,11 +30,11 @@ export abstract class ResourceService<B extends Resource, T extends Resource> { protected config: ResourceServiceConfig<B>, protected stateService: StateService, ) { - this.createStateService(); + this.initStateService(); } - createStateService(): void { - this.resourceStateService = this.stateService.createInstance().init(this.config.stateInfo); + initStateService(): void { + this.resourceStateService = this.stateService.createInstance(this.config.stateInfo); } public get(): Observable<StateResource<T>> {