Files
MyClub/DOCS/GALLERY_ADMIN_FIX.md
Tomáš Dvořák 12cba639b9 upload
2025-10-16 13:32:05 +02:00

3.6 KiB

Gallery Admin Page Fix

Problem

The gallery admin page was showing "Chyba při obnově galerie" (Error refreshing gallery) when clicking the "Obnovit z Zonerama" button. No albums were displayed even though data was visible on the frontpage.

Root Cause

  1. Missing Backend Endpoint: The admin page was calling /api/v1/admin/gallery/refresh which didn't exist in the backend
  2. Single Data Source: The admin page only loaded from zonerama_profile.json, which had albums: null
  3. Cache Data Issues: The Zonerama cache files contained empty/invalid data

Changes Made

Backend Changes

1. Added RefreshFromZonerama Method (internal/controllers/gallery_controller.go)

  • New endpoint handler that:
    • Loads the Zonerama URL from settings database
    • Validates it's a Zonerama URL
    • Triggers services.RefreshZoneramaNow() in a goroutine (non-blocking)
    • Regenerates flat gallery files after successful fetch
    • Returns immediate response to avoid timeout

2. Added Route (internal/routes/routes.go)

  • Registered POST /api/v1/admin/gallery/refresh endpoint
  • Maps to galleryController.RefreshFromZonerama

Frontend Changes

3. Enhanced Admin Page Resilience (frontend/src/pages/admin/GalleryAdminPage.tsx)

  • Modified fetchAlbums() to load from both cache sources:
    • zonerama_profile.json (primary source)
    • zonerama_albums.json (fallback source)
  • Filters out empty albums (albums without ID or title)
  • Avoids duplicates when combining sources
  • Matches the behavior of the frontpage GallerySection.tsx

How It Works Now

  1. Admin clicks "Obnovit z Zonerama":

    • Frontend calls POST /api/v1/admin/gallery/refresh
    • Backend loads Zonerama URL from settings
    • Backend triggers async refresh in background
    • Returns success immediately
  2. Background Refresh Process:

    • Fetches profile from Zonerama API (album metadata)
    • Fetches each individual album with photos
    • Saves to zonerama_albums.json
    • Updates zonerama_profile.json
    • Regenerates gallery.json and zonerama_flat.json
  3. Admin Page Loads Albums:

    • Tries both zonerama_profile.json and zonerama_albums.json
    • Combines and deduplicates results
    • Filters out invalid/empty albums
    • Displays combined album list

Testing

  1. Build the backend:

    go build -o bin/fotbal-club.exe
    

    Compiles successfully

  2. Run the server and test:

    • Navigate to /admin/galerie
    • Click "Obnovit z Zonerama"
    • Should show success message
    • Wait a few seconds and refresh page
    • Albums should appear (if Zonerama API responds correctly)

Configuration Required

Ensure the Zonerama URL is configured in Settings:

  1. Go to Admin → Settings
  2. Set "Gallery URL" to your Zonerama profile URL
    • Example: https://eu.zonerama.com/FKKofolaKrnov/1470757
  3. The URL must contain "zonerama.com"

Known Issues

The current cache files (zonerama_profile.json and zonerama_albums.json) contain empty data, which suggests:

  • The Zonerama external API might be experiencing issues
  • The URL format might have changed
  • Network connectivity issues

The "Refresh" button will trigger a fresh fetch from the Zonerama API, which should resolve this if the API is working correctly.

  • internal/controllers/gallery_controller.go - Gallery endpoints
  • internal/routes/routes.go - Route registration
  • internal/services/prefetch_service.go - Zonerama fetch logic
  • frontend/src/pages/admin/GalleryAdminPage.tsx - Admin UI
  • frontend/src/components/home/GallerySection.tsx - Frontend display