perf: batch artist image loading for library grid view
Replace per-artist sequential GetArtistMBID + GetArtistImageURL calls (2 Wails round-trips × N artists) with a single batch GetArtistImages(names[]) call that: 1. Resolves all names → MBIDs via AllArtistMBIDs() (one DB query) 2. Checks disk cache for each MBID via GetCachedImage (no network) 3. Returns map[name]→dataURL in one Wails bridge round-trip Only returns already-cached images from the disk cache populated by the index build. No network fetches triggered — artists whose images haven't been cached yet keep the initial letter fallback until the index build resolves them in the background. Result: all cached artist images appear simultaneously on first render instead of loading one-by-one over several seconds.
This commit is contained in:
@@ -76,6 +76,16 @@ func NewArtistImageProvider(
|
||||
}
|
||||
}
|
||||
|
||||
// GetCachedImage returns a base64 data URL from the disk cache
|
||||
// only — no network fetches. Returns "" if not cached.
|
||||
func (p *ArtistImageProvider) GetCachedImage(artistMBID string) string {
|
||||
if artistMBID == "" || p.imageDir == "" {
|
||||
return ""
|
||||
}
|
||||
|
||||
return p.readDiskCache(artistMBID)
|
||||
}
|
||||
|
||||
// GetArtistImage returns a base64 data URL for the artist's photo.
|
||||
// Checks disk cache first, then resolves via MB/Wikidata and fetches
|
||||
// the image from Wikimedia Commons. Returns "" if no image.
|
||||
|
||||
Reference in New Issue
Block a user