"use client"; import { useState } from "react"; import { SettingsSection, SettingsRow, SettingsInput, SettingsToggle } from "../ui"; import { SystemSettings } from "../../types"; import { InlineStatus, StatusType } from "@/components/ui/InlineStatus"; interface AudiobookshelfSectionProps { settings: SystemSettings; onUpdate: (updates: Partial) => void; onTest: (service: string) => Promise<{ success: boolean; version?: string; error?: string }>; isTesting: boolean; } export function AudiobookshelfSection({ settings, onUpdate, onTest, isTesting }: AudiobookshelfSectionProps) { const [testStatus, setTestStatus] = useState("idle"); const [testMessage, setTestMessage] = useState(""); const handleTest = async () => { setTestStatus("loading"); setTestMessage("Testing..."); const result = await onTest("audiobookshelf"); if (result.success) { setTestStatus("success"); setTestMessage(result.version ? `v${result.version}` : "Connected"); } else { setTestStatus("error"); setTestMessage(result.error || "Failed"); } }; return ( onUpdate({ audiobookshelfEnabled: checked })} /> {settings.audiobookshelfEnabled && ( <> onUpdate({ audiobookshelfUrl: v })} placeholder="http://localhost:13378" className="w-64" /> onUpdate({ audiobookshelfApiKey: v })} placeholder="Enter API key" className="w-64" />
setTestStatus("idle")} />
)}
); }