From f4a71b9b889f65996beea772a4d96674e41d2942 Mon Sep 17 00:00:00 2001 From: Timo Bejan Date: Fri, 13 Aug 2021 13:12:11 +0300 Subject: [PATCH] refactor state updates --- ...dossier-overview-bulk-actions.component.ts | 6 ++- .../file-actions/file-actions.component.ts | 18 +++------ ...sign-reviewer-approver-dialog.component.ts | 5 --- .../dossier/services/file-action.service.ts | 38 ++++++++++--------- .../red-ui/src/app/state/app-state.service.ts | 2 + 5 files changed, 33 insertions(+), 36 deletions(-) diff --git a/apps/red-ui/src/app/modules/dossier/components/bulk-actions/dossier-overview-bulk-actions.component.ts b/apps/red-ui/src/app/modules/dossier/components/bulk-actions/dossier-overview-bulk-actions.component.ts index 8a99f5303..8a787f7c8 100644 --- a/apps/red-ui/src/app/modules/dossier/components/bulk-actions/dossier-overview-bulk-actions.component.ts +++ b/apps/red-ui/src/app/modules/dossier/components/bulk-actions/dossier-overview-bulk-actions.component.ts @@ -182,7 +182,11 @@ export class DossierOverviewBulkActionsComponent { } assignToMe() { - this._performBulkAction(from(this._fileActionService.assignToMe(this.selectedFiles))); + this._fileActionService.assignToMe(this.selectedFiles).then(() => { + this._loadingService.start(); + this.reload.emit(); + this._loadingService.stop(); + }); } assign() { diff --git a/apps/red-ui/src/app/modules/dossier/components/file-actions/file-actions.component.ts b/apps/red-ui/src/app/modules/dossier/components/file-actions/file-actions.component.ts index dc36af45a..cf4f45588 100644 --- a/apps/red-ui/src/app/modules/dossier/components/file-actions/file-actions.component.ts +++ b/apps/red-ui/src/app/modules/dossier/components/file-actions/file-actions.component.ts @@ -88,14 +88,12 @@ export class FileActionsComponent extends AutoUnsubscribe implements OnInit, OnD ngOnInit(): void { if (this.fileStatus) { this.screen = 'dossier-overview'; - this._setup(); - return; + } else { + this.fileStatus = this.appStateService.activeFile; + this.screen = 'file-preview'; } - this.fileStatus = this.appStateService.activeFile; - this.screen = 'file-preview'; this._setup(); - this.addSubscription = this.appStateService.fileChanged$ .pipe(filter(file => file.fileId === this.fileStatus?.fileId)) .subscribe(fileStatus => { @@ -155,13 +153,7 @@ export class FileActionsComponent extends AutoUnsubscribe implements OnInit, OnD setFileUnderApproval($event: MouseEvent) { if (this.appStateService.activeDossier.approverIds.length > 1) { - this._fileActionService.assignFile( - 'approver', - $event, - this.fileStatus, - () => this.actionPerformed.emit('assign-reviewer'), - true - ); + this._fileActionService.assignFile('approver', $event, this.fileStatus, () => this.reloadDossiers('assign-reviewer'), true); } else { this.addSubscription = this._fileActionService.setFileUnderApproval(this.fileStatus).subscribe(() => { this.reloadDossiers('set-under-approval'); @@ -188,7 +180,7 @@ export class FileActionsComponent extends AutoUnsubscribe implements OnInit, OnD 'reviewer', $event, this.fileStatus, - () => this.actionPerformed.emit('assign-reviewer'), + () => this.reloadDossiers('assign-reviewer'), ignoreDialogChanges ); } diff --git a/apps/red-ui/src/app/modules/dossier/dialogs/assign-reviewer-approver-dialog/assign-reviewer-approver-dialog.component.ts b/apps/red-ui/src/app/modules/dossier/dialogs/assign-reviewer-approver-dialog/assign-reviewer-approver-dialog.component.ts index 3eeb90183..55ba06aff 100644 --- a/apps/red-ui/src/app/modules/dossier/dialogs/assign-reviewer-approver-dialog/assign-reviewer-approver-dialog.component.ts +++ b/apps/red-ui/src/app/modules/dossier/dialogs/assign-reviewer-approver-dialog/assign-reviewer-approver-dialog.component.ts @@ -84,11 +84,6 @@ export class AssignReviewerApproverDialogComponent { ) .toPromise(); } - - for (const file of this.data.files) { - file.currentReviewer = selectedUser; - file.reviewerName = this.userService.getNameForId(selectedUser); - } } catch (error) { this._toaster.error('Failed: ' + error.error ? error.error.message : error); } diff --git a/apps/red-ui/src/app/modules/dossier/services/file-action.service.ts b/apps/red-ui/src/app/modules/dossier/services/file-action.service.ts index 1741957ad..0189094e3 100644 --- a/apps/red-ui/src/app/modules/dossier/services/file-action.service.ts +++ b/apps/red-ui/src/app/modules/dossier/services/file-action.service.ts @@ -43,22 +43,28 @@ export class FileActionService { } async assignToMe(fileStatus?: FileStatusWrapper | FileStatusWrapper[], callback?: Function) { - if (!isArray(fileStatus)) { - fileStatus = [fileStatus]; - } + return new Promise((resolve, reject) => { + if (!isArray(fileStatus)) { + fileStatus = [fileStatus]; + } - const atLeastOneFileHasReviewer = fileStatus.reduce((acc, fs) => acc || !!fs.currentReviewer, false); - if (atLeastOneFileHasReviewer) { - const data = new ConfirmationDialogInput({ - title: _('confirmation-dialog.assign-file-to-me.title'), - question: _('confirmation-dialog.assign-file-to-me.question') - }); - this._dialogService.openDialog('confirm', null, data, async () => { - await this._assignReviewerToCurrentUser(fileStatus, callback); - }); - } else { - await this._assignReviewerToCurrentUser(fileStatus, callback); - } + const atLeastOneFileHasReviewer = fileStatus.reduce((acc, fs) => acc || !!fs.currentReviewer, false); + if (atLeastOneFileHasReviewer) { + const data = new ConfirmationDialogInput({ + title: _('confirmation-dialog.assign-file-to-me.title'), + question: _('confirmation-dialog.assign-file-to-me.question') + }); + this._dialogService.openDialog('confirm', null, data, () => { + this._assignReviewerToCurrentUser(fileStatus, callback) + .then(() => resolve()) + .catch(() => reject()); + }); + } else { + this._assignReviewerToCurrentUser(fileStatus, callback) + .then(() => resolve()) + .catch(() => reject()); + } + }); } setFileUnderApproval(fileStatus: FileStatusWrapper | FileStatusWrapper[], approverId?: string) { @@ -111,7 +117,6 @@ export class FileActionService { const files = file ? [file] : [this._appStateService.activeFile]; const data = { mode, files, ignoreChanged }; this._dialogService.openDialog('assignFile', $event, data, async () => { - await this._appStateService.reloadActiveDossierFiles(); if (callback) { callback(); } @@ -129,7 +134,6 @@ export class FileActionService { this._userService.currentUser.id ) .toPromise(); - await this._appStateService.reloadActiveDossierFiles(); if (callback) { await callback(); } diff --git a/apps/red-ui/src/app/state/app-state.service.ts b/apps/red-ui/src/app/state/app-state.service.ts index c6de22a62..26eefa813 100644 --- a/apps/red-ui/src/app/state/app-state.service.ts +++ b/apps/red-ui/src/app/state/app-state.service.ts @@ -681,6 +681,8 @@ export class AppStateService { this._userService.getNameForId(file.currentReviewer), this._appState.fileAttributesConfig[dossier.dossierTemplateId] ); + fileStatusWrapper.lastOpened = + fileStatusWrapper.fileId === this._userPreferenceService.getLastOpenedFileForDossier(dossier.dossierId); if (JSON.stringify(oldFile) !== JSON.stringify(fileStatusWrapper)) { fileStatusChangedEvent.push(fileStatusWrapper); }