import { useState, useEffect } from 'react'; import { FolderOpen, Users, HardDrive, Wifi, Copy, CheckCheck } from 'lucide-react'; import { fileAPI } from '../services/api'; import { useConfig } from '../contexts/ConfigContext'; function CopyButton({ text }) { const [copied, setCopied] = useState(false); const copy = () => { navigator.clipboard.writeText(text); setCopied(true); setTimeout(() => setCopied(false), 1500); }; return ( ); } function InfoRow({ label, value }) { return (
{label}
{value}
); } function Files() { const { domain = 'cell', service_ips = {}, service_configs = {} } = useConfig(); const filesHost = `files.${domain}`; const webdavHost = `webdav.${domain}`; const filesIp = service_ips.vip_files || '172.20.0.22'; const webdavIp = service_ips.vip_webdav || '172.20.0.24'; const filesCfg = service_configs.files || {}; const webdavPort = filesCfg.port ?? 8080; const filegatorPort = filesCfg.manager_port ?? 8082; const [users, setUsers] = useState([]); const [status, setStatus] = useState(null); const [isLoading, setIsLoading] = useState(true); useEffect(() => { fetchFilesData(); }, []); const fetchFilesData = async () => { try { const [usersResponse, statusResponse] = await Promise.all([ fileAPI.getUsers(), fileAPI.getStatus() ]); setUsers(usersResponse.data); setStatus(statusResponse.data); } catch (error) { console.error('Failed to fetch files data:', error); } finally { setIsLoading(false); } }; if (isLoading) { return (
); } return (

File Storage

FileGator (browser) + WebDAV (native clients)

{/* File Manager */}

Web file manager

Browser-based file manager. Requires VPN.

{/* WebDAV */}

WebDAV (mount as drive)

Mount in macOS Finder, Windows Explorer, or any WebDAV client.

{/* OS quick guide */}

Mount as network drive

macOS (Finder)

Go → Connect to Server → http://{webdavHost}

Windows

Map Network Drive → \\{webdavHost}\DavWWWRoot or use http://{webdavHost} in "Connect to a Web Site"

iOS (Files app)

Files → ... → Connect to Server → http://{webdavHost}

Android

Use Solid Explorer or FX File Explorer → Add cloud → WebDAV → http://{webdavHost}

{/* Status */}

Service Status

{status ? (
FileGator: Running
WebDAV: Running
) : (

Status unavailable

)}
{/* Users */} {users.length > 0 && (

Storage Users

{users.map((user, index) => (
{user.username} {user.storage_used || '0'} MB
))}
)}
); } export default Files;