From e290410aee97a26b8028431b6139b59c44f29f17 Mon Sep 17 00:00:00 2001 From: Samidy Date: Wed, 11 Mar 2026 04:45:53 +0300 Subject: [PATCH] fix(recommendations): add retry logic for renderHomeAlbums so they load all the time --- js/ui.js | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/js/ui.js b/js/ui.js index 891ff56..99d0b55 100644 --- a/js/ui.js +++ b/js/ui.js @@ -2208,7 +2208,7 @@ export class UIRenderer { } } - async renderHomeAlbums(forceRefresh = false, providedSeeds = null) { + async renderHomeAlbums(forceRefresh = false, providedSeeds = null, retryCount = 0) { const albumsContainer = document.getElementById('home-recommended-albums'); const section = albumsContainer?.closest('.content-section'); @@ -2222,7 +2222,7 @@ export class UIRenderer { if (albumsContainer) { if (forceRefresh || albumsContainer.children.length === 0) { albumsContainer.innerHTML = this.createSkeletonCards(5); - } else if (!albumsContainer.querySelector('.skeleton')) { + } else if (!albumsContainer.querySelector('.skeleton') && !forceRefresh) { return; } @@ -2245,14 +2245,24 @@ export class UIRenderer { this.updateLikeState(el, 'album', a.id); } }); + } else if (retryCount < 2) { + await new Promise((resolve) => setTimeout(resolve, 1500)); + return this.renderHomeAlbums(forceRefresh, null, retryCount + 1); } else { albumsContainer.innerHTML = `
${createPlaceholder('Tell us more about what you like so we can recommend albums!')}
`; } + } else if (retryCount < 2) { + await new Promise((resolve) => setTimeout(resolve, 1500)); + return this.renderHomeAlbums(forceRefresh, null, retryCount + 1); } else { albumsContainer.innerHTML = `
${createPlaceholder('Tell us more about what you like so we can recommend albums!')}
`; } } catch (e) { console.error(e); + if (retryCount < 2) { + await new Promise((resolve) => setTimeout(resolve, 1500)); + return this.renderHomeAlbums(forceRefresh, null, retryCount + 1); + } albumsContainer.innerHTML = createPlaceholder('Failed to load album recommendations.'); } }