mirror of
https://github.com/Dvorinka/MyClubServer.git
synced 2026-06-04 02:32:57 +00:00
97 lines
3.6 KiB
Markdown
97 lines
3.6 KiB
Markdown
# 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
|