fix(media-manager): resolve video preview issues and stabilize tests

- Backend (MediaService):
    - Implemented robust contentUrl generation for Drive files using drive.google.com/uc pattern.
    - Added mimeType exposure to unified media state.

- Frontend (MediaManager):
    - Replaced video tag with iframe embedding the Google Drive Preview player (/preview) for reliable playback.
    - Fixed syntax error in console logging causing UI freeze.
    - Updated gallery card logic to prioritize video content URLs.

- Tests (Integration):
    - Refactored mediaManager.integration.test.ts to align with new logic.
    - Mocked DriveApp completely to support orphan adoption flows.
    - Updated file renaming expectations to support timestamped filenames.

- Documentation:
    - Updated MEMORY.md with video preview strategy.
This commit is contained in:
Ben Miller
2025-12-28 15:51:56 -07:00
parent dadcccb7f9
commit 243f7057b7
7 changed files with 74 additions and 21 deletions

View File

@ -128,8 +128,12 @@ export class MediaService {
source: match ? 'synced' : 'drive_only',
thumbnail: `data:image/jpeg;base64,${Utilities.base64Encode(d.file.getThumbnail().getBytes())}`,
status: 'active',
galleryOrder: d.galleryOrder
galleryOrder: d.galleryOrder,
mimeType: d.file.getMimeType(),
// Use manual download URL construction which is often more reliable for authenticated sessions than getDownloadUrl()
contentUrl: `https://drive.google.com/uc?export=download&id=${d.file.getId()}`
})
// console.log(`[MediaService] File ${d.file.getName()} (${d.file.getId()}): Mime=${d.file.getMimeType()}, ContentUrl=https://drive.google.com/uc?export=download&id=${d.file.getId()}`)
})
// Find Shopify Orphans

View File

@ -50,6 +50,8 @@ export class MockDriveService implements IDriveService {
getUrl: () => `https://mock.drive/files/${blob.getName()}`,
getLastUpdated: () => new Date(),
getThumbnail: () => ({ getBytes: () => [] }),
getMimeType: () => (blob as any).getContentType ? (blob as any).getContentType() : "image/jpeg",
getDownloadUrl: () => `https://drive.google.com/uc?export=download&id=${id}`,
getAppProperty: (key) => {
return (newFile as any)._properties?.[key]
}