Compare commits
3
Commits
b48b218ee8
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8fa3ecebbb | ||
|
|
2501731b52 | ||
|
|
3817a3dbc0 |
+1
-1
@@ -1,3 +1,3 @@
|
|||||||
FROM nginx:1.25-alpine-slim
|
FROM nginx:1.30-alpine-slim
|
||||||
|
|
||||||
COPY src /usr/share/nginx/html
|
COPY src /usr/share/nginx/html
|
||||||
|
|||||||
+16
-1
@@ -7,6 +7,9 @@ const status = document.querySelector("#status");
|
|||||||
const rawResultsWrapper = document.querySelector("#rawResultsWrapper");
|
const rawResultsWrapper = document.querySelector("#rawResultsWrapper");
|
||||||
const rawResults = document.querySelector("#rawResults");
|
const rawResults = document.querySelector("#rawResults");
|
||||||
|
|
||||||
|
// Keep the current request so a newer search can cancel the older one
|
||||||
|
let inflight = null;
|
||||||
|
|
||||||
// Parse URL query parameters
|
// Parse URL query parameters
|
||||||
const urlParams = new URLSearchParams(window.location.search);
|
const urlParams = new URLSearchParams(window.location.search);
|
||||||
const user = urlParams.get('user');
|
const user = urlParams.get('user');
|
||||||
@@ -20,6 +23,9 @@ if (user) {
|
|||||||
function find() {
|
function find() {
|
||||||
let user = gh.value.trim().toLowerCase();
|
let user = gh.value.trim().toLowerCase();
|
||||||
if (user != "") {
|
if (user != "") {
|
||||||
|
// Cancel the previous request so an older slower response can't overwrite a newer one
|
||||||
|
if (inflight) inflight.abort();
|
||||||
|
inflight = new AbortController();
|
||||||
statusUpdate(`Fetching devstats score for '${user}'`, "info");
|
statusUpdate(`Fetching devstats score for '${user}'`, "info");
|
||||||
rawResultsWrapper.classList.add('hidden');
|
rawResultsWrapper.classList.add('hidden');
|
||||||
fetch("https://devstats.cncf.io/api/v1", {
|
fetch("https://devstats.cncf.io/api/v1", {
|
||||||
@@ -30,14 +36,22 @@ function find() {
|
|||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
redirect: "follow",
|
redirect: "follow",
|
||||||
|
signal: inflight.signal,
|
||||||
body: "{\"api\":\"GithubIDContributions\",\"payload\":{\"github_id\":\"" + user + "\"}}",
|
body: "{\"api\":\"GithubIDContributions\",\"payload\":{\"github_id\":\"" + user + "\"}}",
|
||||||
})
|
})
|
||||||
.then(res => res.json())
|
.then(res => {
|
||||||
|
if (!res.ok) throw new Error(`HTTP ${res.status}`);
|
||||||
|
return res.json();
|
||||||
|
})
|
||||||
.then(data => {
|
.then(data => {
|
||||||
statusUpdate("", "info");
|
statusUpdate("", "info");
|
||||||
let score = data.contributions;
|
let score = data.contributions;
|
||||||
if (!score) {
|
if (!score) {
|
||||||
statusUpdate(`Failed to get devstats score for '${user}'.\nEither user doesn't exist or no contributions recorded.`, "error");
|
statusUpdate(`Failed to get devstats score for '${user}'.\nEither user doesn't exist or no contributions recorded.`, "error");
|
||||||
|
result.innerHTML = "";
|
||||||
|
subResult.innerHTML = "";
|
||||||
|
rawResultsWrapper.classList.add('hidden');
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
result.innerHTML = score;
|
result.innerHTML = score;
|
||||||
subResult.innerHTML = `Issues: ${data.issues} | PRs: ${data.prs}`;
|
subResult.innerHTML = `Issues: ${data.issues} | PRs: ${data.prs}`;
|
||||||
@@ -45,6 +59,7 @@ function find() {
|
|||||||
rawResultsWrapper.classList.remove('hidden');
|
rawResultsWrapper.classList.remove('hidden');
|
||||||
})
|
})
|
||||||
.catch(err => {
|
.catch(err => {
|
||||||
|
if (err.name === "AbortError") return; // request was replaced by a newer one
|
||||||
statusUpdate(`Failed to get devstats score for '${user}'`, "error");
|
statusUpdate(`Failed to get devstats score for '${user}'`, "error");
|
||||||
console.log(err);
|
console.log(err);
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user