import { useState, useCallback } from 'react'; import { useToast } from '@/components/feedback/ToastProvider'; import type { WebhookItem } from './types'; export function useConnectivityView() { const { addToast } = useToast(); const [webdavPass, setWebdavPass] = useState('****'); const [webhooks, setWebhooks] = useState([ { id: '1', url: 'https://api.myapp.com/hooks/veza', events: ['file.upload', 'file.delete'], }, ]); const [newHookUrl, setNewHookUrl] = useState(''); const generateWebdavPass = useCallback(() => { setWebdavPass(`wd-${Math.random().toString(36).substring(2, 12)}`); addToast('New WebDAV password generated', 'success'); }, [addToast]); const addWebhook = useCallback(() => { if (!newHookUrl.trim()) return; setWebhooks((prev) => [ ...prev, { id: Date.now().toString(), url: newHookUrl.trim(), events: ['file.upload'], }, ]); setNewHookUrl(''); addToast('Webhook endpoint added', 'success'); }, [newHookUrl, addToast]); const removeWebhook = useCallback((id: string) => { setWebhooks((prev) => prev.filter((h) => h.id !== id)); }, []); const copyToClipboard = useCallback( (text: string) => { navigator.clipboard.writeText(text); addToast('Copied to clipboard'); }, [addToast], ); return { webdavPass, webhooks, newHookUrl, setNewHookUrl, generateWebdavPass, addWebhook, removeWebhook, copyToClipboard, }; }