diff --git a/frigate/api/event.py b/frigate/api/event.py index 61c1d86c4..13886af13 100644 --- a/frigate/api/event.py +++ b/frigate/api/event.py @@ -1781,9 +1781,8 @@ def create_trigger_embedding( logger.debug( f"Writing thumbnail for trigger with data {body.data} in {camera_name}." ) - except Exception as e: - logger.error(e.with_traceback()) - logger.error( + except Exception: + logger.exception( f"Failed to write thumbnail for trigger with data {body.data} in {camera_name}" ) @@ -1807,8 +1806,8 @@ def create_trigger_embedding( status_code=200, ) - except Exception as e: - logger.error(e.with_traceback()) + except Exception: + logger.exception("Error creating trigger embedding") return JSONResponse( content={ "success": False, @@ -1917,9 +1916,8 @@ def update_trigger_embedding( logger.debug( f"Deleted thumbnail for trigger with data {trigger.data} in {camera_name}." ) - except Exception as e: - logger.error(e.with_traceback()) - logger.error( + except Exception: + logger.exception( f"Failed to delete thumbnail for trigger with data {trigger.data} in {camera_name}" ) @@ -1958,9 +1956,8 @@ def update_trigger_embedding( logger.debug( f"Writing thumbnail for trigger with data {body.data} in {camera_name}." ) - except Exception as e: - logger.error(e.with_traceback()) - logger.error( + except Exception: + logger.exception( f"Failed to write thumbnail for trigger with data {body.data} in {camera_name}" ) @@ -1972,8 +1969,8 @@ def update_trigger_embedding( status_code=200, ) - except Exception as e: - logger.error(e.with_traceback()) + except Exception: + logger.exception("Error updating trigger embedding") return JSONResponse( content={ "success": False, @@ -2033,9 +2030,8 @@ def delete_trigger_embedding( logger.debug( f"Deleted thumbnail for trigger with data {trigger.data} in {camera_name}." ) - except Exception as e: - logger.error(e.with_traceback()) - logger.error( + except Exception: + logger.exception( f"Failed to delete thumbnail for trigger with data {trigger.data} in {camera_name}" ) @@ -2047,8 +2043,8 @@ def delete_trigger_embedding( status_code=200, ) - except Exception as e: - logger.error(e.with_traceback()) + except Exception: + logger.exception("Error deleting trigger embedding") return JSONResponse( content={ "success": False, diff --git a/web/src/components/overlay/ImagePicker.tsx b/web/src/components/overlay/ImagePicker.tsx index eb8f7c09e..2f7c88953 100644 --- a/web/src/components/overlay/ImagePicker.tsx +++ b/web/src/components/overlay/ImagePicker.tsx @@ -171,6 +171,18 @@ export default function ImagePicker({ alt={selectedImage?.label || "Selected image"} className="size-16 rounded object-cover" onLoad={() => handleImageLoad(selectedImageId || "")} + onError={(e) => { + // If trigger thumbnail fails to load, fall back to event thumbnail + if (!selectedImage) { + const target = e.target as HTMLImageElement; + if ( + target.src.includes("clips/triggers") && + selectedImageId + ) { + target.src = `${apiHost}api/events/${selectedImageId}/thumbnail.webp`; + } + } + }} loading="lazy" /> {selectedImageId && !loadedImages.has(selectedImageId) && (