40 lines
1,007 B
JavaScript
40 lines
1,007 B
JavaScript
(async function () {
|
|
console.log("Starting top_posts");
|
|
const API = window.UPVOTE_API;
|
|
const NUM_BEST = window.NUM_BEST;
|
|
|
|
const res = await fetch(`${API}/posts/best?top=${NUM_BEST}`, {
|
|
credentials: "include",
|
|
});
|
|
|
|
const data = await res.json();
|
|
|
|
const URL = window.location.origin;
|
|
const ul = document.getElementById("top-posts");
|
|
for (post of data) {
|
|
const postUrl = post.slug.replace("posts-", "");
|
|
const pageUrl = `/posts/${postUrl}`;
|
|
|
|
try {
|
|
const pageResponse = await fetch(pageUrl);
|
|
const html = await pageResponse.text();
|
|
const doc = new DOMParser().parseFromString(html, "text/html");
|
|
const title =
|
|
doc.querySelector('meta[property="og:title"]')?.content ||
|
|
doc.title ||
|
|
slug;
|
|
|
|
const li = document.createElement("li");
|
|
|
|
li.innerHTML = `
|
|
<a href="/posts/${postUrl}">
|
|
${title}
|
|
|
|
</a>
|
|
`;
|
|
ul.appendChild(li);
|
|
} catch (err) {
|
|
console.error(err);
|
|
}
|
|
}
|
|
})();
|