import{n as e,s as t,t as n}from"./jsx-runtime-Bzw2jH9X.js";import{$t as r,St as i,Xt as a,an as o,bt as s,cn as c,dn as l,gt as u,nn as d,on as f,xt as p,yt as m}from"./services-D2mwzmR1.js";import{t as h}from"./spin-CdYmgj0j.js";var g=t(e(),1);function _(e){let t=new URLSearchParams(e),n=t.get(`invite_code`);n&&localStorage.setItem(o,n);let r=t.get(`channel`);r&&localStorage.setItem(d,r),localStorage.getItem(`channel`)===null&&localStorage.setItem(d,document.referrer)}function v(){return{channel:localStorage.getItem(`channel`)??document.referrer,inviteCode:localStorage.getItem(`invite_code`)??``}}function y(){localStorage.removeItem(d),localStorage.removeItem(o)}var b=n();function x(){return new URLSearchParams(window.location.search).get(`ymToken`)}function S(){let e=new URL(window.location.href);if(!e.searchParams.has(`ymToken`))return;e.searchParams.delete(`ymToken`);let t=`${e.pathname}${e.search}${e.hash}`;window.history.replaceState(null,``,t)}var C=(0,g.createContext)(null);function w({children:e}){let[t,n]=(0,g.useState)({user:null,accessToken:localStorage.getItem(c)}),[o,d]=(0,g.useState)(()=>{let e=x();return!!(e&&e!==localStorage.getItem(`ymToken`))}),_=(0,g.useCallback)(async()=>{let e=localStorage.getItem(c);if(e)try{let t=await u();n({user:t,accessToken:e})}catch{a.emit(`auth:logout`)}},[]);(0,g.useEffect)(()=>{_()},[_]),(0,g.useEffect)(()=>{let e=x();if(e){if(e===localStorage.getItem(`ymToken`)){S();return}(async()=>{try{let{user:t,token:n}=await p({ymToken:e});localStorage.setItem(l,e),a.emit(`auth:login`,{user:t,accessToken:n.accessToken})}catch(e){console.error(e)}finally{S(),d(!1)}})()}},[]),(0,g.useEffect)(()=>{let e=({user:e,accessToken:t})=>{t&&localStorage.setItem(c,t),y(),n({user:e,accessToken:t})},t=()=>{localStorage.removeItem(c),localStorage.removeItem(f),localStorage.removeItem(l),n({user:null,accessToken:null})};return a.on(`auth:login`,e),a.on(`auth:logout`,t),()=>{a.off(`auth:login`,e),a.off(`auth:logout`,t)}},[]);let w=(0,g.useCallback)(async e=>{let t=v(),{user:n,token:r}=e.type===`password`?await m({phone:e.phone,password:e.password,channel:t.channel,inviteCode:t.inviteCode}):await s({mobile:e.mobile,code:e.code,channel:t.channel,inviteCode:t.inviteCode});a.emit(`auth:login`,{user:n,accessToken:r.accessToken})},[]),T=(0,g.useCallback)(e=>{a.emit(`auth:login`,{user:e.user,accessToken:e.accessToken})},[]),E=(0,g.useCallback)(async()=>{try{await i(),r.success(`已退出登录`)}catch{}finally{a.emit(`auth:logout`)}},[]),D=(0,g.useCallback)(e=>{n(t=>({...t,user:t.user?{...t.user,...e}:null}))},[]);return(0,b.jsx)(C.Provider,{value:{...t,isAuthenticated:!!t.accessToken,login:w,loginByWechat:T,logout:E,patchUser:D},children:o?(0,b.jsx)(`div`,{className:`flex h-screen items-center justify-center bg-zinc-50`,children:(0,b.jsx)(h,{description:`åŠ è½½ä¸...`})}):e})}function T(){let e=(0,g.useContext)(C);if(!e)throw Error(`useAuth must be used within AuthProvider`);return e}export{_ as i,T as n,v as r,w as t};