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 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();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user