import{t as e}from"./dist-DPmmj29U.js";import{u as t}from"./esm-CRVqHnq2.js";import{t as n}from"./useMutation-Du3NQIud.js";import{t as r}from"./useAppContext-ZpOJAKgd.js";import{t as i}from"./useCurrentUser-boOMG5Xx.js";function a(e){let t=new Set;for(let[n,r,i]of e.tags)if(!(n!==`r`||i===`write`||!r))try{let e=new URL(r);e.protocol===`wss:`&&t.add(e.href)}catch{}return[...t]}async function o(e,t,n){if(n.length===0)return;let r=[...new Set(n)].filter(e=>e!==t.pubkey);if(r.length!==0)try{let n=await e.query([{kinds:[10002],authors:r,limit:r.length}],{signal:AbortSignal.timeout(5e3)}),i=new Set;for(let e of n)for(let t of a(e))i.add(t);if(i.size===0)return;let o=[...i].slice(0,10);await e.group(o).event(t,{signal:AbortSignal.timeout(5e3)})}catch{console.warn(`Failed to send event to inbox relays`)}}function s(e){return e===0||e===3?!0:e>=1e4&&e<2e4||e>=3e4&&e<4e4}function c(e,n){if(!n)return[`client`,e];try{let r=t.decode(n);if(r.type!==`naddr`)return[`client`,e];let{kind:i,pubkey:a,identifier:o,relays:s}=r.data,c=`${i}:${a}:${o}`,l=s?.[0];return l?[`client`,e,c,l]:[`client`,e,c]}catch{return[`client`,e]}}function l(){let{nostr:t}=e(),{user:a}=i(),{config:l}=r();return n({mutationFn:async e=>{if(a){let{prev:n,...r}=e,i=[...r.tags??[]];if(!i.some(([e])=>e===`client`)){let e=c(l.clientName??l.appName,l.client);i.push(e)}let u=r.created_at??Math.floor(Date.now()/1e3);if(s(r.kind)&&!i.some(([e])=>e===`published_at`))if(n){let e=n.tags.find(([e])=>e===`published_at`);e&&i.push([`published_at`,e[1]])}else i.push([`published_at`,String(u)]);let d=await a.signer.signEvent({kind:r.kind,content:r.content??``,tags:i,created_at:u});if(d.pubkey!==a.pubkey)throw Error(`Signed event pubkey does not match the currently selected account. Please check your signer configuration.`);if(await t.event(d,{signal:AbortSignal.timeout(5e3)}),d.kind===1||d.kind===1111){let e=d.tags.filter(([e])=>e===`p`||e===`P`).map(([,e])=>e).filter(Boolean);e.length>0&&o(t,d,e).catch(()=>{})}return d}else throw Error(`User is not logged in`)},onError:e=>{console.error(`Failed to publish event:`,e)},onSuccess:e=>{console.log(`Event published successfully:`,e)}})}export{l as t};