diff --git a/src-ui/src/app/components/document-list/document-list.component.ts b/src-ui/src/app/components/document-list/document-list.component.ts index 5eb97b08d..f72a92aa9 100644 --- a/src-ui/src/app/components/document-list/document-list.component.ts +++ b/src-ui/src/app/components/document-list/document-list.component.ts @@ -2,8 +2,7 @@ import { Component, OnInit, ViewChild } from '@angular/core'; import { ActivatedRoute, Router } from '@angular/router'; import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; import { Observable } from 'rxjs'; -import { map } from 'rxjs/operators'; -import { FILTER_CORRESPONDENT } from 'src/app/data/filter-rule-type'; +import { tap } from 'rxjs/operators'; import { PaperlessDocument } from 'src/app/data/paperless-document'; import { PaperlessSavedView } from 'src/app/data/paperless-saved-view'; import { DocumentListViewService } from 'src/app/services/document-list-view.service'; @@ -17,6 +16,7 @@ import { FilterEditorComponent } from '../filter-editor/filter-editor.component' import { ConfirmDialogComponent } from '../common/confirm-dialog/confirm-dialog.component'; import { SelectDialogComponent } from '../common/select-dialog/select-dialog.component'; import { SaveViewConfigDialogComponent } from './save-view-config-dialog/save-view-config-dialog.component'; +import { OpenDocumentsService } from 'src/app/services/open-documents.service'; @Component({ selector: 'app-document-list', @@ -35,7 +35,8 @@ export class DocumentListComponent implements OnInit { private correspondentService: CorrespondentService, private documentTypeService: DocumentTypeService, private tagService: TagService, - private documentService: DocumentService) { } + private documentService: DocumentService, + private openDocumentService: OpenDocumentsService) { } @ViewChild("filterEditor") private filterEditor: FilterEditorComponent @@ -131,12 +132,12 @@ export class DocumentListComponent implements OnInit { private executeBulkOperation(method: string, args): Observable { return this.documentService.bulkEdit(Array.from(this.list.selected), method, args).pipe( - map(r => { - + tap(() => { this.list.reload() + this.list.selected.forEach(id => { + this.openDocumentService.refreshDocument(id) + }) this.list.selectNone() - - return r }) ) } diff --git a/src-ui/src/app/services/open-documents.service.ts b/src-ui/src/app/services/open-documents.service.ts index e37f5db8c..c91031f83 100644 --- a/src-ui/src/app/services/open-documents.service.ts +++ b/src-ui/src/app/services/open-documents.service.ts @@ -1,6 +1,7 @@ import { Injectable } from '@angular/core'; import { PaperlessDocument } from '../data/paperless-document'; import { OPEN_DOCUMENT_SERVICE } from '../data/storage-keys'; +import { DocumentService } from './rest/document.service'; @Injectable({ providedIn: 'root' @@ -9,7 +10,7 @@ export class OpenDocumentsService { private MAX_OPEN_DOCUMENTS = 5 - constructor() { + constructor(private documentService: DocumentService) { if (sessionStorage.getItem(OPEN_DOCUMENT_SERVICE.DOCUMENTS)) { try { this.openDocuments = JSON.parse(sessionStorage.getItem(OPEN_DOCUMENT_SERVICE.DOCUMENTS)) @@ -22,6 +23,15 @@ export class OpenDocumentsService { private openDocuments: PaperlessDocument[] = [] + refreshDocument(id: number) { + let index = this.openDocuments.findIndex(doc => doc.id == id) + if (index > -1) { + this.documentService.get(id).subscribe(doc => { + this.openDocuments[index] = doc + }) + } + } + getOpenDocuments(): PaperlessDocument[] { return this.openDocuments }