fix(recommendations): add retry logic for renderHomeAlbums so they load all the time
This commit is contained in:
parent
5794a12128
commit
e290410aee
1 changed files with 12 additions and 2 deletions
14
js/ui.js
14
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 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.');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue