TSK-1248 removed unnecessary get call from saveClassification action

This commit is contained in:
Tristan Eisermann 2020-06-03 15:27:01 +02:00 committed by Mustapha Zorgati
parent 8434bde759
commit 7b5927d281
1 changed files with 23 additions and 23 deletions

View File

@ -1,5 +1,5 @@
import { Action, NgxsAfterBootstrap, State, StateContext } from '@ngxs/store'; import { Action, NgxsAfterBootstrap, State, StateContext } from '@ngxs/store';
import { Observable } from 'rxjs'; import { Observable, of } from 'rxjs';
import { take, tap } from 'rxjs/operators'; import { take, tap } from 'rxjs/operators';
import { CategoriesResponse, import { CategoriesResponse,
ClassificationCategoriesService } from '../../services/classification-categories/classification-categories.service'; ClassificationCategoriesService } from '../../services/classification-categories/classification-categories.service';
@ -28,15 +28,16 @@ export class ClassificationState implements NgxsAfterBootstrap {
} }
@Action(SetSelectedClassificationType) @Action(SetSelectedClassificationType)
setSelectedClassificationType(ctx: StateContext<ClassificationStateModel>, action: SetSelectedClassificationType): void { setSelectedClassificationType(ctx: StateContext<ClassificationStateModel>, action: SetSelectedClassificationType): Observable<null> {
const state: ClassificationStateModel = ctx.getState(); const state: ClassificationStateModel = ctx.getState();
if (state.classificationTypes[action.selectedType]) { if (state.classificationTypes[action.selectedType]) {
ctx.patchState({ selectedClassificationType: action.selectedType }); ctx.patchState({ selectedClassificationType: action.selectedType });
} }
return of(null);
} }
@Action(SelectClassification) @Action(SelectClassification)
selectClassification(ctx: StateContext<ClassificationStateModel>, action: SelectClassification): Observable<any> | void { selectClassification(ctx: StateContext<ClassificationStateModel>, action: SelectClassification): Observable<any|null> {
if (typeof action.classificationId !== 'undefined') { if (typeof action.classificationId !== 'undefined') {
return this.classificationsService.getClassification(action.classificationId).pipe(take(1), tap( return this.classificationsService.getClassification(action.classificationId).pipe(take(1), tap(
selectedClassification => { selectedClassification => {
@ -47,16 +48,16 @@ export class ClassificationState implements NgxsAfterBootstrap {
} }
)); ));
} }
return null; return of(null);
} }
@Action(DeselectClassification) @Action(DeselectClassification)
deselectClassification(ctx: StateContext<ClassificationStateModel>): Observable<any> | void { deselectClassification(ctx: StateContext<ClassificationStateModel>): Observable<null> {
ctx.patchState({ ctx.patchState({
selectedClassification: undefined, selectedClassification: undefined,
action: null action: null
}); });
return null; return of(null);
} }
@Action(InitializeStore) @Action(InitializeStore)
@ -106,22 +107,19 @@ export class ClassificationState implements NgxsAfterBootstrap {
@Action(SaveClassification) @Action(SaveClassification)
saveClassification(ctx: StateContext<ClassificationStateModel>, action: SaveClassification): Observable<any> { saveClassification(ctx: StateContext<ClassificationStateModel>, action: SaveClassification): Observable<any> {
return this.classificationsService.putClassification(action.classification).pipe( return this.classificationsService.putClassification(action.classification).pipe(
// TODO remove this call when backend is fixed modified dates are not same take(1), tap(savedClassification => {
take(1), tap(retClassification => this.classificationsService.getClassification(retClassification.classificationId).subscribe(
savedClassification => {
ctx.patchState({ ctx.patchState({
classifications: ctx.getState().classifications.map(currentClassification => { classifications: ctx.getState().classifications.map(currentClassification => {
if (currentClassification.classificationId === savedClassification.classificationId) { // TODO there has to be a better way if (currentClassification.classificationId === savedClassification.classificationId) {
return savedClassification; return savedClassification;
} }
return currentClassification; return currentClassification;
}), }),
selectedClassification: savedClassification selectedClassification: savedClassification
}); });
} }), tap(() => this.classificationsService.getClassifications(
)), tap(() => this.classificationsService.getClassifications(
ctx.getState().selectedClassificationType ctx.getState().selectedClassificationType
).subscribe( // TODO find a better way because 3 calls are way too much ).subscribe(
classifications => { classifications => {
ctx.patchState({ ctx.patchState({
classifications classifications
@ -141,12 +139,13 @@ export class ClassificationState implements NgxsAfterBootstrap {
} }
@Action(SetActiveAction) @Action(SetActiveAction)
setActiveAction(ctx: StateContext<ClassificationStateModel>, action: SetActiveAction): void { setActiveAction(ctx: StateContext<ClassificationStateModel>, action: SetActiveAction): Observable<null> {
if (action.action === ACTION.CREATE) { if (action.action === ACTION.CREATE) {
ctx.patchState({ selectedClassification: new ClassificationDefinition(), action: action.action }); ctx.patchState({ selectedClassification: new ClassificationDefinition(), action: action.action });
} else { } else {
ctx.patchState({ action: action.action }); ctx.patchState({ action: action.action });
} }
return of(null);
} }
@Action(RemoveSelectedClassification) @Action(RemoveSelectedClassification)
@ -173,8 +172,9 @@ export class ClassificationState implements NgxsAfterBootstrap {
} }
// initialize after Startup service has configured the taskanaRestUrl properly. // initialize after Startup service has configured the taskanaRestUrl properly.
ngxsAfterBootstrap(ctx: StateContext<ClassificationStateModel>): void { ngxsAfterBootstrap(ctx: StateContext<ClassificationStateModel>): Observable<null> {
ctx.dispatch(new InitializeStore()); ctx.dispatch(new InitializeStore());
return of(null);
} }
} }