Fix: disable share link archive switch if archive version doesnt exist

This commit is contained in:
shamoon 2023-12-07 09:34:45 -08:00
parent 5cd17e71e2
commit 9418ca10d5
5 changed files with 24 additions and 5 deletions

View File

@ -38,7 +38,7 @@
<li class="list-group-item pt-3 pb-2"> <li class="list-group-item pt-3 pb-2">
<div class="input-group input-group-sm w-100"> <div class="input-group input-group-sm w-100">
<div class="form-check form-switch ms-auto"> <div class="form-check form-switch ms-auto">
<input class="form-check-input" type="checkbox" role="switch" id="versionSwitch" [(ngModel)]="archiveVersion"> <input class="form-check-input" type="checkbox" role="switch" id="versionSwitch" [disabled]="!hasArchiveVersion" [(ngModel)]="useArchiveVersion">
<label class="form-check-label small" for="versionSwitch" i18n>Share archive version</label> <label class="form-check-label small" for="versionSwitch" i18n>Share archive version</label>
</div> </div>
</div> </div>

View File

@ -19,6 +19,7 @@ import { ToastService } from 'src/app/services/toast.service'
import { environment } from 'src/environments/environment' import { environment } from 'src/environments/environment'
import { ShareLinksDropdownComponent } from './share-links-dropdown.component' import { ShareLinksDropdownComponent } from './share-links-dropdown.component'
import { Clipboard } from '@angular/cdk/clipboard' import { Clipboard } from '@angular/cdk/clipboard'
import { By } from '@angular/platform-browser'
describe('ShareLinksDropdownComponent', () => { describe('ShareLinksDropdownComponent', () => {
let component: ShareLinksDropdownComponent let component: ShareLinksDropdownComponent
@ -97,7 +98,7 @@ describe('ShareLinksDropdownComponent', () => {
const createSpy = jest.spyOn(shareLinkService, 'createLinkForDocument') const createSpy = jest.spyOn(shareLinkService, 'createLinkForDocument')
component.documentId = 99 component.documentId = 99
component.expirationDays = 7 component.expirationDays = 7
component.archiveVersion = false component.useArchiveVersion = false
const expiration = new Date() const expiration = new Date()
expiration.setDate(expiration.getDate() + 7) expiration.setDate(expiration.getDate() + 7)
@ -212,4 +213,16 @@ describe('ShareLinksDropdownComponent', () => {
'http://example.domainwithapiinit.com:1234/subpath/share/123abc123' 'http://example.domainwithapiinit.com:1234/subpath/share/123abc123'
) )
}) })
it('should disable archive switch & option if no archive available', () => {
component.hasArchiveVersion = false
component.ngOnInit()
fixture.detectChanges()
expect(component.useArchiveVersion).toBeFalsy()
expect(
fixture.debugElement.query(By.css("input[type='checkbox']")).attributes[
'ng-reflect-is-disabled'
]
).toBeTruthy()
})
}) })

View File

@ -38,6 +38,9 @@ export class ShareLinksDropdownComponent implements OnInit {
@Input() @Input()
disabled: boolean = false disabled: boolean = false
@Input()
hasArchiveVersion: boolean = true
shareLinks: PaperlessShareLink[] shareLinks: PaperlessShareLink[]
loading: boolean = false loading: boolean = false
@ -46,7 +49,7 @@ export class ShareLinksDropdownComponent implements OnInit {
expirationDays: number = 7 expirationDays: number = 7
archiveVersion: boolean = true useArchiveVersion: boolean = true
constructor( constructor(
private shareLinkService: ShareLinkService, private shareLinkService: ShareLinkService,
@ -56,6 +59,7 @@ export class ShareLinksDropdownComponent implements OnInit {
ngOnInit(): void { ngOnInit(): void {
if (this._documentId !== undefined) this.refresh() if (this._documentId !== undefined) this.refresh()
this.useArchiveVersion = this.hasArchiveVersion
} }
refresh() { refresh() {
@ -132,7 +136,7 @@ export class ShareLinksDropdownComponent implements OnInit {
this.shareLinkService this.shareLinkService
.createLinkForDocument( .createLinkForDocument(
this._documentId, this._documentId,
this.archiveVersion this.useArchiveVersion
? PaperlessFileVersion.Archive ? PaperlessFileVersion.Archive
: PaperlessFileVersion.Original, : PaperlessFileVersion.Original,
expiration expiration

View File

@ -69,7 +69,7 @@
(added)="addField($event)"> (added)="addField($event)">
</pngx-custom-fields-dropdown> </pngx-custom-fields-dropdown>
<pngx-share-links-dropdown [documentId]="documentId" [disabled]="!userIsOwner" *pngxIfPermissions="{ action: PermissionAction.Add, type: PermissionType.ShareLink }"></pngx-share-links-dropdown> <pngx-share-links-dropdown [documentId]="documentId" [hasArchiveVersion]="!!document?.archived_file_name" [disabled]="!userIsOwner" *pngxIfPermissions="{ action: PermissionAction.Add, type: PermissionType.ShareLink }"></pngx-share-links-dropdown>
</pngx-page-header> </pngx-page-header>
<div class="row"> <div class="row">

View File

@ -50,6 +50,8 @@ export interface PaperlessDocument extends ObjectWithPermissions {
original_file_name?: string original_file_name?: string
archived_file_name?: string
download_url?: string download_url?: string
thumbnail_url?: string thumbnail_url?: string