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:
41
content.js
41
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();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user