mirror of
https://gitee.com/butubb8/blowfish.git
synced 2025-12-05 14:17:50 +08:00
refactor(repo-card): reduce coupling and indention
This commit is contained in:
@@ -1,36 +1,59 @@
|
||||
function fetchRepo() {
|
||||
const scriptElement = document.currentScript;
|
||||
const repoURL =
|
||||
scriptElement && scriptElement.getAttribute("data-repo-url")
|
||||
? scriptElement.getAttribute("data-repo-url")
|
||||
: (console.error("data-repo-url is null"), null);
|
||||
const repoId =
|
||||
scriptElement && scriptElement.getAttribute("data-repo-id")
|
||||
? scriptElement.getAttribute("data-repo-id")
|
||||
: (console.error("data-repo-id is null"), null);
|
||||
const requestObjects = repoId.startsWith("github")
|
||||
? ["full_name", "description", "stargazers_count", "forks"]
|
||||
: repoId.startsWith("gitlab")
|
||||
? ["name_with_namespace", "description", "star_count", "forks_count"]
|
||||
: ["full_name", "description", "stars_count", "forks_count"];
|
||||
fetch(repoURL, {
|
||||
headers: new Headers({
|
||||
"User-agent": "Mozilla/4.0 Custom User Agent",
|
||||
}),
|
||||
})
|
||||
.then((response) => response.json())
|
||||
.then((data) => {
|
||||
requestObjects.forEach((requestObject) => {
|
||||
let element = document.getElementById(`${repoId}-${requestObject}`);
|
||||
if (requestObject === "stargazers_count" && repoId.startsWith("github")) {
|
||||
element = document.getElementById(`${repoId}-stargazers`);
|
||||
}
|
||||
element
|
||||
? (element.innerHTML = data[requestObject])
|
||||
: (console.error(`Element '${repoId}-${requestObject}' not found`), null);
|
||||
});
|
||||
})
|
||||
.catch((error) => console.error(error));
|
||||
async function fetchRepo() {
|
||||
const script = document.currentScript;
|
||||
const repoURL = script?.getAttribute("data-repo-url");
|
||||
const repoId = script?.getAttribute("data-repo-id");
|
||||
|
||||
if (!repoURL || !repoId) return;
|
||||
|
||||
const platforms = {
|
||||
github: {
|
||||
full_name: "full_name",
|
||||
description: "description",
|
||||
stargazers_count: "stargazers",
|
||||
forks: "forks",
|
||||
},
|
||||
gitlab: {
|
||||
name_with_namespace: "name_with_namespace",
|
||||
description: "description",
|
||||
star_count: "star_count",
|
||||
forks_count: "forks_count",
|
||||
},
|
||||
gitea: {
|
||||
full_name: "full_name",
|
||||
description: "description",
|
||||
stars_count: "stars_count",
|
||||
forks_count: "forks_count",
|
||||
},
|
||||
codeberg: {
|
||||
full_name: "full_name",
|
||||
description: "description",
|
||||
stars_count: "stars_count",
|
||||
forks_count: "forks_count",
|
||||
},
|
||||
forgejo: {
|
||||
full_name: "full_name",
|
||||
description: "description",
|
||||
stars_count: "stars_count",
|
||||
forks_count: "forks_count",
|
||||
},
|
||||
};
|
||||
|
||||
const platform = Object.keys(platforms).find((p) => repoId.startsWith(p)) || "github";
|
||||
const mapping = platforms[platform];
|
||||
|
||||
try {
|
||||
const response = await fetch(repoURL, {
|
||||
headers: { "User-agent": "Mozilla/4.0 Custom User Agent" },
|
||||
});
|
||||
const data = await response.json();
|
||||
|
||||
Object.entries(mapping).forEach(([dataField, elementSuffix]) => {
|
||||
const element = document.getElementById(`${repoId}-${elementSuffix}`);
|
||||
if (element) element.innerHTML = data[dataField];
|
||||
});
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
}
|
||||
}
|
||||
|
||||
fetchRepo();
|
||||
|
||||
Reference in New Issue
Block a user