diff --git a/src-ui/src/app/components/document-detail/document-detail.component.html b/src-ui/src/app/components/document-detail/document-detail.component.html index b8f1d7571..e5663acfe 100644 --- a/src-ui/src/app/components/document-detail/document-detail.component.html +++ b/src-ui/src/app/components/document-detail/document-detail.component.html @@ -19,12 +19,12 @@ @for (version of document.versions; track version.id) { - @if (selectedVersionId === version.id) { } + + Delete version + - + } diff --git a/src-ui/src/app/components/document-detail/document-detail.component.scss b/src-ui/src/app/components/document-detail/document-detail.component.scss index 3986f2cbc..d59eced42 100644 --- a/src-ui/src/app/components/document-detail/document-detail.component.scss +++ b/src-ui/src/app/components/document-detail/document-detail.component.scss @@ -85,3 +85,9 @@ textarea.rtl { object-position: top; } } + +.version-entry { + border: 0; + background: transparent; + padding: 0; +} diff --git a/src-ui/src/app/components/document-detail/document-detail.component.ts b/src-ui/src/app/components/document-detail/document-detail.component.ts index ea1fa8bcf..f676ea84e 100644 --- a/src-ui/src/app/components/document-detail/document-detail.component.ts +++ b/src-ui/src/app/components/document-detail/document-detail.component.ts @@ -84,6 +84,7 @@ import { getFilenameFromContentDisposition } from 'src/app/utils/http' import { ISODateAdapter } from 'src/app/utils/ngb-iso-date-adapter' import * as UTIF from 'utif' import { DocumentDetailFieldID } from '../admin/settings/settings.component' +import { ConfirmButtonComponent } from '../common/confirm-button/confirm-button.component' import { ConfirmDialogComponent } from '../common/confirm-dialog/confirm-dialog.component' import { PasswordRemovalConfirmDialogComponent } from '../common/confirm-dialog/password-removal-confirm-dialog/password-removal-confirm-dialog.component' import { CustomFieldsDropdownComponent } from '../common/custom-fields-dropdown/custom-fields-dropdown.component' @@ -176,6 +177,7 @@ enum ContentRenderType { TextAreaComponent, RouterModule, PngxPdfViewerComponent, + ConfirmButtonComponent, SlicePipe, ], }) @@ -771,6 +773,24 @@ export class DocumentDetailComponent }) } + deleteVersion(versionId: number) { + const wasSelected = this.selectedVersionId === versionId + this.documentsService + .deleteVersion(this.documentId, versionId) + .pipe(first(), takeUntil(this.unsubscribeNotifier)) + .subscribe({ + next: (result) => { + if (wasSelected && result?.current_version_id) { + this.selectVersion(result.current_version_id) + } + this.openDocumentService.refreshDocument(this.documentId) + }, + error: (error) => { + this.toastService.showError($localize`Error deleting version`, error) + }, + }) + } + get customFieldFormFields(): FormArray { return this.documentForm.get('custom_fields') as FormArray } diff --git a/src-ui/src/app/services/rest/document.service.ts b/src-ui/src/app/services/rest/document.service.ts index 5ed78d771..c0c3c6cba 100644 --- a/src-ui/src/app/services/rest/document.service.ts +++ b/src-ui/src/app/services/rest/document.service.ts @@ -204,6 +204,12 @@ export class DocumentService extends AbstractPaperlessService { ) } + deleteVersion(headDocumentId: number, versionId: number) { + return this.http.delete<{ result: string; current_version_id: number }>( + this.getResourceUrl(headDocumentId, `versions/${versionId}`) + ) + } + getNextAsn(): Observable { return this.http.get(this.getResourceUrl(null, 'next_asn')) }