fix: uploads and contributions display
- Remove duplicate FamilyUploadSection (PhotoUploadSection already handles this) - Fix contributions POST: don't require content for timeline/media types - Save all fields (year, month, day, location, media_filenames) in contributions INSERT - Add user-uploaded photos from contributions to public photo gallery - Fix PhotoUploadSection to include title in submission Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
+23
-7
@@ -11,7 +11,6 @@ import TimelineSection from '@/components/TimelineSection'
|
||||
import TimelineUploadSection from '@/components/TimelineUploadSection'
|
||||
import MemoryUploadSection from '@/components/MemoryUploadSection'
|
||||
import PhotoUploadSection from '@/components/PhotoUploadSection'
|
||||
import FamilyUploadSection from '@/components/FamilyUploadSection'
|
||||
import RecipeSection from '@/components/RecipeSection'
|
||||
import RecipeUploadSection from '@/components/RecipeUploadSection'
|
||||
|
||||
@@ -123,7 +122,7 @@ export default async function HomePage() {
|
||||
|
||||
// Create virtual MediaItem entries for timeline photos
|
||||
const timelinePhotos: MediaItem[] = Array.from(timelinePhotoFilenames).map((filename, i) => ({
|
||||
id: 999000 + i, // High ID to avoid conflicts
|
||||
id: 999000 + i,
|
||||
filename,
|
||||
original_name: null,
|
||||
type: 'photo' as const,
|
||||
@@ -133,8 +132,28 @@ export default async function HomePage() {
|
||||
created_at: new Date().toISOString(),
|
||||
}))
|
||||
|
||||
// Merge with existing photos
|
||||
const allPhotos = [...photos, ...timelinePhotos]
|
||||
// Fetch approved media contributions (user-uploaded photos)
|
||||
let mediaContribPhotos: MediaItem[] = []
|
||||
try {
|
||||
const mediaContribs = plain(
|
||||
db.prepare("SELECT id, media_filenames, name, created_at FROM contributions WHERE status = 'approved' AND media_filenames IS NOT NULL AND media_filenames != ''").all()
|
||||
)
|
||||
mediaContribPhotos = mediaContribs.flatMap((c: any) =>
|
||||
c.media_filenames.split(',').filter(Boolean).map((filename: string, i: number) => ({
|
||||
id: 998000 + c.id * 10 + i,
|
||||
filename: filename.trim(),
|
||||
original_name: null,
|
||||
type: 'photo' as const,
|
||||
caption: `Von ${c.name || 'Anonym'}`,
|
||||
sort_order: 9998,
|
||||
status: 'approved' as const,
|
||||
created_at: c.created_at,
|
||||
}))
|
||||
)
|
||||
} catch {}
|
||||
|
||||
// Merge all photos
|
||||
const allPhotos = [...photos, ...timelinePhotos, ...mediaContribPhotos]
|
||||
|
||||
const recipes = plain<Recipe>(
|
||||
db.prepare('SELECT * FROM recipes ORDER BY sort_order, title').all()
|
||||
@@ -218,9 +237,6 @@ export default async function HomePage() {
|
||||
{/* Photo Upload */}
|
||||
<PhotoUploadSection />
|
||||
|
||||
{/* Family Upload */}
|
||||
<FamilyUploadSection />
|
||||
|
||||
{/* Memories */}
|
||||
<section id="erinnerungen">
|
||||
<MemorySection memories={combinedMemories} />
|
||||
|
||||
Reference in New Issue
Block a user