import{r as e}from"./rolldown-runtime-hePW80VL.js";import{di as t}from"./lucide-icons-6JcOMNkr.js";import{a as n,s as r,x as i}from"./useAuthor-K0SVHIbr.js";import{t as a}from"./useAppContext-DVsgK-HT.js";import{t as o}from"./storageKey-Hu6452Ya.js";import{t as s}from"./useCurrentUser-CgUH2vq7.js";import{t as c}from"./fetchFreshEvent-CXox1SyJ.js";import{t as l}from"./useNostrPublish-D4pB8G4O.js";var u=e(t(),1);function d(e,t){try{let n=localStorage.getItem(e);if(!n)return;let r=JSON.parse(n);return r.pubkey!==t||!Array.isArray(r.pubkeys)?void 0:{event:null,pubkeys:r.pubkeys}}catch{return}}function f(e,t,n){try{localStorage.setItem(e,JSON.stringify({pubkey:t,pubkeys:n}))}catch{}}function p(){let{nostr:e}=n(),{user:t}=s(),{config:i}=a(),c=o(i.appId,`followListCache`);return r({queryKey:[`follow-list`,t?.pubkey??``],queryFn:async({signal:n})=>{if(!t)return{event:null,pubkeys:[]};let[r]=await e.query([{kinds:[3],authors:[t.pubkey],limit:1}],{signal:AbortSignal.any([n,AbortSignal.timeout(5e3)])});if(!r)return{event:null,pubkeys:[]};let i=r.tags.filter(([e])=>e===`p`).map(([,e])=>e);return f(c,t.pubkey,i),{event:r,pubkeys:i}},enabled:!!t,staleTime:3e5,placeholderData:t?d(c,t.pubkey):void 0})}function m(){let{nostr:e}=n(),{user:t}=s(),{mutateAsync:r}=l(),a=i(),[o,d]=(0,u.useState)(!1),f=(0,u.useCallback)(async()=>{if(!t)throw Error(`Not logged in`);let n=await c(e,{kinds:[3],authors:[t.pubkey]});if(n)return n;let r=a.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,a]),p=(0,u.useCallback)(async(e,n)=>{if(!t)throw Error(`Not logged in`);d(!0);try{let t=await f(),i=t?.tags??[],o=i.filter(([e])=>e===`p`),s=i.filter(([e])=>e!==`p`),c;c=n===`follow`?o.some(([,t])=>t===e)?o:[...o,[`p`,e]]:o.filter(([,t])=>t!==e);let l=[...s,...c],u=t?.content??``;await r({kind:3,content:u,tags:l,prev:t??void 0}),a.invalidateQueries({queryKey:[`follow-list`]}),a.invalidateQueries({queryKey:[`feed`]}),a.invalidateQueries({queryKey:[`following-feed`]})}finally{d(!1)}},[f,t,r,a]);return{isPending:o,follow:(0,u.useCallback)(e=>p(e,`follow`),[p]),unfollow:(0,u.useCallback)(e=>p(e,`unfollow`),[p]),followMany:(0,u.useCallback)(async e=>{if(!t)throw Error(`Not logged in`);d(!0);try{let n=await f(),i=n?.tags??[],o=i.filter(([e])=>e===`p`),s=i.filter(([e])=>e!==`p`),c=new Set(o.map(([,e])=>e)),l=new Set,u=[];for(let n of e)!n||n===t.pubkey||c.has(n)||l.has(n)||(l.add(n),u.push([`p`,n]));if(u.length===0)return 0;let d=[...s,...o,...u],p=await r({kind:3,content:n?.content??``,tags:d,prev:n??void 0}),m=d.filter(([e])=>e===`p`).map(([,e])=>e);return a.setQueryData([`follow-list`,t.pubkey],{event:p,pubkeys:m}),a.invalidateQueries({queryKey:[`follow-list`]}),a.invalidateQueries({queryKey:[`feed`]}),a.invalidateQueries({queryKey:[`following-feed`]}),u.length}finally{d(!1)}},[f,t,r,a])}}export{p as n,m as t};