'use client'; import { useCallback, useEffect, useState } from 'react'; import Link from 'next/link'; import { Box, ExternalLink } from 'lucide-react'; import { ArrowLeftIcon } from '@/components/Icons'; import { StorageConfigurationPrompt } from '@/components/StorageConfigurationPrompt'; interface StorageStatus { provider: 'stuffbox' | null; stuffboxAvailable: boolean; stuffboxBaseUrl: string | null; } export default function StorageSettingsPage() { const [status, setStatus] = useState(null); const [error, setError] = useState(''); const [isDisconnecting, setIsDisconnecting] = useState(false); const loadStatus = useCallback(async () => { try { const response = await fetch('/api/storage/configuration', { cache: 'no-store' }); const data = await response.json().catch(() => ({})); if (!response.ok) throw new Error(data.error || 'Unable to load storage settings'); setStatus(data); setError(''); } catch (loadError) { setError(loadError instanceof Error ? loadError.message : 'Unable to load storage settings'); } }, []); useEffect(() => { void loadStatus(); }, [loadStatus]); const disconnectStuffbox = async () => { if (!window.confirm('Disconnect Stuffbox from this Synapsis account? Existing media links will keep working.')) return; setIsDisconnecting(true); setError(''); try { const response = await fetch('/api/storage/stuffbox/disconnect', { method: 'POST' }); const data = await response.json().catch(() => ({})); if (!response.ok) throw new Error(data.error || 'Unable to disconnect Stuffbox'); await loadStatus(); } catch (disconnectError) { setError(disconnectError instanceof Error ? disconnectError.message : 'Unable to disconnect Stuffbox'); } finally { setIsDisconnecting(false); } }; return (

Media Storage

Manage where your account stores uploaded media

Storage belongs to your account rather than this node. That keeps your media available if you move your account elsewhere.

{!status ? 'Loading…' : status.provider === 'stuffbox' ? 'Stuffbox.xyz connected' : 'Stuffbox not connected'}
{status?.provider === 'stuffbox' && (
Manage Storage
)}
{status?.provider !== 'stuffbox' && (

Connect Stuffbox

Connect the official Synapsis storage partner to upload portable media from your account.

{}} variant="inline" />
)} {error &&

{error}

}
); }