import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{ki as t}from"./lucide-icons-BjbcRgLk.js";import{t as n}from"./dist-DPmmj29U.js";import{h as r,t as i}from"./useQuery-CQCUTxAw.js";import{t as a}from"./fetchFreshEvent-Kkz3MzZN.js";import{f as o,p as s,t as c}from"./useCurrentUser-boOMG5Xx.js";import{t as l}from"./useNostrPublish-D1pQ9KV-.js";import{t as u}from"./nostrId-DcIQ4FCD.js";var d=e(t(),1),f=8e3;async function p(e,t,n,r={}){let{signal:i,timeout:a=f}=r,o=i?AbortSignal.any([i,AbortSignal.timeout(a)]):AbortSignal.timeout(a),s={kinds:[3],authors:[n],limit:1},[c]=await e.query([s],{signal:o});if(c){t.event(c);let e=await m(t,n);return e&&e.created_at>c.created_at?e:c}return m(t,n)}async function m(e,t){let[n]=await e.query([{kinds:[3],authors:[t]}]);return n??null}function h(e){return e?e.tags.filter(([e])=>e===`p`).map(([,e])=>e).filter(u):[]}function g(){let{nostr:e}=n(),{user:t}=c(),{store:r}=s();return o({queryKey:t?[`follow-list`,t.pubkey]:void 0,filter:{kinds:[3],authors:t?[t.pubkey]:[]},toData:e=>({event:e,pubkeys:h(e)}),getEvent:e=>e.event??void 0}),i({queryKey:[`follow-list`,t?.pubkey??``],queryFn:async({signal:n})=>{if(!t)return{event:null,pubkeys:[]};let i=await p(e,r,t.pubkey,{signal:n,timeout:5e3});return{event:i,pubkeys:h(i)}},enabled:!!t,staleTime:300*1e3})}function _(){let{nostr:e}=n(),{user:t}=c(),{mutateAsync:i}=l(),o=r(),{store:u}=s(),[f,p]=(0,d.useState)(!1),m=(0,d.useCallback)(async()=>{if(!t)throw Error(`Not logged in`);let n=await a(e,{kinds:[3],authors:[t.pubkey]},{store:u});if(n)return n;let r=o.getQueryData([`follow-list`,t.pubkey]);if(r?.event)return r.event;if(r&&r.pubkeys.length>0)throw Error(`Your follow list is still loading. Please try again in a moment.`);return null},[e,t,o,u]),g=(0,d.useCallback)(async(e,n)=>{if(!t)throw Error(`Not logged in`);p(!0);try{let r=await m(),a=r?.tags??[],s=a.filter(([e])=>e===`p`),c=a.filter(([e])=>e!==`p`),l;l=n===`follow`?s.some(([,t])=>t===e)?s:[...s,[`p`,e]]:s.filter(([,t])=>t!==e);let d=[...c,...l],f=r?.content??``,p=await i({kind:3,content:f,tags:d,prev:r??void 0});u.event(p),o.setQueryData([`follow-list`,t.pubkey],{event:p,pubkeys:h(p)}),o.invalidateQueries({queryKey:[`follow-list`]})}finally{p(!1)}},[m,t,i,o,u]);return{isPending:f,follow:(0,d.useCallback)(e=>g(e,`follow`),[g]),unfollow:(0,d.useCallback)(e=>g(e,`unfollow`),[g]),followMany:(0,d.useCallback)(async e=>{if(!t)throw Error(`Not logged in`);p(!0);try{let n=await m(),r=n?.tags??[],a=r.filter(([e])=>e===`p`),s=r.filter(([e])=>e!==`p`),c=new Set(a.map(([,e])=>e)),l=new Set,d=[];for(let n of e)!n||n===t.pubkey||c.has(n)||l.has(n)||(l.add(n),d.push([`p`,n]));if(d.length===0)return 0;let f=await i({kind:3,content:n?.content??``,tags:[...s,...a,...d],prev:n??void 0});return u.event(f),o.setQueryData([`follow-list`,t.pubkey],{event:f,pubkeys:h(f)}),o.invalidateQueries({queryKey:[`follow-list`]}),d.length}finally{p(!1)}},[m,t,i,o,u])}}export{p as i,g as n,h as r,_ as t};