import type { Event } from 'nostr-tools' import type { Article } from '@/types/nostr' /** * Parse article metadata from Nostr event */ export function parseArticleFromEvent(event: Event): Article | null { try { const content = event.content // Parse article metadata from tags const titleTag = event.tags.find((tag) => tag[0] === 'title') const previewTag = event.tags.find((tag) => tag[0] === 'preview') const zapTag = event.tags.find((tag) => tag[0] === 'zap') const invoiceTag = event.tags.find((tag) => tag[0] === 'invoice') const paymentHashTag = event.tags.find((tag) => tag[0] === 'payment_hash') const title = titleTag?.[1] || 'Untitled' const preview = previewTag?.[1] || content.substring(0, 200) const zapAmount = zapTag ? parseInt(zapTag[1] || '800') : 800 // Extract invoice information from tags const invoice = invoiceTag?.[1] || undefined const paymentHash = paymentHashTag?.[1] || undefined // Split content: preview is in the note, full content is in private message const lines = content.split('\n') const previewContent = preview || lines[0] || content.substring(0, 200) return { id: event.id, pubkey: event.pubkey, title, preview: previewContent, content: '', // Full content will be loaded from private message createdAt: event.created_at, zapAmount, paid: false, invoice, paymentHash, } } catch (e) { console.error('Error parsing article:', e) return null } }