fix the scroll and "page" logic
All checks were successful
Code quality checks / biome (push) Successful in 9s
All checks were successful
Code quality checks / biome (push) Successful in 9s
This commit is contained in:
parent
453a79a4e4
commit
dbdb59f48b
1 changed files with 9 additions and 8 deletions
|
@ -11,7 +11,8 @@ let badgesLoaded = false;
|
||||||
let readmeLoaded = false;
|
let readmeLoaded = false;
|
||||||
let cssLoaded = false;
|
let cssLoaded = false;
|
||||||
|
|
||||||
let currentReviewPage = 1;
|
const reviewsPerPage = 50;
|
||||||
|
let currentReviewOffset = 0;
|
||||||
let hasMoreReviews = true;
|
let hasMoreReviews = true;
|
||||||
let isLoadingReviews = false;
|
let isLoadingReviews = false;
|
||||||
|
|
||||||
|
@ -127,7 +128,7 @@ function resolveActivityImage(img, applicationId) {
|
||||||
return `https://cdn.discordapp.com/app-assets/${applicationId}/${img}.png`;
|
return `https://cdn.discordapp.com/app-assets/${applicationId}/${img}.png`;
|
||||||
}
|
}
|
||||||
|
|
||||||
async function populateReviews(userId, page = 1) {
|
async function populateReviews(userId) {
|
||||||
if (!reviewURL || !userId || isLoadingReviews || !hasMoreReviews) return;
|
if (!reviewURL || !userId || isLoadingReviews || !hasMoreReviews) return;
|
||||||
const reviewSection = document.querySelector(".reviews");
|
const reviewSection = document.querySelector(".reviews");
|
||||||
const reviewList = reviewSection?.querySelector(".reviews-list");
|
const reviewList = reviewSection?.querySelector(".reviews-list");
|
||||||
|
@ -136,7 +137,7 @@ async function populateReviews(userId, page = 1) {
|
||||||
isLoadingReviews = true;
|
isLoadingReviews = true;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const url = `${reviewURL}/users/${userId}/reviews?page=${page}`;
|
const url = `${reviewURL}/users/${userId}/reviews?flags=2&offset=${currentReviewOffset}`;
|
||||||
const res = await fetch(url);
|
const res = await fetch(url);
|
||||||
const data = await res.json();
|
const data = await res.json();
|
||||||
|
|
||||||
|
@ -147,7 +148,6 @@ async function populateReviews(userId, page = 1) {
|
||||||
}
|
}
|
||||||
|
|
||||||
const reviewsHTML = data.reviews
|
const reviewsHTML = data.reviews
|
||||||
.slice(1)
|
|
||||||
.map((review) => {
|
.map((review) => {
|
||||||
const sender = review.sender;
|
const sender = review.sender;
|
||||||
const username = sender.username;
|
const username = sender.username;
|
||||||
|
@ -187,7 +187,7 @@ async function populateReviews(userId, page = 1) {
|
||||||
})
|
})
|
||||||
.join("");
|
.join("");
|
||||||
|
|
||||||
if (page === 1) reviewList.innerHTML = reviewsHTML;
|
if (currentReviewOffset === 0) reviewList.innerHTML = reviewsHTML;
|
||||||
else reviewList.insertAdjacentHTML("beforeend", reviewsHTML);
|
else reviewList.insertAdjacentHTML("beforeend", reviewsHTML);
|
||||||
|
|
||||||
reviewSection.classList.remove("hidden");
|
reviewSection.classList.remove("hidden");
|
||||||
|
@ -208,8 +208,9 @@ function setupReviewScrollObserver(userId) {
|
||||||
|
|
||||||
const observer = new IntersectionObserver(
|
const observer = new IntersectionObserver(
|
||||||
(entries) => {
|
(entries) => {
|
||||||
if (entries[0].isIntersecting && hasMoreReviews) {
|
if (entries[0].isIntersecting && hasMoreReviews && !isLoadingReviews) {
|
||||||
populateReviews(userId, currentReviewPage + 1);
|
currentReviewOffset += reviewsPerPage;
|
||||||
|
populateReviews(userId);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -569,7 +570,7 @@ async function updatePresence(initialData) {
|
||||||
|
|
||||||
updateClanBadge(data);
|
updateClanBadge(data);
|
||||||
if (kv.reviews !== "false") {
|
if (kv.reviews !== "false") {
|
||||||
populateReviews(userId, 1);
|
populateReviews(userId);
|
||||||
setupReviewScrollObserver(userId);
|
setupReviewScrollObserver(userId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue