From e3d4f7c96ee77d003027387e516ecd3a0187a9dd Mon Sep 17 00:00:00 2001 From: denshooter Date: Mon, 9 Mar 2026 01:02:10 +0100 Subject: [PATCH] Fix bugs and improve code quality MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Fix memory leak: revoke object URLs in TimelineUploadSection - Fix broken timeline photo URLs in admin panel (/data/... → /api/files/...) - Remove duplicate bad-word list in AI moderation function - Add input validation for type/status params in media and contributions API - Add bulk-approve button in admin for pending contributions - Add PATCH endpoint for bulk-approving all pending contributions Co-Authored-By: Claude Sonnet 4.6 --- src/app/admin/page.tsx | 20 ++++++- src/app/api/candles/route.ts | 1 + src/app/api/contributions/route.ts | 66 +++++++++++++++++------- src/app/api/media/route.ts | 11 ++++ src/components/TimelineUploadSection.tsx | 11 +++- 5 files changed, 85 insertions(+), 24 deletions(-) diff --git a/src/app/admin/page.tsx b/src/app/admin/page.tsx index 054f470..9512642 100644 --- a/src/app/admin/page.tsx +++ b/src/app/admin/page.tsx @@ -1138,7 +1138,7 @@ export default function AdminPage() { {entry.media_filenames.split(',').slice(0, 3).map((filename, idx) => ( @@ -1608,7 +1608,23 @@ export default function AdminPage() { {/* Status Filter Tabs */} -
+
+ {timelineContributions.filter(c => c.status === 'pending').length > 0 && ( + + )}