Signed-off-by: ale <ale@manalejandro.com>
Este commit está contenido en:
ale
2026-02-08 22:16:18 +01:00
padre 12b4c0ebd7
commit 54807b9982
Se han modificado 14 ficheros con 2326 adiciones y 72 borrados

Ver fichero

@@ -1,51 +1,107 @@
"use strict";
(function () {
var Cu = Components.utils;
let dbname = "ca-archive-19030501.sqlite";
// Compatibilidad con Chrome y Firefox
const browserAPI = typeof browser !== "undefined" ? browser : chrome;
Cu.import("chrome://ca-archive/content/db.js");
if (!DB.openDB(dbname, document)) {
(async function () {
const dbname = "ca-archive-19030501.sqlite";
// Cargar el módulo de base de datos
// NOTA: Los scripts deben cargarse en el HTML antes de este script
// o usar import dinámico
// Inicializar la base de datos (ahora es asíncrono)
const dbOpened = await DB.openDB(dbname, document);
if (!dbOpened) {
console.error("Failed to open database");
return;
}
/*
caa:addon/{slug|id}/versions[?page=[#ver]]
caa:addon/{slug|id}/{eula|privacy|license/lid}
caa:addon/{slug|id}
caa:list[/category][?{tag|q}=][?sort=][?page=]
caa:[search-query]
*/
/*
Rutas soportadas (usando hash):
#addon/{slug|id}/versions[?page=[#ver]]
#addon/{slug|id}/{eula|privacy|license/lid}
#addon/{slug|id}
#list[/category][?{tag|q}=][?sort=][?page=]
#about
#{search-query}
*/
try {
let params, url = decodeURI(document.location);
if ((params = /^caa:addon\/(.+?)\/versions\/?(\?page=(\d+)(#.+)?)?$/.exec(url)) !== null) {
Cu.import("chrome://ca-archive/content/versions.js");
Versions.showPage(document, DB.db, params[1], params[3]);
} else if ((params = /^caa:addon\/(.+?)\/(eula|privacy|license\/(.+))$/.exec(url)) !== null) {
Cu.import("chrome://ca-archive/content/epl.js");
EPL.showPage(document, DB.db, params[1], params[2], params[3]);
} else if ((params = /^caa:addon\/(.+?)\/?$/.exec(url)) !== null) {
Cu.import("chrome://ca-archive/content/addon.js");
Addon.showPage(document, DB.db, params[1]);
} else if ((params = /^caa:list(\/([a-z-]+))?(\?tag=(.+?)|\?q=(.+?))?([\?|\&]sort=(\w+))?\&?(page=(\d+))?$/.exec(url)) !== null) {
Cu.import("chrome://ca-archive/content/list.js");
List.showPage(document, DB.db, params[2], params[4], params[5], params[7], params[9]);
} else if (url == "caa:") {
Cu.import("chrome://ca-archive/content/tcloud.js");
TCloud.showPage(document, DB.db);
} else if (url == "caa:about") {
Cu.import("chrome://ca-archive/content/about.js");
About.showPage(document, DB.db);
} else if ((params = /^caa:(.+)$/.exec(url)) !== null) {
Cu.import("chrome://ca-archive/content/list.js");
List.showPage(document, DB.db, undefined, undefined, params[1], undefined, undefined);
} else {
document.location = "caa:list";
// Función para manejar la navegación
async function handleNavigation() {
try {
// Obtener la URL del hash
let hash = window.location.hash.substring(1); // Remover el '#'
if (!hash) {
hash = "list"; // Por defecto mostrar listado
}
let params;
const url = decodeURI(hash);
if ((params = /^addon\/(.+?)\/versions\/?(\?page=(\d+)(#.+)?)?$/.exec(url)) !== null) {
// Cargar dinámicamente el módulo de versiones si no está cargado
if (typeof Versions === "undefined") {
await loadScript("versions.js");
}
Versions.showPage(document, DB.db, params[1], params[3]);
} else if ((params = /^addon\/(.+?)\/(eula|privacy|license\/(.+))$/.exec(url)) !== null) {
if (typeof EPL === "undefined") {
await loadScript("epl.js");
}
EPL.showPage(document, DB.db, params[1], params[2], params[3]);
} else if ((params = /^addon\/(.+?)\/?$/.exec(url)) !== null) {
if (typeof Addon === "undefined") {
await loadScript("addon.js");
}
Addon.showPage(document, DB.db, params[1]);
} else if ((params = /^list(\/([a-z-]+))?(\?tag=(.+?)|\?q=(.+?))?([\?|\&]sort=(\w+))?\&?(page=(\d+))?$/.exec(url)) !== null) {
if (typeof List === "undefined") {
await loadScript("list.js");
}
List.showPage(document, DB.db, params[2], params[4], params[5], params[7], params[9]);
} else if (url === "" || url === "list") {
if (typeof TCloud === "undefined") {
await loadScript("tcloud.js");
}
TCloud.showPage(document, DB.db);
} else if (url === "about") {
if (typeof About === "undefined") {
await loadScript("about.js");
}
About.showPage(document, DB.db);
} else {
// Búsqueda genérica
if (typeof List === "undefined") {
await loadScript("list.js");
}
List.showPage(document, DB.db, undefined, undefined, url, undefined, undefined);
}
} catch (e) {
console.error("Navigation error:", e);
}
} catch (e) {
Cu.reportError(e);
}
DB.closeDB();
// Función auxiliar para cargar scripts dinámicamente
function loadScript(filename) {
return new Promise((resolve, reject) => {
const script = document.createElement("script");
script.src = filename;
script.onload = () => resolve();
script.onerror = () => reject(new Error(`Failed to load script: ${filename}`));
document.head.appendChild(script);
});
}
// Manejar el cambio de hash
window.addEventListener("hashchange", handleNavigation);
// Inicializar la navegación inicial
await handleNavigation();
// Cerrar la base de datos cuando se cierre la página
window.addEventListener("beforeunload", () => {
DB.closeDB();
});
})();