diff --git a/desktop/src/api/local/local.controller.ts b/desktop/src/api/local/local.controller.ts index 76b8094..3c2dad8 100644 --- a/desktop/src/api/local/local.controller.ts +++ b/desktop/src/api/local/local.controller.ts @@ -65,27 +65,6 @@ async function resolveEntryMetadata(entry: any, type: string) { }; } - -export async function getConfig(_request: FastifyRequest, reply: FastifyReply) { - try { - return loadConfig(); - } catch { - return reply.status(500).send({ error: 'FAILED_TO_LOAD_CONFIG' }); - } -} - -export async function setConfig(request: FastifyRequest<{ Body: SetConfigBody }>, reply: FastifyReply) { - try { - const { body } = request; - if (!body || typeof body !== 'object') { - return reply.status(400).send({ error: 'INVALID_BODY' }); - } - return saveConfig(body); - } catch { - return reply.status(500).send({ error: 'FAILED_TO_SAVE_CONFIG' }); - } -} - export async function scanLibrary(request: FastifyRequest<{ Querystring: ScanQuery }>, reply: FastifyReply) { try { const mode = request.query.mode || 'incremental'; diff --git a/desktop/src/api/local/local.routes.ts b/desktop/src/api/local/local.routes.ts index 3cf8eea..5924812 100644 --- a/desktop/src/api/local/local.routes.ts +++ b/desktop/src/api/local/local.routes.ts @@ -2,8 +2,6 @@ import { FastifyInstance } from 'fastify'; import * as controller from './local.controller'; async function localRoutes(fastify: FastifyInstance) { - fastify.get('/library/config', controller.getConfig); - fastify.post('/library/config', controller.setConfig); fastify.post('/library/scan', controller.scanLibrary); fastify.get('/library/:type', controller.listEntries); fastify.get('/library/:type/:id', controller.getEntry); diff --git a/desktop/src/api/local/local.service.ts b/desktop/src/api/local/local.service.ts deleted file mode 100644 index e69de29..0000000 diff --git a/desktop/src/scripts/auth-guard.js b/desktop/src/scripts/auth-guard.js index ae6a220..e0cfd85 100644 --- a/desktop/src/scripts/auth-guard.js +++ b/desktop/src/scripts/auth-guard.js @@ -43,6 +43,43 @@ async function loadMeUI() { } } +// Variable para saber si el modal ya fue cargado +let settingsModalLoaded = false; + +document.getElementById('nav-settings').addEventListener('click', openSettings) + +async function openSettings() { + if (!settingsModalLoaded) { + try { + const res = await fetch('/views/components/settings-modal.html') + const html = await res.text() + document.body.insertAdjacentHTML('beforeend', html) + settingsModalLoaded = true; + + // Esperar un momento para que el DOM se actualice + await new Promise(resolve => setTimeout(resolve, 50)); + + // Ahora cargar los settings + if (window.toggleSettingsModal) { + await window.toggleSettingsModal(false); + } + } catch (err) { + console.error('Error loading settings modal:', err); + } + } else { + if (window.toggleSettingsModal) { + await window.toggleSettingsModal(false); + } + } +} + +function closeSettings() { + const modal = document.getElementById('settings-modal'); + if (modal) { + modal.classList.add('hidden'); + } +} + function setupDropdown() { const userAvatarBtn = document.querySelector(".user-avatar-btn") const navDropdown = document.getElementById("nav-dropdown") diff --git a/desktop/src/scripts/settings.js b/desktop/src/scripts/settings.js new file mode 100644 index 0000000..d1bb295 --- /dev/null +++ b/desktop/src/scripts/settings.js @@ -0,0 +1,218 @@ +const API_BASE = '/api/config'; +let currentConfig = {}; +let activeSection = ''; +let modal, navContainer, formContent, form; + +window.toggleSettingsModal = async (forceClose = false) => { + modal = document.getElementById('settings-modal'); + navContainer = document.getElementById('config-nav'); + formContent = document.getElementById('config-section-content'); + form = document.getElementById('config-form'); + + if (!modal) { + console.error('Modal not found'); + return; + } + + if (forceClose) { + modal.classList.add('hidden'); + } else { + const isHidden = modal.classList.contains('hidden'); + + if (isHidden) { + // Abrir modal + modal.classList.remove('hidden'); + await loadSettings(); + } else { + // Cerrar modal + modal.classList.add('hidden'); + } + } +}; + +async function loadSettings() { + if (!formContent) { + console.error('Form content not found'); + return; + } + + // Mostrar loading + formContent.innerHTML = ` +
Failed to load settings
+${err.message}
+