diff --git a/src-ui/src/app/components/document-list/bulk-editor/bulk-editor.component.ts b/src-ui/src/app/components/document-list/bulk-editor/bulk-editor.component.ts index 7ab3ec042..b44ece881 100644 --- a/src-ui/src/app/components/document-list/bulk-editor/bulk-editor.component.ts +++ b/src-ui/src/app/components/document-list/bulk-editor/bulk-editor.component.ts @@ -29,7 +29,9 @@ import { CorrespondentService } from 'src/app/services/rest/correspondent.servic import { CustomFieldsService } from 'src/app/services/rest/custom-fields.service' import { DocumentTypeService } from 'src/app/services/rest/document-type.service' import { + DocumentBulkEditMethod, DocumentService, + MergeDocumentsRequest, SelectionDataItem, } from 'src/app/services/rest/document.service' import { SavedViewService } from 'src/app/services/rest/saved-view.service' @@ -257,7 +259,7 @@ export class BulkEditorComponent private executeBulkOperation( modal: NgbModalRef, - method: string, + method: DocumentBulkEditMethod, args: any, overrideDocumentIDs?: number[] ) { @@ -869,15 +871,15 @@ export class BulkEditorComponent mergeDialog.confirmClicked .pipe(takeUntil(this.unsubscribeNotifier)) .subscribe(() => { - const args = {} + const args: MergeDocumentsRequest = {} if (mergeDialog.metadataDocumentID > -1) { - args['metadata_document_id'] = mergeDialog.metadataDocumentID + args.metadata_document_id = mergeDialog.metadataDocumentID } if (mergeDialog.deleteOriginals) { - args['delete_originals'] = true + args.delete_originals = true } if (mergeDialog.archiveFallback) { - args['archive_fallback'] = true + args.archive_fallback = true } mergeDialog.buttonsEnabled = false this.executeOperation( diff --git a/src-ui/src/app/services/rest/document.service.ts b/src-ui/src/app/services/rest/document.service.ts index 18bfe8f67..ecde41d24 100644 --- a/src-ui/src/app/services/rest/document.service.ts +++ b/src-ui/src/app/services/rest/document.service.ts @@ -42,6 +42,47 @@ export enum BulkEditSourceMode { EXPLICIT_SELECTION = 'explicit_selection', } +export type DocumentBulkEditMethod = + | 'set_correspondent' + | 'set_document_type' + | 'set_storage_path' + | 'add_tag' + | 'remove_tag' + | 'modify_tags' + | 'modify_custom_fields' + | 'delete' + | 'reprocess' + | 'set_permissions' + +export interface MergeDocumentsRequest { + metadata_document_id?: number + delete_originals?: boolean + archive_fallback?: boolean + source_mode?: BulkEditSourceMode +} + +export interface EditPdfOperation { + page: number + rotate?: number + doc?: number +} + +export interface EditPdfDocumentsRequest { + operations: EditPdfOperation[] + delete_original?: boolean + update_document?: boolean + include_metadata?: boolean + source_mode?: BulkEditSourceMode +} + +export interface RemovePasswordDocumentsRequest { + password: string + update_document?: boolean + delete_original?: boolean + include_metadata?: boolean + source_mode?: BulkEditSourceMode +} + @Injectable({ providedIn: 'root', }) @@ -299,7 +340,7 @@ export class DocumentService extends AbstractPaperlessService { return this.http.get(url.toString()) } - bulkEdit(ids: number[], method: string, args: any) { + bulkEdit(ids: number[], method: DocumentBulkEditMethod, args: any) { return this.http.post(this.getResourceUrl(null, 'bulk_edit'), { documents: ids, method: method, @@ -319,24 +360,27 @@ export class DocumentService extends AbstractPaperlessService { }) } - mergeDocuments(ids: number[], args: any = {}) { + mergeDocuments(ids: number[], request: MergeDocumentsRequest = {}) { return this.http.post(this.getResourceUrl(null, 'merge'), { documents: ids, - ...args, + ...request, }) } - editPdfDocuments(ids: number[], args: any) { + editPdfDocuments(ids: number[], request: EditPdfDocumentsRequest) { return this.http.post(this.getResourceUrl(null, 'edit_pdf'), { documents: ids, - ...args, + ...request, }) } - removePasswordDocuments(ids: number[], args: any) { + removePasswordDocuments( + ids: number[], + request: RemovePasswordDocumentsRequest + ) { return this.http.post(this.getResourceUrl(null, 'remove_password'), { documents: ids, - ...args, + ...request, }) }