"use client"; import { useState, useEffect, useRef } from "react"; import { Loader2, Network, Trash2 } from "lucide-react"; import { useRouter } from "next/navigation"; import { storageService } from "@/lib/services/storage.service"; import { AuthError } from "@/types/auth"; interface ErrorMessage { message: string; } export default function SettingsPage() { const router = useRouter(); const formRef = useRef(null); const [isLoading, setIsLoading] = useState(false); const [isCacheClearing, setIsCacheClearing] = useState(false); const [error, setError] = useState(null); const [success, setSuccess] = useState(null); const [config, setConfig] = useState({ serverUrl: "", username: "", password: "", }); useEffect(() => { // Charger la configuration existante const savedConfig = storageService.getCredentials(); if (savedConfig) { setConfig({ serverUrl: savedConfig.serverUrl, username: savedConfig.credentials?.username || "", password: savedConfig.credentials?.password || "", }); } }, []); const handleClearCache = async () => { setIsCacheClearing(true); setError(null); setSuccess(null); try { const response = await fetch("/api/komga/cache/clear", { method: "POST", }); if (!response.ok) { const data = await response.json(); throw new Error(data.error || "Erreur lors de la suppression du cache"); } setSuccess("Cache serveur supprimé avec succès"); router.refresh(); // Rafraîchir la page pour recharger les données } catch (error) { console.error("Erreur:", error); setError({ code: "CACHE_CLEAR_ERROR", message: error instanceof Error ? error.message : "Une erreur est survenue", }); } finally { setIsCacheClearing(false); } }; const handleTest = async () => { setIsLoading(true); setError(null); setSuccess(null); try { const response = await fetch("/api/komga/test", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ serverUrl: config.serverUrl, username: config.username, password: config.password, }), }); if (!response.ok) { const data = await response.json(); throw new Error(data.error || "Erreur lors du test de connexion"); } setSuccess("Connexion réussie"); } catch (error) { console.error("Erreur:", error); setError({ code: "TEST_CONNECTION_ERROR", message: error instanceof Error ? error.message : "Une erreur est survenue", }); } finally { setIsLoading(false); } }; const handleSave = (event: React.FormEvent) => { event.preventDefault(); setSuccess(null); const formData = new FormData(event.currentTarget); const serverUrl = formData.get("serverUrl") as string; const username = formData.get("username") as string; const password = formData.get("password") as string; const newConfig = { serverUrl: serverUrl.trim(), username, password, }; storageService.setCredentials( { serverUrl: newConfig.serverUrl, credentials: { username: newConfig.username, password: newConfig.password }, }, true ); setConfig(newConfig); setSuccess("Configuration sauvegardée avec succès"); }; return (

Préférences

{/* Section Configuration Komga */}

Configuration Komga

Configurez les informations de connexion à votre serveur Komga. Ces informations sont nécessaires pour accéder à votre bibliothèque.

{/* Formulaire de configuration */}

L'adresse de votre serveur Komga, par exemple : https://komga.votredomaine.com

Votre identifiant de connexion au serveur Komga

Votre mot de passe de connexion au serveur Komga

{/* Actions */}

Actions

Outils de gestion de la connexion et du cache

Vérifie que la connexion au serveur est fonctionnelle avec les paramètres actuels

Vide le cache du serveur pour forcer le rechargement des données. Utile en cas de problème d'affichage.

{/* Messages de succès/erreur */} {error && (

{error.message}

)} {success && (

{success}

)}
); }