Make caching resilient to missing update status

This commit is contained in:
Sam Becker 2025-08-04 09:59:45 -05:00
parent bde87c2542
commit 0d5038bb56
3 changed files with 11 additions and 11 deletions

View File

@ -529,7 +529,7 @@ export const syncPhotoAction = async (photoId: string, isBatch?: boolean) =>
semanticDescription: aiSemanticDescription,
} = await generateAiImageQueries(
imageResizedBase64,
photo.updateStatus.isMissingAiTextFields,
photo.updateStatus?.isMissingAiTextFields,
undefined,
isBatch,
);

View File

@ -114,7 +114,7 @@ export interface Photo extends Omit<PhotoDb, 'recipeData' | 'colorData'> {
tags: string[]
recipeData?: FujifilmRecipe
colorData?: PhotoColorData
updateStatus: PhotoUpdateStatus
updateStatus?: PhotoUpdateStatus
}
export const parsePhotoFromDb = (photoDbRaw: PhotoDb): Photo => {

View File

@ -63,21 +63,21 @@ export const generatePhotoUpdateStatus = (
});
export const photoNeedsToBeUpdated = (photo: Photo) =>
photo.updateStatus.isOutdated ||
photo.updateStatus.isMissingAiTextFields.length > 0 ||
photo.updateStatus.isMissingColorData;
photo.updateStatus?.isOutdated ||
(photo.updateStatus?.isMissingAiTextFields ?? []).length > 0 ||
photo.updateStatus?.isMissingColorData;
export const isPhotoOnlyMissingColorData = (photo?: Photo) =>
photo?.updateStatus.isMissingColorData &&
photo?.updateStatus?.isMissingColorData &&
!photo?.updateStatus.isOutdated &&
(photo?.updateStatus.isMissingAiTextFields.length ?? 0) === 0;
export const getPhotoUpdateStatusText = (photo: Photo) => {
const {
isOutdated,
isMissingAiTextFields,
isMissingAiTextFields = [],
isMissingColorData,
} = photo.updateStatus;
} = photo.updateStatus ?? {};
const cta = 'sync to update';
if (isOutdated) {
@ -103,13 +103,13 @@ export const getPhotoUpdateStatusText = (photo: Photo) => {
export const getPhotosUpdateStatusCounts = (photos: Photo[]) => {
const photosCountOutdated = photos.filter(
photo => photo.updateStatus.isOutdated,
photo => photo.updateStatus?.isOutdated,
).length;
const photosCountMissingAiText = photos.filter(
photo => photo.updateStatus.isMissingAiTextFields.length > 0,
photo => (photo.updateStatus?.isMissingAiTextFields ?? []).length > 0,
).length;
const photosCountMissingColorData = photos.filter(
photo => photo.updateStatus.isMissingColorData,
photo => photo.updateStatus?.isMissingColorData,
).length;
return {