Files
Tricky-Addon-Update-Target-…/module/webui/scripts/about.js
KOWX712 8d53dde8a1 opt: faster way to download canary link
download nightly html from shell seems to be faster
2025-06-19 12:24:53 +08:00

129 lines
4.5 KiB
JavaScript

import { linkRedirect, basePath, showPrompt } from './main.js';
import { translations } from './language.js';
import { spawn, toast } from './assets/kernelsu.js';
const aboutOverlay = document.getElementById('about-overlay');
const aboutContent = document.querySelector('.about-menu');
const closeAbout = document.getElementById('close-about');
let isDownloading = false;
// Function to show about overlay
document.getElementById("about").addEventListener("click", () => {
// Show about menu
setTimeout(() => {
document.body.classList.add("no-scroll");
aboutOverlay.style.display = 'flex';
setTimeout(() => {
aboutOverlay.style.opacity = '1';
aboutContent.classList.add('open');
}, 10);
}, 80);
});
const hideMenu = () => {
document.body.classList.remove("no-scroll");
aboutOverlay.style.opacity = '0';
aboutContent.classList.remove('open');
setTimeout(() => {
aboutOverlay.style.display = 'none';
}, 200);
};
closeAbout.addEventListener("click", hideMenu);
aboutOverlay.addEventListener('click', (event) => {
if (event.target === aboutOverlay) hideMenu();
});
// Event listener for link redirect
document.getElementById('telegram').addEventListener('click', () => {
linkRedirect('https://t.me/kowchannel');
});
document.getElementById('github').addEventListener('click', () => {
linkRedirect('https://github.com/KOWX712/Tricky-Addon-Update-Target-List');
});
// Update to latest canary verison
document.getElementById('canary').addEventListener('click', () => {
if (isDownloading) return;
isDownloading = true;
showPrompt("prompt_checking_update", true, 10000);
let htmlContent = '';
const link = "https://nightly.link/KOWX712/Tricky-Addon-Update-Target-List/workflows/build/main?preview"
const output = spawn('sh', [`${basePath}/common/get_extra.sh`, '--download', `${link}`],
{ env: { PATH: "$PATH:/data/adb/ap/bin:/data/adb/ksu/bin:/data/adb/magisk" } });
output.stdout.on('data', (data) => {
htmlContent += data;
});
output.on('exit', async (code) => {
if (code === 0) {
const parser = new DOMParser();
const doc = parser.parseFromString(htmlContent, "text/html");
const zipURL = doc.querySelector('a[href$=".zip"]')?.href;
if (zipURL) {
// Extract versionCode
const parts = zipURL.split("-");
const version = parts.length >= 2 ? parts[parts.length - 2] : null;
// Check local version
const output = spawn('sh', [`${basePath}/common/get_extra.sh`, '--check-update', `${version}`], { env: { CANARY: "true" } });
output.on('exit', (code) => {
if (code === 0) {
showPrompt("prompt_no_update");
isDownloading = false;
} else if (code === 1) {
downloadUpdate(zipURL);
}
});
} else {
console.error("No link found.");
}
} else {
console.error("Error fetching ZIP link");
isDownloading = false;
}
});
});
/**
* Funtion to download update
* @param {string} link - link of file to download
* @returns {void}
*/
function downloadUpdate(link) {
showPrompt("prompt_downloading", true, 20000);
const download = spawn('sh', [`${basePath}/common/get_extra.sh`, '--get-update', `${link}`],
{ env: { PATH: "$PATH:/data/adb/ap/bin:/data/adb/ksu/bin:/data/adb/magisk:/data/data/com.termux/files/usr/bin" } });
download.on('exit', (code) => {
if (code === 0) {
installUpdate();
} else {
showPrompt("prompt_download_fail", false);
isDownloading = false;
}
});
}
/**
* Funtion to install update
* @returns {void}
*/
function installUpdate() {
showPrompt("prompt_installing");
const output = spawn('sh', [`${basePath}/common/get_extra.sh`, '--install-update'],
{ env: { PATH: "$PATH:/data/adb/ap/bin:/data/adb/ksu/bin:/data/adb/magisk" } });
output.stderr.on('data', (data) => {
console.error('Error during installation:', data);
});
output.on('exit', (code) => {
if (code === 0) {
showPrompt("prompt_installed");
} else {
showPrompt("prompt_install_fail", false);
}
isDownloading = false;
});
}