feat(reviews): AOTY critics/users reviews
This commit is contained in:
parent
e1ce5293e9
commit
153d9b67ac
2 changed files with 24 additions and 0 deletions
|
|
@ -2318,6 +2318,9 @@
|
||||||
<h1 class="title" id="album-detail-title"></h1>
|
<h1 class="title" id="album-detail-title"></h1>
|
||||||
<div class="meta" id="album-detail-meta"></div>
|
<div class="meta" id="album-detail-meta"></div>
|
||||||
<div class="meta" id="album-detail-producer"></div>
|
<div class="meta" id="album-detail-producer"></div>
|
||||||
|
<br>
|
||||||
|
<div class="ratings" id="album-detail-ratings-critics"></div>
|
||||||
|
<div class="ratings" id="album-detail-ratings-users"></div>
|
||||||
<div class="detail-header-actions">
|
<div class="detail-header-actions">
|
||||||
<button id="play-album-btn" class="btn-primary" title="Play Album">
|
<button id="play-album-btn" class="btn-primary" title="Play Album">
|
||||||
<use svg="./images/play.svg" size="20" />
|
<use svg="./images/play.svg" size="20" />
|
||||||
|
|
|
||||||
21
js/ui.js
21
js/ui.js
|
|
@ -3239,6 +3239,8 @@ export class UIRenderer {
|
||||||
const titleEl = document.getElementById('album-detail-title');
|
const titleEl = document.getElementById('album-detail-title');
|
||||||
const metaEl = document.getElementById('album-detail-meta');
|
const metaEl = document.getElementById('album-detail-meta');
|
||||||
const prodEl = document.getElementById('album-detail-producer');
|
const prodEl = document.getElementById('album-detail-producer');
|
||||||
|
const rateCriticsEl = document.getElementById('album-detail-ratings-critics');
|
||||||
|
const rateUsersEl = document.getElementById('album-detail-ratings-users');
|
||||||
const tracklistContainer = document.getElementById('album-detail-tracklist');
|
const tracklistContainer = document.getElementById('album-detail-tracklist');
|
||||||
const playBtn = document.getElementById('play-album-btn');
|
const playBtn = document.getElementById('play-album-btn');
|
||||||
if (playBtn) playBtn.innerHTML = `${SVG_PLAY(20)}<span>Play Album</span>`;
|
if (playBtn) playBtn.innerHTML = `${SVG_PLAY(20)}<span>Play Album</span>`;
|
||||||
|
|
@ -3252,6 +3254,8 @@ export class UIRenderer {
|
||||||
titleEl.innerHTML = '<div class="skeleton" style="height: 48px; width: 300px; max-width: 90%;"></div>';
|
titleEl.innerHTML = '<div class="skeleton" style="height: 48px; width: 300px; max-width: 90%;"></div>';
|
||||||
metaEl.innerHTML = '<div class="skeleton" style="height: 16px; width: 200px; max-width: 80%;"></div>';
|
metaEl.innerHTML = '<div class="skeleton" style="height: 16px; width: 200px; max-width: 80%;"></div>';
|
||||||
prodEl.innerHTML = '<div class="skeleton" style="height: 16px; width: 200px; max-width: 80%;"></div>';
|
prodEl.innerHTML = '<div class="skeleton" style="height: 16px; width: 200px; max-width: 80%;"></div>';
|
||||||
|
rateCriticsEl.innerHTML = '<div class="skeleton" style="height: 16px; width: 200px; max-width: 80%;"></div>';
|
||||||
|
rateUsersEl.innerHTML = '<div class="skeleton" style="height: 16px; width: 200px; max-width: 80%;"></div>';
|
||||||
tracklistContainer.innerHTML = `
|
tracklistContainer.innerHTML = `
|
||||||
<div class="track-list-header">
|
<div class="track-list-header">
|
||||||
<span style="width: 40px; text-align: center;">#</span>
|
<span style="width: 40px; text-align: center;">#</span>
|
||||||
|
|
@ -3362,6 +3366,23 @@ export class UIRenderer {
|
||||||
`By <a href="/artist/${album.artist.id}">${album.artist.name}</a>` +
|
`By <a href="/artist/${album.artist.id}">${album.artist.name}</a>` +
|
||||||
(firstCopyright ? ` • ${firstCopyright}` : '');
|
(firstCopyright ? ` • ${firstCopyright}` : '');
|
||||||
|
|
||||||
|
async function fetchAotyWorker(album, artist) {
|
||||||
|
try {
|
||||||
|
const response = await fetch(
|
||||||
|
`https://aoty-critics.samidy.workers.dev/?artist=${artist}&album=${album}`
|
||||||
|
);
|
||||||
|
const data = await response.json();
|
||||||
|
|
||||||
|
rateCriticsEl.innerHTML = `<a href="${data.url}" style="color: var(--muted-foreground);">Critic Score: <span style="text-decoration: underline;">${data.critic.score}</span>, Based on ${data.critic.count} reviews</a>`;
|
||||||
|
rateUsersEl.innerHTML = `<a href="${data.url}" style="color: var(--muted-foreground);">User Score: <span style="text-decoration: underline;">${data.user.score}</span>, Based on ${data.user.count} reviews</a>`;
|
||||||
|
} catch (e) {
|
||||||
|
rateCriticsEl.innerHTML = `<a style="color: var(--muted-foreground);">Unable to Fetch Critic Score</a>`;
|
||||||
|
rateUsersEl.innerHTML = `<a style="color: var(--muted-foreground);">Unable to Fetch User Score</a>`;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fetchAotyWorker(album.title, album.artist.name);
|
||||||
|
|
||||||
tracklistContainer.innerHTML = `
|
tracklistContainer.innerHTML = `
|
||||||
<div class="track-list-header">
|
<div class="track-list-header">
|
||||||
<span style="width: 40px; text-align: center;">#</span>
|
<span style="width: 40px; text-align: center;">#</span>
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue