import type { NostrEvent } from "./type-definitions.ts"; export async function render(container: HTMLElement): Promise { container.innerHTML = `

📝 Publish a Note

`; const textarea = container.querySelector("#noteContent")!; const publishBtn = container.querySelector("#publishBtn")!; const status = container.querySelector("#status")!; const charCount = container.querySelector("#charCount")!; textarea.oninput = (): void => { const length: number = textarea.value.length; charCount.textContent = `${length}/280`; publishBtn.disabled = length === 0 || length > 280; }; publishBtn.onclick = async (e): Promise => { const content: string = textarea.value.trim(); if (!content) return; publishBtn.disabled = true; publishBtn.textContent = "Publishing..."; status.innerHTML = ''; try { const unsignedEvent: NostrEvent = { kind: 1, // Text note content: content, tags: [["client", "arxlet-publisher"]], created_at: Math.floor(Date.now() / 1000), pubkey: await window.eve.publicKey, }; const signedEvent: NostrEvent = await window.eve.signEvent(unsignedEvent); await window.eve.publish(signedEvent); status.innerHTML = `
✅ Note published successfully!
`; textarea.value = ""; textarea.oninput?.(e); } catch (error: unknown) { const errorMessage = error instanceof Error ? error.message : "Unknown error"; console.error("Publishing failed:", error); status.innerHTML = `
❌ Failed to publish: ${errorMessage}
`; } finally { publishBtn.disabled = false; publishBtn.textContent = "Publish Note"; } }; }