import { useState } from 'react'; import { createDocument, friendlyErrorMessage, toAbsoluteUrl } from '../lib/api.js'; import { EXPIRY_OPTIONS, formatExpiryDate, STR } from '../lib/strings.js'; export default function ShareModal({ open, onClose, title, mode, content }) { const [docTitle, setDocTitle] = useState(title); const [expiresIn, setExpiresIn] = useState('7d'); const [loading, setLoading] = useState(false); const [error, setError] = useState(''); const [result, setResult] = useState(null); const [copied, setCopied] = useState(''); if (!open) return null; const handleSubmit = async (event) => { event.preventDefault(); setLoading(true); setError(''); setResult(null); try { const data = await createDocument({ title: docTitle, mode, content, expiresIn, }); setResult({ ...data, viewUrlAbs: toAbsoluteUrl(data.viewUrl), editUrlAbs: toAbsoluteUrl(data.editUrl), }); } catch (err) { setError(friendlyErrorMessage(err)); } finally { setLoading(false); } }; const copyLink = async (url, key) => { try { await navigator.clipboard.writeText(url); setCopied(key); window.setTimeout(() => setCopied(''), 2000); } catch { setError(STR.COPY_FAILED); } }; return (
e.stopPropagation()} >

{STR.SHARE_DOCUMENT}

{!result ? (
{STR.LINK_VALIDITY} {EXPIRY_OPTIONS.map((opt) => ( ))}
{error && (

{error}

)}
) : (

{formatExpiryDate(result.expiresAt)}

)}
); }