import { useState } from 'react' import { useNostr } from '@/providers/NostrProvider' import { useRelayAdmin } from '@/providers/RelayAdminProvider' import relayAdmin from '@/services/relay-admin.service' import { Button } from '@/components/ui/button' import { toast } from 'sonner' export default function ExportTab() { const { pubkey } = useNostr() const { isAdmin, isOwner } = useRelayAdmin() const [isExporting, setIsExporting] = useState(false) const downloadBlob = (blob: Blob, filename: string) => { const url = URL.createObjectURL(blob) const a = document.createElement('a') a.href = url a.download = filename a.click() URL.revokeObjectURL(url) } const exportMyEvents = async () => { if (!pubkey) return setIsExporting(true) try { const blob = await relayAdmin.exportEvents([pubkey]) downloadBlob(blob, `my-events-${Date.now()}.jsonl`) toast.success('Export complete') } catch (e) { toast.error(`Export failed: ${e instanceof Error ? e.message : String(e)}`) } finally { setIsExporting(false) } } const exportAllEvents = async () => { setIsExporting(true) try { const blob = await relayAdmin.exportEvents() downloadBlob(blob, `all-events-${Date.now()}.jsonl`) toast.success('Export complete') } catch (e) { toast.error(`Export failed: ${e instanceof Error ? e.message : String(e)}`) } finally { setIsExporting(false) } } return (
{pubkey && (

Export My Events

Download your personal events as a JSONL file.

)} {(isAdmin || isOwner) && (

Export All Events

Download the complete database as a JSONL file. This includes all events from all users.

)}
) }