Cover lock not working in metadata picker and editor

This commit is contained in:
aditya.chandel
2025-08-14 11:40:50 -06:00
committed by Aditya Chandel
parent 6d7235731b
commit 77e02ac7f9
3 changed files with 28 additions and 9 deletions

View File

@@ -3,6 +3,7 @@ package com.adityachandel.booklore.util;
import com.adityachandel.booklore.model.MetadataClearFlags;
import com.adityachandel.booklore.model.dto.BookMetadata;
import com.adityachandel.booklore.model.entity.BookMetadataEntity;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -10,10 +11,9 @@ import java.util.*;
import java.util.function.Supplier;
import java.util.stream.Collectors;
@Slf4j
public class MetadataChangeDetector {
private static final Logger log = LoggerFactory.getLogger(MetadataChangeDetector.class);
public static boolean isDifferent(BookMetadata newMeta, BookMetadataEntity existingMeta, MetadataClearFlags clear) {
if (clear == null) return true;
@@ -46,6 +46,12 @@ public class MetadataChangeDetector {
compare(changes, "authors", clear.isAuthors(), newMeta.getAuthors(), toNameSet(existingMeta.getAuthors()), () -> !isTrue(existingMeta.getAuthorsLocked()), newMeta.getAuthorsLocked(), existingMeta.getAuthorsLocked());
compare(changes, "categories", clear.isCategories(), newMeta.getCategories(), toNameSet(existingMeta.getCategories()), () -> !isTrue(existingMeta.getCategoriesLocked()), newMeta.getCategoriesLocked(), existingMeta.getCategoriesLocked());
Boolean coverLockedNew = newMeta.getCoverLocked();
Boolean coverLockedExisting = existingMeta.getCoverLocked();
if (differsLock(coverLockedNew, coverLockedExisting)) {
changes.add("cover lock: [" + isTrue(coverLockedExisting) + "] → [" + isTrue(coverLockedNew) + "]");
}
if (!changes.isEmpty()) {
/*changes.forEach(change -> log.info("Metadata change: {}", change));*/
return true;

View File

@@ -134,7 +134,7 @@ export class MetadataEditorComponent implements OnInit {
seriesNameLocked: new FormControl(false),
seriesNumberLocked: new FormControl(false),
seriesTotalLocked: new FormControl(false),
thumbnailUrlLocked: new FormControl(false),
coverLocked: new FormControl(false),
});
}
@@ -227,7 +227,7 @@ export class MetadataEditorComponent implements OnInit {
seriesNameLocked: metadata.seriesNameLocked ?? false,
seriesNumberLocked: metadata.seriesNumberLocked ?? false,
seriesTotalLocked: metadata.seriesTotalLocked ?? false,
thumbnailUrlLocked: metadata.coverLocked ?? false,
coverLocked: metadata.coverLocked ?? false,
});
const lockableFields: { key: keyof BookMetadata; control: string }[] = [
@@ -256,7 +256,8 @@ export class MetadataEditorComponent implements OnInit {
{key: 'descriptionLocked', control: 'description'},
{key: 'seriesNameLocked', control: 'seriesName'},
{key: 'seriesNumberLocked', control: 'seriesNumber'},
{key: 'seriesTotalLocked', control: 'seriesTotal'}
{key: 'seriesTotalLocked', control: 'seriesTotal'},
{key: 'coverLocked', control: 'thumbnailUrl'},
];
for (const {key, control} of lockableFields) {
@@ -287,6 +288,9 @@ export class MetadataEditorComponent implements OnInit {
}
toggleLock(field: string): void {
if (field === 'thumbnailUrl') {
field = 'cover'
}
const isLocked = this.metadataForm.get(field + 'Locked')?.value;
const updatedLockedState = !isLocked;
this.metadataForm.get(field + 'Locked')?.setValue(updatedLockedState);
@@ -396,7 +400,7 @@ export class MetadataEditorComponent implements OnInit {
seriesNameLocked: form.get('seriesNameLocked')?.value,
seriesNumberLocked: form.get('seriesNumberLocked')?.value,
seriesTotalLocked: form.get('seriesTotalLocked')?.value,
coverLocked: form.get('thumbnailUrlLocked')?.value,
coverLocked: form.get('coverLocked')?.value,
...(shouldLockAllFields !== undefined && {allFieldsLocked: shouldLockAllFields})
};

View File

@@ -144,7 +144,7 @@ export class MetadataPickerComponent implements OnInit {
seriesNameLocked: new FormControl(false),
seriesNumberLocked: new FormControl(false),
seriesTotalLocked: new FormControl(false),
thumbnailUrlLocked: new FormControl(false),
coverLocked: new FormControl(false),
});
}
@@ -221,7 +221,7 @@ export class MetadataPickerComponent implements OnInit {
seriesNameLocked: metadata.seriesNameLocked || false,
seriesNumberLocked: metadata.seriesNumberLocked || false,
seriesTotalLocked: metadata.seriesTotalLocked || false,
thumbnailUrlLocked: metadata.coverLocked || false,
coverLocked: metadata.coverLocked || false,
});
if (metadata.titleLocked) this.metadataForm.get('title')?.disable();
@@ -330,7 +330,7 @@ export class MetadataPickerComponent implements OnInit {
seriesNameLocked: this.metadataForm.get('seriesNameLocked')?.value,
seriesNumberLocked: this.metadataForm.get('seriesNumberLocked')?.value,
seriesTotalLocked: this.metadataForm.get('seriesTotalLocked')?.value,
coverLocked: this.metadataForm.get('thumbnailUrlLocked')?.value,
coverLocked: this.metadataForm.get('coverLocked')?.value,
...(shouldLockAllFields !== undefined && {allFieldsLocked: shouldLockAllFields}),
};
@@ -407,6 +407,9 @@ export class MetadataPickerComponent implements OnInit {
}
toggleLock(field: string): void {
if (field === 'thumbnailUrl') {
field = 'cover'
}
const isLocked = this.metadataForm.get(field + 'Locked')?.value;
const updatedLockedState = !isLocked;
this.metadataForm.get(field + 'Locked')?.setValue(updatedLockedState);
@@ -437,6 +440,9 @@ export class MetadataPickerComponent implements OnInit {
}
copyFetchedToCurrent(field: string): void {
if (field === 'thumbnailUrl') {
field = 'cover';
}
const isLocked = this.metadataForm.get(`${field}Locked`)?.value;
if (isLocked) {
this.messageService.add({
@@ -446,6 +452,9 @@ export class MetadataPickerComponent implements OnInit {
});
return;
}
if (field === 'cover') {
field = 'thumbnailUrl';
}
const value = this.fetchedMetadata[field];
if (value) {
this.metadataForm.get(field)?.setValue(value);