From aa4524152544d1ce71cefb6d912b0cedd50bb90a Mon Sep 17 00:00:00 2001 From: renato97 Date: Tue, 4 Nov 2025 04:32:16 +0000 Subject: [PATCH] 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') --- content.js | 41 ++++++++++++++++++++++++++++++++++------- 1 file changed, 34 insertions(+), 7 deletions(-) diff --git a/content.js b/content.js index 78174c2..c9d6ac3 100644 --- a/content.js +++ b/content.js @@ -6,12 +6,21 @@ let selectedMangas = new Set(); let checkboxesAdded = false; + // Map para almacenar metadatos completos de manga por ID + let mangaMetadata = new Map(); // Escuchar mensajes del popup chrome.runtime.onMessage.addListener((request, sender, sendResponse) => { if (request.action === 'getSelectedMangas') { - const selected = Array.from(selectedMangas); - sendResponse({ mangas: selected }); + // Devolver objetos completos en lugar de solo IDs + const selectedObjects = []; + selectedMangas.forEach(id => { + const mangaObj = mangaMetadata.get(id); + if (mangaObj) { + selectedObjects.push(mangaObj); + } + }); + sendResponse({ mangas: selectedObjects }); } else if (request.action === 'clearSelection') { selectedMangas.clear(); updateSelectedCount(); @@ -185,7 +194,24 @@ 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 const container = document.createElement('div'); @@ -210,12 +236,13 @@ checkbox.addEventListener('change', (e) => { e.stopPropagation(); - const match = link.href.match(/\/g\/(\d+)\/([a-f0-9]+)/); - if (match) { + if (mangaId) { if (checkbox.checked) { - selectedMangas.add(match[1]); + selectedMangas.add(mangaId); + console.log(` ☑️ Manga ${mangaId} seleccionado`); } else { - selectedMangas.delete(match[1]); + selectedMangas.delete(mangaId); + console.log(` ☐ Manga ${mangaId} deseleccionado`); } updateSelectedCount(); }