diff --git a/managers/telegram_manager.py b/managers/telegram_manager.py index 8a533ab..d4d7c3f 100644 --- a/managers/telegram_manager.py +++ b/managers/telegram_manager.py @@ -117,8 +117,8 @@ class TelegramManager: # Crear botones inline para el primer mensaje del grupo if is_favorite: - keyboard = [ - [ + keyboard = [ + [ InlineKeyboardButton("✅ En favoritos", callback_data=f"already_fav_{article.get_platform()}_{article.get_id()}"), InlineKeyboardButton("🗑️ Quitar", callback_data=f"unfav_{article.get_platform()}_{article.get_id()}") ], @@ -130,9 +130,9 @@ class TelegramManager: keyboard = [ [ InlineKeyboardButton("⭐ Añadir a favoritos", callback_data=f"fav_{article.get_platform()}_{article.get_id()}_{search_name}"), - InlineKeyboardButton("Ir al anuncio", url=f"{article.get_url()}") - ] + InlineKeyboardButton("Ir al anuncio", url=f"{article.get_url()}") ] + ] reply_markup = InlineKeyboardMarkup(keyboard) # Enviar un mensaje adicional con los botones (reply al primer mensaje del grupo) @@ -231,12 +231,12 @@ class TelegramManager: ] ] else: - new_keyboard = [ + new_keyboard = [ [ InlineKeyboardButton("✅ En favoritos", callback_data=f"already_fav_{platform}_{article_id}"), InlineKeyboardButton("🗑️ Quitar", callback_data=f"unfav_{platform}_{article_id}") ] - ] + ] await query.edit_message_reply_markup( reply_markup=InlineKeyboardMarkup(new_keyboard) ) @@ -326,11 +326,11 @@ class TelegramManager: ] ] else: - keyboard = [ + keyboard = [ [ InlineKeyboardButton("⭐ Añadir a favoritos", callback_data=f"fav_{platform}_{article_id}_Unknown") ] - ] + ] await query.edit_message_reply_markup( reply_markup=InlineKeyboardMarkup(keyboard) ) diff --git a/web/frontend/src/views/Articles.vue b/web/frontend/src/views/Articles.vue index 39d7d19..5d0e195 100644 --- a/web/frontend/src/views/Articles.vue +++ b/web/frontend/src/views/Articles.vue @@ -2,21 +2,21 @@
-

Artículos Notificados

-
- - +

Artículos Notificados

+
+ +
@@ -83,21 +83,21 @@
-
- + + :class=" + article.platform === 'wallapop' + ? 'bg-blue-100 text-blue-800' + : 'bg-green-100 text-green-800' + " + > {{ article.platform?.toUpperCase() || 'N/A' }} - + - {{ formatDate(article.notifiedAt) }} - -
+ {{ formatDate(article.notifiedAt) }} + +

{{ article.title || 'Sin título' }} @@ -211,7 +211,7 @@ async function loadArticles(reset = true, silent = false) { } if (!silent) { - loading.value = true; + loading.value = true; } try { @@ -235,7 +235,7 @@ async function loadArticles(reset = true, silent = false) { console.error('Error cargando artículos:', error); } finally { if (!silent) { - loading.value = false; + loading.value = false; } } } diff --git a/web/frontend/src/views/Workers.vue b/web/frontend/src/views/Workers.vue index 0d3acae..c4f038a 100644 --- a/web/frontend/src/views/Workers.vue +++ b/web/frontend/src/views/Workers.vue @@ -524,10 +524,12 @@ function closeGeneralModal() { async function saveWorker() { try { - const updatedWorkers = { ...workers.value }; - if (!updatedWorkers.items) { - updatedWorkers.items = []; - } + const updatedWorkers = { + ...workers.value, + items: [...(workers.value.items || [])], + disabled: [...(workers.value.disabled || [])], + general: workers.value.general || {} + }; const workerData = { name: workerForm.value.name, @@ -567,10 +569,14 @@ async function saveWorker() { async function saveGeneralConfig() { try { - const updatedWorkers = { ...workers.value }; - updatedWorkers.general = { - ...(textToArray(generalForm.value.title_exclude_text).length > 0 && { title_exclude: textToArray(generalForm.value.title_exclude_text) }), - ...(textToArray(generalForm.value.description_exclude_text).length > 0 && { description_exclude: textToArray(generalForm.value.description_exclude_text) }), + const updatedWorkers = { + ...workers.value, + items: workers.value.items || [], + disabled: workers.value.disabled || [], + general: { + ...(textToArray(generalForm.value.title_exclude_text).length > 0 && { title_exclude: textToArray(generalForm.value.title_exclude_text) }), + ...(textToArray(generalForm.value.description_exclude_text).length > 0 && { description_exclude: textToArray(generalForm.value.description_exclude_text) }), + } }; await api.updateWorkers(updatedWorkers); @@ -588,14 +594,17 @@ async function disableWorker(name) { } try { - const updatedWorkers = { ...workers.value }; - if (!updatedWorkers.disabled) { - updatedWorkers.disabled = []; - } + const updatedWorkers = { + ...workers.value, + items: workers.value.items || [], + disabled: [...(workers.value.disabled || [])] + }; + if (!updatedWorkers.disabled.includes(name)) { updatedWorkers.disabled.push(name); } - await api.updateWshowGeneralModalorkers(updatedWorkers); + + await api.updateWorkers(updatedWorkers); await loadWorkers(); } catch (error) { console.error('Error desactivando worker:', error); @@ -605,10 +614,12 @@ async function disableWorker(name) { async function enableWorker(name) { try { - const updatedWorkers = { ...workers.value }; - if (updatedWorkers.disabled) { - updatedWorkers.disabled = updatedWorkers.disabled.filter(n => n !== name); - } + const updatedWorkers = { + ...workers.value, + items: workers.value.items || [], + disabled: [...(workers.value.disabled || [])].filter(n => n !== name) + }; + await api.updateWorkers(updatedWorkers); await loadWorkers(); } catch (error) { @@ -623,11 +634,13 @@ async function deleteWorker(name) { } try { - const updatedWorkers = { ...workers.value }; - updatedWorkers.items = updatedWorkers.items.filter(w => w.name !== name); - if (updatedWorkers.disabled) { - updatedWorkers.disabled = updatedWorkers.disabled.filter(n => n !== name); - } + const updatedWorkers = { + ...workers.value, + items: (workers.value.items || []).filter(w => w.name !== name), + disabled: (workers.value.disabled || []).filter(n => n !== name), + general: workers.value.general || {} + }; + await api.updateWorkers(updatedWorkers); await loadWorkers(); } catch (error) {