"use client" import { useEffect, useState } from "react" import { useRouter } from "next/navigation" import { api } from "@/lib/api" import { Header } from "@/components/Header" import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card" import { Button } from "@/components/ui/button" import { AlertCircle, RefreshCw } from "lucide-react" export default function FileSharingPage() { const router = useRouter() const [activeTab, setActiveTab] = useState<"samba" | "nfs">("samba") const [loading, setLoading] = useState(true) const [saving, setSaving] = useState(false) const [error, setError] = useState(null) const [success, setSuccess] = useState(null) // Samba state const [sambaConfig, setSambaConfig] = useState("") const [sambaConfigOriginal, setSambaConfigOriginal] = useState("") const [sambaEditing, setSambaEditing] = useState(false) // NFS state const [nfsConfig, setNfsConfig] = useState("") const [nfsConfigOriginal, setNfsConfigOriginal] = useState("") const [nfsEditing, setNfsEditing] = useState(false) useEffect(() => { const token = localStorage.getItem("access_token") if (!token) { router.push("/login") return } loadConfigs() }, [router]) const loadConfigs = async () => { try { setLoading(true) setError(null) const [samba, nfs] = await Promise.all([ api.getSambaGlobalConfig().catch(() => ({})), api.getNfsGlobalConfig().catch(() => ({ exports: "" })), ]) const sambaStr = typeof samba === "object" ? JSON.stringify(samba, null, 2) : String(samba) const nfsStr = nfs?.exports || "" setSambaConfig(sambaStr) setSambaConfigOriginal(sambaStr) setNfsConfig(nfsStr) setNfsConfigOriginal(nfsStr) } catch (err) { setError(err instanceof Error ? err.message : "Failed to load configurations") } finally { setLoading(false) } } const handleSambaSave = async () => { try { setSaving(true) setError(null) setSuccess(null) await api.setSambaGlobalConfig(sambaConfig) setSambaConfigOriginal(sambaConfig) setSambaEditing(false) setSuccess("Samba configuration saved successfully") setTimeout(() => setSuccess(null), 3000) } catch (err) { setError(err instanceof Error ? err.message : "Failed to save Samba configuration") } finally { setSaving(false) } } const handleNfsSave = async () => { try { setSaving(true) setError(null) setSuccess(null) await api.setNfsGlobalConfig(nfsConfig) setNfsConfigOriginal(nfsConfig) setNfsEditing(false) setSuccess("NFS configuration saved successfully") setTimeout(() => setSuccess(null), 3000) } catch (err) { setError(err instanceof Error ? err.message : "Failed to save NFS configuration") } finally { setSaving(false) } } return (

File Sharing Configuration

Manage Samba (SMB) and NFS global settings

{/* Error Alert */} {error && (
{error}
)} {/* Success Alert */} {success && (
✓ {success}
)} {/* Tabs */}
{/* Samba Tab */} {activeTab === "samba" && ( Samba Global Configuration
{sambaEditing && ( )} {sambaEditing ? ( ) : ( )}
{sambaEditing ? (