Make originalMetadata optional in case the process dies and it becomes undefined (#855)

Co-authored-by: Aditya Chandel <8075870+adityachandelgit@users.noreply.github.com>
This commit is contained in:
Márk Gulyás
2025-08-10 19:38:01 +02:00
committed by GitHub
parent 43b4e6cb7a
commit 15f1cd7c22
3 changed files with 54 additions and 54 deletions

View File

@@ -27,7 +27,7 @@ import {Textarea} from 'primeng/textarea';
export class BookdropFileMetadataPickerComponent {
@Input() fetchedMetadata!: BookMetadata;
@Input() originalMetadata!: BookMetadata;
@Input() originalMetadata?: BookMetadata;
@Input() metadataForm!: FormGroup;
@Input() copiedFields: Record<string, boolean> = {};
@Input() savedFields: Record<string, boolean> = {};
@@ -127,7 +127,7 @@ export class BookdropFileMetadataPickerComponent {
}
resetField(field: string) {
this.metadataForm.get(field)?.setValue(this.originalMetadata[field]);
this.metadataForm.get(field)?.setValue(this.originalMetadata?.[field]);
this.copiedFields[field] = false;
this.hoveredFields[field] = false;
}

View File

@@ -229,31 +229,31 @@ export class BookdropFileReviewComponent implements OnInit {
Object.values(this.fileUiCache).forEach(fileUi => {
const original = fileUi.file.originalMetadata;
fileUi.metadataForm.patchValue({
title: original.title || null,
subtitle: original.subtitle || null,
authors: [...(original.authors ?? [])].sort(),
categories: [...(original.categories ?? [])].sort(),
publisher: original.publisher || null,
publishedDate: original.publishedDate || null,
isbn10: original.isbn10 ?? null,
isbn13: original.isbn13 ?? null,
description: original.description ?? null,
pageCount: original.pageCount ?? null,
language: original.language ?? null,
asin: original.asin ?? null,
amazonRating: original.amazonRating ?? null,
amazonReviewCount: original.amazonReviewCount ?? null,
goodreadsId: original.goodreadsId ?? null,
goodreadsRating: original.goodreadsRating ?? null,
goodreadsReviewCount: original.goodreadsReviewCount ?? null,
hardcoverId: original.hardcoverId ?? null,
hardcoverRating: original.hardcoverRating ?? null,
hardcoverReviewCount: original.hardcoverReviewCount ?? null,
googleId: original.googleId ?? null,
comicvineId: original.comicvineId ?? null,
seriesName: original.seriesName ?? null,
seriesNumber: original.seriesNumber ?? null,
seriesTotal: original.seriesTotal ?? null,
title: original?.title || null,
subtitle: original?.subtitle || null,
authors: [...(original?.authors ?? [])].sort(),
categories: [...(original?.categories ?? [])].sort(),
publisher: original?.publisher || null,
publishedDate: original?.publishedDate || null,
isbn10: original?.isbn10 ?? null,
isbn13: original?.isbn13 ?? null,
description: original?.description ?? null,
pageCount: original?.pageCount ?? null,
language: original?.language ?? null,
asin: original?.asin ?? null,
amazonRating: original?.amazonRating ?? null,
amazonReviewCount: original?.amazonReviewCount ?? null,
goodreadsId: original?.goodreadsId ?? null,
goodreadsRating: original?.goodreadsRating ?? null,
goodreadsReviewCount: original?.goodreadsReviewCount ?? null,
hardcoverId: original?.hardcoverId ?? null,
hardcoverRating: original?.hardcoverRating ?? null,
hardcoverReviewCount: original?.hardcoverReviewCount ?? null,
googleId: original?.googleId ?? null,
comicvineId: original?.comicvineId ?? null,
seriesName: original?.seriesName ?? null,
seriesNumber: original?.seriesNumber ?? null,
seriesTotal: original?.seriesTotal ?? null,
thumbnailUrl: this.urlHelper.getBookdropCoverUrl(fileUi.file.id),
});
fileUi.copiedFields = {};
@@ -470,33 +470,33 @@ export class BookdropFileReviewComponent implements OnInit {
});
}
private createMetadataForm(original: BookMetadata, bookdropFileId: number): FormGroup {
private createMetadataForm(original: BookMetadata | undefined, bookdropFileId: number): FormGroup {
return new FormGroup({
title: new FormControl(original.title ?? ''),
subtitle: new FormControl(original.subtitle ?? ''),
authors: new FormControl([...(original.authors ?? [])].sort()),
categories: new FormControl([...(original.categories ?? [])].sort()),
publisher: new FormControl(original.publisher ?? ''),
publishedDate: new FormControl(original.publishedDate ?? ''),
isbn10: new FormControl(original.isbn10 ?? ''),
isbn13: new FormControl(original.isbn13 ?? ''),
description: new FormControl(original.description ?? ''),
pageCount: new FormControl(original.pageCount ?? ''),
language: new FormControl(original.language ?? ''),
asin: new FormControl(original.asin ?? ''),
amazonRating: new FormControl(original.amazonRating ?? ''),
amazonReviewCount: new FormControl(original.amazonReviewCount ?? ''),
goodreadsId: new FormControl(original.goodreadsId ?? ''),
goodreadsRating: new FormControl(original.goodreadsRating ?? ''),
goodreadsReviewCount: new FormControl(original.goodreadsReviewCount ?? ''),
hardcoverId: new FormControl(original.hardcoverId ?? ''),
hardcoverRating: new FormControl(original.hardcoverRating ?? ''),
hardcoverReviewCount: new FormControl(original.hardcoverReviewCount ?? ''),
googleId: new FormControl(original.googleId ?? ''),
comicvineId: new FormControl(original.comicvineId ?? ''),
seriesName: new FormControl(original.seriesName ?? ''),
seriesNumber: new FormControl(original.seriesNumber ?? ''),
seriesTotal: new FormControl(original.seriesTotal ?? ''),
title: new FormControl(original?.title ?? ''),
subtitle: new FormControl(original?.subtitle ?? ''),
authors: new FormControl([...(original?.authors ?? [])].sort()),
categories: new FormControl([...(original?.categories ?? [])].sort()),
publisher: new FormControl(original?.publisher ?? ''),
publishedDate: new FormControl(original?.publishedDate ?? ''),
isbn10: new FormControl(original?.isbn10 ?? ''),
isbn13: new FormControl(original?.isbn13 ?? ''),
description: new FormControl(original?.description ?? ''),
pageCount: new FormControl(original?.pageCount ?? ''),
language: new FormControl(original?.language ?? ''),
asin: new FormControl(original?.asin ?? ''),
amazonRating: new FormControl(original?.amazonRating ?? ''),
amazonReviewCount: new FormControl(original?.amazonReviewCount ?? ''),
goodreadsId: new FormControl(original?.goodreadsId ?? ''),
goodreadsRating: new FormControl(original?.goodreadsRating ?? ''),
goodreadsReviewCount: new FormControl(original?.goodreadsReviewCount ?? ''),
hardcoverId: new FormControl(original?.hardcoverId ?? ''),
hardcoverRating: new FormControl(original?.hardcoverRating ?? ''),
hardcoverReviewCount: new FormControl(original?.hardcoverReviewCount ?? ''),
googleId: new FormControl(original?.googleId ?? ''),
comicvineId: new FormControl(original?.comicvineId ?? ''),
seriesName: new FormControl(original?.seriesName ?? ''),
seriesNumber: new FormControl(original?.seriesNumber ?? ''),
seriesTotal: new FormControl(original?.seriesTotal ?? ''),
thumbnailUrl: new FormControl(this.urlHelper.getBookdropCoverUrl(bookdropFileId)),
});
}

View File

@@ -28,7 +28,7 @@ export interface BookdropFile {
fileName: string;
filePath: string;
fileSize: number;
originalMetadata: BookMetadata;
originalMetadata?: BookMetadata;
fetchedMetadata?: BookMetadata;
createdAt: string;
updatedAt: string;