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