From 684bbd0ec49c85cc95bf32757688a17077207288 Mon Sep 17 00:00:00 2001 From: Florent POITTEVIN <poittevin.florent@gmail.com> Date: Tue, 26 May 2020 11:51:19 +0200 Subject: [PATCH] fix: notification remove from pending list after update status --- ...vation-space-notification-list.routable.ts | 22 ++++++++++++++++++- .../preservation-space-notification.state.ts | 15 ++++++++----- 2 files changed, 30 insertions(+), 7 deletions(-) diff --git a/src/app/features/preservation-space/notification/components/routables/preservation-space-notification-list/preservation-space-notification-list.routable.ts b/src/app/features/preservation-space/notification/components/routables/preservation-space-notification-list/preservation-space-notification-list.routable.ts index ba363a496..5321f1887 100644 --- a/src/app/features/preservation-space/notification/components/routables/preservation-space-notification-list/preservation-space-notification-list.routable.ts +++ b/src/app/features/preservation-space/notification/components/routables/preservation-space-notification-list/preservation-space-notification-list.routable.ts @@ -16,6 +16,7 @@ import {NotificationDlcm} from "@models"; import {Navigate} from "@ngxs/router-plugin"; import { Actions, + ofActionCompleted, Store, } from "@ngxs/store"; import {SharedAbstractListRoutable} from "@shared/components/routables/shared-abstract-list/shared-abstract-list.routable"; @@ -36,9 +37,14 @@ import {RouterExtService} from "@shared/services/router-ext.service"; import {SecurityService} from "@shared/services/security.service"; import {sharedOrgUnitActionNameSpace} from "@shared/stores/organizational-unit/shared-organizational-unit.action"; import {SharedOrganizationalUnitState} from "@shared/stores/organizational-unit/shared-organizational-unit.state"; -import {Observable} from "rxjs"; +import { + merge, + Observable, +} from "rxjs"; +import {tap} from "rxjs/operators"; import { isNullOrUndefined, + isTrue, MARK_AS_TRANSLATABLE, MemoizedUtil, OrderEnum, @@ -104,6 +110,20 @@ export class PreservationSpaceNotificationListRoutable extends SharedAbstractLis const mode = NotificationHelper.getMode(this._route); if (mode === NotificationModeEnum.inbox) { this.listNewId = SessionStorageHelper.getListItem(SessionStorageEnum.notificationInboxPending); + + this.subscribe( + merge( + this._actions$.pipe(ofActionCompleted(PreservationSpaceNotificationAction.AcceptSuccess)), + this._actions$.pipe(ofActionCompleted(PreservationSpaceNotificationAction.WaitSuccess)), + this._actions$.pipe(ofActionCompleted(PreservationSpaceNotificationAction.RefuseSuccess)), + ).pipe( + tap((result) => { + if (isTrue(result.result.successful)) { + this.listNewId = SessionStorageHelper.getListItem(SessionStorageEnum.notificationInboxPending); + } + }), + ), + ); } this._store.dispatch(new PreservationSpaceNotificationAction.SetMode(mode, orgUnitId)); } diff --git a/src/app/features/preservation-space/notification/stores/preservation-space-notification.state.ts b/src/app/features/preservation-space/notification/stores/preservation-space-notification.state.ts index 051e9c3c2..cd65a60cc 100644 --- a/src/app/features/preservation-space/notification/stores/preservation-space-notification.state.ts +++ b/src/app/features/preservation-space/notification/stores/preservation-space-notification.state.ts @@ -22,7 +22,9 @@ import {ApiActionEnum} from "@shared/enums/api-action.enum"; import {AdminResourceApiEnum} from "@shared/enums/api.enum"; import {LocalStateEnum} from "@shared/enums/local-state.enum"; import {RoutesEnum} from "@shared/enums/routes.enum"; +import {SessionStorageEnum} from "@shared/enums/session-storage.enum"; import {ViewModeEnum} from "@shared/enums/view-mode.enum"; +import {SessionStorageHelper} from "@shared/helpers/session-storage.helper"; import {Result} from "@shared/models/business/result.model"; import {defaultStatusHistoryInitValue} from "@shared/stores/status-history/status-history.state"; import { @@ -208,7 +210,7 @@ export class PreservationSpaceNotificationState extends ResourceState<Preservati @Action(PreservationSpaceNotificationAction.AcceptSuccess) acceptSuccess(ctx: StateContext<PreservationSpaceNotificationStateModel>, action: PreservationSpaceNotificationAction.AcceptSuccess): void { - this.refresh(ctx, (action.parentAction as PreservationSpaceNotificationAction.Refuse).notificationId, (action.parentAction as PreservationSpaceNotificationAction.Refuse).mode); + this.removeNotificationPendingListAndRefresh(ctx, (action.parentAction as PreservationSpaceNotificationAction.Refuse).notificationId, (action.parentAction as PreservationSpaceNotificationAction.Refuse).mode); this.notificationService.showSuccess(MARK_AS_TRANSLATABLE("preservationSpace.notifications.accept.success")); } @@ -231,7 +233,7 @@ export class PreservationSpaceNotificationState extends ResourceState<Preservati @Action(PreservationSpaceNotificationAction.RefuseSuccess) refuseSuccess(ctx: StateContext<PreservationSpaceNotificationStateModel>, action: PreservationSpaceNotificationAction.RefuseSuccess): void { - this.refresh(ctx, (action.parentAction as PreservationSpaceNotificationAction.Refuse).notificationId, (action.parentAction as PreservationSpaceNotificationAction.Refuse).mode); + this.removeNotificationPendingListAndRefresh(ctx, (action.parentAction as PreservationSpaceNotificationAction.Refuse).notificationId, (action.parentAction as PreservationSpaceNotificationAction.Refuse).mode); this.notificationService.showSuccess(MARK_AS_TRANSLATABLE("preservationSpace.notifications.refuse.success")); } @@ -254,13 +256,14 @@ export class PreservationSpaceNotificationState extends ResourceState<Preservati @Action(PreservationSpaceNotificationAction.WaitSuccess) waitSuccess(ctx: StateContext<PreservationSpaceNotificationStateModel>, action: PreservationSpaceNotificationAction.WaitSuccess): void { - this.refresh(ctx, (action.parentAction as PreservationSpaceNotificationAction.Wait).notificationId, (action.parentAction as PreservationSpaceNotificationAction.Wait).mode); + this.removeNotificationPendingListAndRefresh(ctx, (action.parentAction as PreservationSpaceNotificationAction.Wait).notificationId, (action.parentAction as PreservationSpaceNotificationAction.Wait).mode); this.notificationService.showSuccess(MARK_AS_TRANSLATABLE("preservationSpace.notifications.wait.success")); } - private refresh(ctx: StateContext<PreservationSpaceNotificationStateModel>, - notificationId: string, - mode: ViewModeEnum): void { + private removeNotificationPendingListAndRefresh(ctx: StateContext<PreservationSpaceNotificationStateModel>, + notificationId: string, + mode: ViewModeEnum): void { + SessionStorageHelper.removeItemInList(SessionStorageEnum.notificationInboxPending, notificationId); if (mode === ViewModeEnum.detail) { ctx.dispatch(new PreservationSpaceNotificationAction.GetById(notificationId)); } else if (mode === ViewModeEnum.list) { -- GitLab