import { useState } from 'react' import { copyTextChecked } from './CopyableCredential' import { erzeugeVorschauLink, schalteVorschauLinkAb } from '../lib/projectAdminApi' import { vorschauLinkUrl } from '../lib/vorschauLink' // Geheimer Vorschau-Link im Ticket (Details > Projekte): wer den Link hat, sieht die Seite ohne Login. export default function VorschauLinkRow({ project, onChanged = () => {} }) { const [token, setToken] = useState(project.shareToken || '') const [busy, setBusy] = useState(false) const [message, setMessage] = useState('') const url = vorschauLinkUrl({ subdomain: project.subdomain, shareToken: token }) const run = async (action) => { setBusy(true) setMessage('') try { await action() onChanged() } catch (err) { setMessage(err.message || 'Aktion fehlgeschlagen') } finally { setBusy(false) } } const erzeugen = (neu) => { if (neu && !window.confirm('Neuen Link erzeugen? Der bisherige Link funktioniert dann nicht mehr.')) return run(async () => { const r = await erzeugeVorschauLink(project.$id) setToken(r.shareToken || '') setMessage(neu ? 'Neuer Link erzeugt, der alte gilt nicht mehr.' : 'Link erstellt.') }) } const abschalten = () => { if (!window.confirm('Link abschalten? Wer ihn hat, kommt dann nicht mehr auf die Seite.')) return run(async () => { await schalteVorschauLinkAb(project.$id) setToken('') setMessage('Link abgeschaltet.') }) } const kopieren = async () => { try { await copyTextChecked(url) setMessage('Link kopiert.') } catch { setMessage('Kopieren ging nicht – bitte den Link oben markieren und kopieren.') } } return (
Vorschau-Link Ohne Login, nur für wen du ihn teilst
{url ? ( <> e.target.select()} />
Öffnen
) : (
)} {message &&

{message}

}
) }