diff --git a/server/routes/reels.ts b/server/routes/reels.ts index c07a2da..b9ada48 100644 --- a/server/routes/reels.ts +++ b/server/routes/reels.ts @@ -356,7 +356,20 @@ reelsRouter.post('/reels', async (req: Request, res: Response) => { console.log('✅ Reel uploaded to Cloudinary:', cloudinaryResult.originalUrl); - // Créer le post en base + // Create Media record for the processed video + const processedMedia = await storage.createMedia({ + userId: user.id, + type: 'video', + cloudinaryPublicId: cloudinaryResult.publicId, + originalUrl: cloudinaryResult.originalUrl, + facebookFeedUrl: cloudinaryResult.facebookFeedUrl || null, + instagramFeedUrl: cloudinaryResult.instagramFeedUrl || null, + instagramStoryUrl: cloudinaryResult.instagramStoryUrl || null, + fileName: `reel-${Date.now()}.mp4`, + fileSize: videoBuffer.length, + }); + + // Creates post in DB const post = await storage.createPost({ userId: user.id, content: description || overlayText || '', @@ -365,6 +378,9 @@ reelsRouter.post('/reels', async (req: Request, res: Response) => { scheduledFor: scheduledFor ? new Date(scheduledFor) : undefined, }); + // Link media to post + await storage.updatePostMedia(post.id, [processedMedia.id]); + // Publier sur chaque page sélectionnée const results: { pageId: string; success: boolean; reelId?: string; error?: string }[] = []; diff --git a/server/services/facebook.ts b/server/services/facebook.ts index 35bd30f..6c0f627 100644 --- a/server/services/facebook.ts +++ b/server/services/facebook.ts @@ -59,6 +59,18 @@ export class FacebookService { // Return all story IDs joined together return storyIds.join(','); + } else if (postType === 'reel') { + // Publish as Reel + if (mediaList.length === 0) { + throw new Error('Reels require a video'); + } + + const videoMedia = mediaList.find(m => m.type === 'video'); + if (!videoMedia) { + throw new Error('Reels require a video media'); + } + + return await this.publishReel(page, videoMedia.originalUrl, post.content); } else { // Default to feed const imageMedia = mediaList.filter(m => m.type === 'image');