feat: Add photo_media_type field to API responses and enhance media handling in frontend

This commit introduces a new `photo_media_type` field in the `PendingLinkageResponse` and `ReportedPhotoResponse` interfaces, allowing differentiation between image and video files. The frontend has been updated to handle video links appropriately, including opening video files directly and displaying video thumbnails. Additionally, the search functionality has been enhanced to exclude videos when searching for "Photos without faces." Documentation has been updated to reflect these changes.
This commit is contained in:
tanyar09
2025-12-02 16:19:02 -05:00
parent e0e5aae2ff
commit 0c212348f6
8 changed files with 135 additions and 54 deletions
+2
View File
@@ -67,6 +67,7 @@ class PendingLinkageResponse(BaseModel):
updated_at: Optional[str] = None
photo_filename: Optional[str] = None
photo_path: Optional[str] = None
photo_media_type: Optional[str] = None
photo_tags: list[str] = Field(default_factory=list)
@@ -221,6 +222,7 @@ def list_pending_linkages(
updated_at=updated_at,
photo_filename=photo.filename if photo else None,
photo_path=photo.path if photo else None,
photo_media_type=photo.media_type if photo else None,
photo_tags=photo_tags_map.get(row.photo_id, []),
)
)
+4
View File
@@ -36,6 +36,7 @@ class ReportedPhotoResponse(BaseModel):
# Photo details from main database
photo_path: Optional[str] = None
photo_filename: Optional[str] = None
photo_media_type: Optional[str] = None
class ReportedPhotosListResponse(BaseModel):
@@ -147,10 +148,12 @@ def list_reported_photos(
# Get photo details from main database
photo_path = None
photo_filename = None
photo_media_type = None
photo = main_db.query(Photo).filter(Photo.id == row.photo_id).first()
if photo:
photo_path = photo.path
photo_filename = photo.filename
photo_media_type = photo.media_type
items.append(ReportedPhotoResponse(
id=row.id,
@@ -166,6 +169,7 @@ def list_reported_photos(
report_comment=row.report_comment,
photo_path=photo_path,
photo_filename=photo_filename,
photo_media_type=photo_media_type,
))
return ReportedPhotosListResponse(items=items, total=len(items))