Add ability to save edited images with overlays to the media library

Implement a new endpoint for uploading edited images, converting them to a JPEG blob using html2canvas, and storing them in Cloudinary.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: ae4037a0-2a6f-4530-9bac-79b543286bda
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/397bca8c-984f-43ff-841a-10897aeb8140/ae4037a0-2a6f-4530-9bac-79b543286bda/VEZwUqa
This commit is contained in:
michaelschal committed 2025-10-11 09:10:37 +00:00
1 parent 986d122528
commit b764cdfc48
4 files changed
+167 -6

No files matched your search

+47
View File
@@ -1171,6 +1171,53 @@ export async function registerRoutes(app: Express): Promise<Server> {
}
});
// Upload edited image with overlays
app.post("/api/media/upload-edited", requireAuth, upload.single("file"), async (req, res) => {
try {
if (!req.file) {
return res.status(400).json({ error: "No file uploaded" });
}
const user = req.user as User;
const userId = user.id;
// Check if Cloudinary is configured
const cloudinaryConfig = await storage.getCloudinaryConfig(userId);
if (!cloudinaryConfig) {
return res.status(400).json({
error: "Cloudinary not configured. Please configure Cloudinary in Settings first."
});
}
// Upload edited image to Cloudinary
const uploadResult = await cloudinaryService.uploadMedia(
req.file.buffer,
`edited_${Date.now()}.jpg`,
userId,
req.file.mimetype
);
const mediaItem = await storage.createMedia({
userId,
type: "image",
cloudinaryPublicId: uploadResult.publicId,
originalUrl: uploadResult.originalUrl,
facebookFeedUrl: uploadResult.facebookFeedUrl,
instagramFeedUrl: uploadResult.instagramFeedUrl,
instagramStoryUrl: uploadResult.instagramStoryUrl,
fileName: `edited_${Date.now()}.jpg`,
fileSize: req.file.size,
});
res.json(mediaItem);
} catch (error) {
console.error("Error uploading edited image:", error);
const errorMessage = error instanceof Error ? error.message : "Failed to upload edited image";
res.status(500).json({ error: errorMessage });
}
});
const httpServer = createServer(app);
return httpServer;