fix(recommendations): add retry logic for renderHomeAlbums so they load all the time

This commit is contained in:
Samidy 2026-03-11 04:45:53 +03:00
parent 5794a12128
commit e290410aee

View file

@ -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 albumsContainer = document.getElementById('home-recommended-albums');
const section = albumsContainer?.closest('.content-section'); const section = albumsContainer?.closest('.content-section');
@ -2222,7 +2222,7 @@ export class UIRenderer {
if (albumsContainer) { if (albumsContainer) {
if (forceRefresh || albumsContainer.children.length === 0) { if (forceRefresh || albumsContainer.children.length === 0) {
albumsContainer.innerHTML = this.createSkeletonCards(5); albumsContainer.innerHTML = this.createSkeletonCards(5);
} else if (!albumsContainer.querySelector('.skeleton')) { } else if (!albumsContainer.querySelector('.skeleton') && !forceRefresh) {
return; return;
} }
@ -2245,14 +2245,24 @@ export class UIRenderer {
this.updateLikeState(el, 'album', a.id); 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 { } else {
albumsContainer.innerHTML = `<div style="grid-column: 1/-1; padding: 2rem 0;">${createPlaceholder('Tell us more about what you like so we can recommend albums!')}</div>`; albumsContainer.innerHTML = `<div style="grid-column: 1/-1; padding: 2rem 0;">${createPlaceholder('Tell us more about what you like so we can recommend albums!')}</div>`;
} }
} else if (retryCount < 2) {
await new Promise((resolve) => setTimeout(resolve, 1500));
return this.renderHomeAlbums(forceRefresh, null, retryCount + 1);
} else { } else {
albumsContainer.innerHTML = `<div style="grid-column: 1/-1; padding: 2rem 0;">${createPlaceholder('Tell us more about what you like so we can recommend albums!')}</div>`; albumsContainer.innerHTML = `<div style="grid-column: 1/-1; padding: 2rem 0;">${createPlaceholder('Tell us more about what you like so we can recommend albums!')}</div>`;
} }
} catch (e) { } catch (e) {
console.error(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.'); albumsContainer.innerHTML = createPlaceholder('Failed to load album recommendations.');
} }
} }