You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
1.7 KiB
JavaScript
43 lines
1.7 KiB
JavaScript
async function loadProjects() {
|
|
EL('projects_cont').replaceChildren(EL('projects_cont').lastElementChild);
|
|
|
|
const resp = await fetch("https://raw.githubusercontent.com/GyverLibs/GyverHub-projects/main/projects.txt", { cache: "no-store" });
|
|
let projects = await resp.text();
|
|
projects = projects.split('\n');
|
|
for (const proj of projects) {
|
|
if (!proj) continue;
|
|
const rep = proj.split('https://github.com/')[1];
|
|
if (!rep) continue;
|
|
loadProj(rep);
|
|
}
|
|
}
|
|
async function loadProj(rep) {
|
|
try {
|
|
const manifest = `https://raw.githubusercontent.com/${rep}/main/project.json`;
|
|
const resp = await fetch(manifest, { cache: "no-store" });
|
|
const proj = await resp.json();
|
|
if (!('name' in proj) || !('version' in proj) || !('about' in proj)) return;
|
|
let name = proj.name;
|
|
if (name.length > 30) name = name.slice(0, 30) + '..';
|
|
const ctor = customElements.get('esp-web-install-button');
|
|
const installButton = `
|
|
<esp-web-install-button manifest="${manifest}">
|
|
<button title="${lang.p_install}" class="icon icon_btn_big" style="font-size:15px" slot="activate"></button>
|
|
<span slot="unsupported">${lang.p_not_support}</span>
|
|
<span slot="not-allowed">${lang.p_use_https}</span>
|
|
</esp-web-install-button>
|
|
`;
|
|
EL('projects_cont').innerHTML = `
|
|
<div class="proj">
|
|
<div class="proj_name">
|
|
<a href="${'https://github.com/' + rep}" target="_blank" title="${rep} v${proj.version}">${name}</a>
|
|
${ctor ? installButton : ''}
|
|
</div>
|
|
<div class="proj_about">${proj.about}</div>
|
|
</div>
|
|
` + EL('projects_cont').innerHTML;
|
|
} catch (e) {
|
|
return;
|
|
}
|
|
}
|