import{c as M,u as c}from"./vendor-query-CD5rVjAu.js";import{u as h,r as P}from"./vendor-react-C0ZmnAiH.js";import{u as D,a as x,c as V,b as $,d as j,r as L,e as N,v as _,s as z,f as G,g as H,h as v,i as J,j as O,k as W,l as X}from"./user_service-B8fIxLrp.js";import{y as Y,F as y,s as Z}from"./index-ccpu5IUx.js";import{u as ee}from"./vendor-utils-DwtcRXMR.js";const ae=()=>{const[d,n]=ee(Z),i=h(),U=M(),t=Y({navigate:i,setState:n}),k=d.session.disk.sessionToken,m=P.useRef(d);P.useEffect(()=>{m.current=d},[d]);const b=()=>y({queryKey:["users","all"],queryFn:async()=>{var s;const e=await H(t);if(e){const r=m.current,u=(s=r.user.disk.currentUser)==null?void 0:s.username,a=e.find(o=>o.username===u);n({user:{mem:{users:{...r.user.mem.users,...e.reduce((o,A)=>(o[A.username]=A,o),{})}},disk:{currentUser:a??r.user.disk.currentUser}}})}return e},navigate:i,setState:n}),E=e=>y({queryKey:["user","byUsername",e],queryFn:async()=>{var r;const s=await v(t,e);if(s){const u=m.current,a=((r=u.user.disk.currentUser)==null?void 0:r.username)===s.username;n({user:{mem:{users:{...u.user.mem.users,[s.username]:s}},disk:{currentUser:a?s:u.user.disk.currentUser}}})}return s},options:{enabled:!!e},navigate:i,setState:n}),T=(e,s={})=>y({queryKey:["user","byUID",e],queryFn:async()=>{var u;if(!e)throw new Error("UID is required");const r=await J(t,e);if(r){const a=m.current,o=((u=a.user.disk.currentUser)==null?void 0:u.uid)===r.uid;n({user:{mem:{usersByUID:{...a.user.mem.usersByUID,[r.uid]:r}},disk:{currentUser:o?r:a.user.disk.currentUser}}})}return r},options:{enabled:!!e,...s},navigate:i,setState:n}),Q=()=>y({queryKey:["user","current"],queryFn:async()=>{const e=await v(t,void 0);return e&&n({user:{disk:{currentUser:e}}}),e},options:{enabled:!!k},navigate:i,setState:n}),R=e=>y({queryKey:["user","feed",e],queryFn:async()=>{const s=await O(t);return s&&n({user:{mem:{feeds:{...d.user.mem.feeds,[e]:s}}}}),s},options:{enabled:!!k&&!!e},navigate:i,setState:n}),S=e=>y({queryKey:["user","tokens",e],queryFn:async()=>{if(!e)throw new Error("User UID is required");return W(t,e)},options:{enabled:!!k&&!!e},navigate:i,setState:n}),C=e=>y({queryKey:["users","paginated",e.limit,e.page,e.sort_by,e.order,e.search],queryFn:async()=>X(t,e),options:{enabled:!!k},navigate:i,setState:n}),q=c({mutationFn:async e=>N(t,e)}),F=c({mutationFn:async({verification_uid:e,password:s})=>L(t,e,s)}),w=c({mutationFn:async({current_password:e,new_password:s})=>j(t,e,s)}),l=c({mutationFn:async e=>$(t,e),onSuccess:e=>{var s;if(e){U.setQueryData(["user","byUsername",e.username],e),U.setQueryData(["user","byUID",e.uid],e);const r=m.current,u=((s=r.user.disk.currentUser)==null?void 0:s.uid)===e.uid;n({user:{mem:{users:{...r.user.mem.users,[e.username]:e}},disk:{currentUser:u?e:r.user.disk.currentUser}}})}}}),p=c({mutationFn:async({name:e,username:s,email:r,password:u,turnstileToken:a,emailVerificationUid:o})=>V(t,e,s,r,u,a,o)}),I=async e=>G(t,e),f=c({mutationFn:async({tokenUid:e,role:s})=>x(t,e,s),onSuccess:()=>{U.invalidateQueries({queryKey:["user","tokens"]})}}),g=c({mutationFn:async({tokenUid:e,isActive:s})=>D(t,e,s),onSuccess:()=>{U.invalidateQueries({queryKey:["user","tokens"]})}}),K=async e=>z(t,e),B=async(e,s,r)=>_(t,e,s,r);return{useUsersQuery:b,useUserByUsernameQuery:E,useUserByUIDQuery:T,useCurrentUserQuery:Q,useUserFeedQuery:R,useUserTokensByUserUidQuery:S,useUsersPaginatedQuery:C,updateUser:l.mutateAsync,createUser:p.mutateAsync,requestReset:q.mutateAsync,resetPassword:F.mutateAsync,updatePassword:w.mutateAsync,updateTokenRole:f.mutateAsync,updateTokenActiveStatus:g.mutateAsync,checkUsernameAvailability:I,startEmailVerification:K,verifyEmailCodeForEmail:B,isUpdating:l.isPending,isCreating:p.isPending,isRequestingReset:q.isPending,isResettingPassword:F.isPending,isUpdatingPassword:w.isPending,isUpdatingTokenRole:f.isPending,isUpdatingTokenActiveStatus:g.isPending,updateError:l.error,createError:p.error,updateTokenRoleError:f.error,updateTokenActiveStatusError:g.error}};export{ae as u};