From 7a4c9e354e22db41d30673e6721b9d03c08de19d Mon Sep 17 00:00:00 2001 From: Ryan Mathis Date: Tue, 3 Dec 2019 08:11:51 -0700 Subject: [PATCH] SHIBUI-1656 Fixed issue with extra call receiving 404 --- .../contention/service/contention.service.ts | 2 +- .../filter/action/collection.action.ts | 8 +++++++ .../filter/effect/collection.effect.ts | 23 +++++++++++++++++-- .../metadata/filter/effect/filter.effect.ts | 16 ++++++++----- .../widget/string/string.component.ts | 1 - 5 files changed, 40 insertions(+), 10 deletions(-) diff --git a/ui/src/app/contention/service/contention.service.ts b/ui/src/app/contention/service/contention.service.ts index 75ab7b3c9..f9b85f3c6 100644 --- a/ui/src/app/contention/service/contention.service.ts +++ b/ui/src/app/contention/service/contention.service.ts @@ -6,7 +6,7 @@ import { removeNulls } from '../../shared/util'; @Injectable() export class ContentionService { - filterKeys = (key => (['version', 'modifiedDate', 'createdDate'].indexOf(key) === -1)); + filterKeys = (key => (['version', 'modifiedDate', 'createdDate', 'createdBy', 'modifiedBy', 'audId'].indexOf(key) === -1)); constructor( private diffService: DifferentialService diff --git a/ui/src/app/metadata/filter/action/collection.action.ts b/ui/src/app/metadata/filter/action/collection.action.ts index 938b38ce4..705f0f65d 100644 --- a/ui/src/app/metadata/filter/action/collection.action.ts +++ b/ui/src/app/metadata/filter/action/collection.action.ts @@ -11,6 +11,7 @@ export enum FilterCollectionActionTypes { UPDATE_FILTER_REQUEST = '[Metadata Filter Collection] Update Filter Request', UPDATE_FILTER_SUCCESS = '[Metadata Filter Collection] Update Filter Success', UPDATE_FILTER_FAIL = '[Metadata Filter Collection] Update Filter Fail', + UPDATE_FILTER_CONFLICT = '[Metadata Filter Collection] Update Filter Conflict', LOAD_FILTER_REQUEST = '[Metadata Filter Collection] Load Filter Request', LOAD_FILTER_SUCCESS = '[Metadata Filter Collection] Load Filter Success', @@ -90,6 +91,12 @@ export class UpdateFilterSuccess implements Action { export class UpdateFilterFail implements Action { readonly type = FilterCollectionActionTypes.UPDATE_FILTER_FAIL; + constructor(public payload: any) { } +} + +export class UpdateFilterConflict implements Action { + readonly type = FilterCollectionActionTypes.UPDATE_FILTER_CONFLICT; + constructor(public payload: MetadataFilter) { } } @@ -197,6 +204,7 @@ export type FilterCollectionActionsUnion = | UpdateFilterRequest | UpdateFilterSuccess | UpdateFilterFail + | UpdateFilterConflict | ClearFilters | ChangeFilterOrderDown | ChangeFilterOrderUp diff --git a/ui/src/app/metadata/filter/effect/collection.effect.ts b/ui/src/app/metadata/filter/effect/collection.effect.ts index 6756805a0..5a87b1184 100644 --- a/ui/src/app/metadata/filter/effect/collection.effect.ts +++ b/ui/src/app/metadata/filter/effect/collection.effect.ts @@ -29,7 +29,8 @@ import { ChangeFilterOrderDown, RemoveFilterRequest, RemoveFilterSuccess, - RemoveFilterFail + RemoveFilterFail, + UpdateFilterConflict } from '../action/collection.action'; import { FilterCollectionActionTypes } from '../action/collection.action'; import * as fromFilter from '../reducer'; @@ -139,6 +140,24 @@ export class FilterCollectionEffects { }) ); + @Effect() + updateFilterFailNotification$ = this.actions$.pipe( + ofType(FilterCollectionActionTypes.UPDATE_FILTER_FAIL), + map(action => action.payload.error), + withLatestFrom(this.store.select(fromI18n.getMessages)), + map(([error, messages]) => { + const message = error.errorMessage || error.cause || 'message.filter-fail'; + const translated = this.i18nService.translate(message, null, messages); + return new AddNotification( + new Notification( + NotificationType.Danger, + `${error.errorCode}: ${translated}`, + 8000 + ) + ); + }) + ); + @Effect() updateFilter$ = this.actions$.pipe( ofType(FilterCollectionActionTypes.UPDATE_FILTER_REQUEST), @@ -154,7 +173,7 @@ export class FilterCollectionEffects { id: p.resourceId, changes: p })), - catchError(err => of(new UpdateFilterFail(filter))) + catchError(err => of(err.status === 409 ? new UpdateFilterConflict(filter) : new UpdateFilterFail(err))) ); }) ); diff --git a/ui/src/app/metadata/filter/effect/filter.effect.ts b/ui/src/app/metadata/filter/effect/filter.effect.ts index e4a252d6e..22778ff9e 100644 --- a/ui/src/app/metadata/filter/effect/filter.effect.ts +++ b/ui/src/app/metadata/filter/effect/filter.effect.ts @@ -11,7 +11,7 @@ import * as fromProvider from '../../provider/reducer'; import * as fromRoot from '../../../app.reducer'; import { FilterCollectionActionTypes, - UpdateFilterFail, + UpdateFilterConflict, UpdateFilterRequest } from '../action/collection.action'; import { @@ -26,6 +26,7 @@ import { MetadataProviderService } from '../../domain/service/provider.service'; import { ShowContentionAction } from '../../../contention/action/contention.action'; import { MetadataFilter } from '../../domain/model'; import { ContentionService } from '../../../contention/service/contention.service'; +import { MetadataFilterService } from '../../domain/service/filter.service'; @Injectable() export class FilterEffects { @@ -44,11 +45,14 @@ export class FilterEffects { @Effect() openContention$ = this.actions$.pipe( - ofType(FilterCollectionActionTypes.UPDATE_FILTER_FAIL), + ofType(FilterCollectionActionTypes.UPDATE_FILTER_CONFLICT), map(action => action.payload), - withLatestFrom(this.store.select(fromFilter.getSelectedFilter)), - switchMap(([filter, current]) => - this.resolverService.find(filter.id).pipe( + withLatestFrom( + this.store.select(fromFilter.getSelectedFilter), + this.store.select(fromProvider.getSelectedProviderId) + ), + switchMap(([filter, current, providerId]) => + this.filterService.find(providerId, filter.resourceId).pipe( map(data => new ShowContentionAction(this.contentionService.getContention(current, filter, data, { resolve: (obj) => this.store.dispatch(new UpdateFilterRequest({ ...obj })), reject: (obj) => this.store.dispatch(new CancelCreateFilter()) @@ -71,7 +75,7 @@ export class FilterEffects { private actions$: Actions, private router: Router, private idService: EntityIdService, - private resolverService: MetadataProviderService, + private filterService: MetadataFilterService, private contentionService: ContentionService ) { } } diff --git a/ui/src/app/schema-form/widget/string/string.component.ts b/ui/src/app/schema-form/widget/string/string.component.ts index 506c7b314..d4a3c7ee1 100644 --- a/ui/src/app/schema-form/widget/string/string.component.ts +++ b/ui/src/app/schema-form/widget/string/string.component.ts @@ -34,7 +34,6 @@ export class CustomStringComponent extends StringWidget implements AfterViewInit if (!this.required) { this.errorMessages = this.errorMessages.filter(e => e !== REQUIRED_MSG_OVERRIDE); } - console.log(this.errorMessages.length); }); }