mirror of
https://github.com/Dvorinka/MyClubServer.git
synced 2026-06-04 02:32:57 +00:00
upload
This commit is contained in:
@@ -0,0 +1,96 @@
|
||||
# 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**:
|
||||
```bash
|
||||
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.
|
||||
|
||||
## Related Files
|
||||
|
||||
- `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
|
||||
Reference in New Issue
Block a user