Fix metadata storage for selected manga

- Added mangaMetadata Map to store full manga objects with title, token, url, baseUrl
- Modified getSelectedMangas to return full manga objects instead of just IDs
- Fixed substring error when downloading selected manga
- Enhanced checkbox creation to save metadata during initialization
- Improved logging for selection/deselection events

Resolves: Error: Cannot read properties of undefined (reading 'substring')
This commit is contained in:
renato97
2025-11-04 04:32:16 +00:00
parent 829996b41e
commit aa45241525

View File

@@ -6,12 +6,21 @@
let selectedMangas = new Set(); let selectedMangas = new Set();
let checkboxesAdded = false; let checkboxesAdded = false;
// Map para almacenar metadatos completos de manga por ID
let mangaMetadata = new Map();
// Escuchar mensajes del popup // Escuchar mensajes del popup
chrome.runtime.onMessage.addListener((request, sender, sendResponse) => { chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
if (request.action === 'getSelectedMangas') { if (request.action === 'getSelectedMangas') {
const selected = Array.from(selectedMangas); // Devolver objetos completos en lugar de solo IDs
sendResponse({ mangas: selected }); const selectedObjects = [];
selectedMangas.forEach(id => {
const mangaObj = mangaMetadata.get(id);
if (mangaObj) {
selectedObjects.push(mangaObj);
}
});
sendResponse({ mangas: selectedObjects });
} else if (request.action === 'clearSelection') { } else if (request.action === 'clearSelection') {
selectedMangas.clear(); selectedMangas.clear();
updateSelectedCount(); updateSelectedCount();
@@ -185,7 +194,24 @@
return; return;
} }
console.log(` 📝 [${index}] Creando checkbox para manga ID: ${match ? match[1] : 'N/A'}`); const mangaId = match ? match[1] : null;
const token = match ? match[2] : null;
const title = link.textContent.trim() || 'Untitled';
console.log(` 📝 [${index}] Creando checkbox para manga ID: ${mangaId}`);
// Guardar metadatos completos en el Map
if (mangaId && token) {
const metadata = {
id: mangaId,
token: token,
title: title,
url: link.href,
baseUrl: `https://e-hentai.org/g/${mangaId}/${token}/`
};
mangaMetadata.set(mangaId, metadata);
console.log(` 💾 Metadatos guardados para ID ${mangaId}: ${title.substring(0, 30)}...`);
}
// Crear checkbox // Crear checkbox
const container = document.createElement('div'); const container = document.createElement('div');
@@ -210,12 +236,13 @@
checkbox.addEventListener('change', (e) => { checkbox.addEventListener('change', (e) => {
e.stopPropagation(); e.stopPropagation();
const match = link.href.match(/\/g\/(\d+)\/([a-f0-9]+)/); if (mangaId) {
if (match) {
if (checkbox.checked) { if (checkbox.checked) {
selectedMangas.add(match[1]); selectedMangas.add(mangaId);
console.log(` ☑️ Manga ${mangaId} seleccionado`);
} else { } else {
selectedMangas.delete(match[1]); selectedMangas.delete(mangaId);
console.log(` ☐ Manga ${mangaId} deseleccionado`);
} }
updateSelectedCount(); updateSelectedCount();
} }