1import{i as e,s as t}from"./useRouter-B64lGpJS.js";import{n,r}from"./createMiddleware-Cn5_hvYu.js";import{t as i}from"./client-CJMOV2om.js";import{t as a}from"./useQuery-CSMkADUU.js";import{t as o}from"./auth-middleware-BCNKu4kK.js";var s=t(e(),1),c=n({method:`POST`}).middleware([o]).handler(r(`1c9ee7084b4193e457cecd3b5f451966ad1a493fb5c78ccdfcf86806df181960`)),l=[`sales`,`production_manager`,`floor_operator`,`qc`,`dispatch`,`accounts`,`operations_admin`,`feri`,`drawing`,`admin`],u=new Set;function d(e,t){if(typeof window>`u`||u.has(e))return;u.add(e);let n=`bc-login-${e}`,r=t&&!window.sessionStorage.getItem(n);r&&window.sessionStorage.setItem(n,`1`),c({data:{login:r,screen:`${window.screen.width}x${window.screen.height}`,timezone:Intl.DateTimeFormat().resolvedOptions().timeZone}}).catch(()=>void 0)}function f(){let[e,t]=(0,s.useState)(null),[n,r]=(0,s.useState)(!0);return(0,s.useEffect)(()=>{let e=!0;i.auth.getSession().then(({data:n})=>{e&&(t(n.session),r(!1))});let{data:n}=i.auth.onAuthStateChange((e,n)=>{t(n),r(!1),n?.user&&(e===`SIGNED_IN`||e===`INITIAL_SESSION`)&&d(n.user.id,e===`SIGNED_IN`)});return()=>{e=!1,n.subscription.unsubscribe()}},[]),{session:e,user:e?.user??null,loading:n}}function p(e){return a({queryKey:[`user-roles`,e?.id],enabled:!!e?.id,queryFn:async()=>{let{data:t,error:n}=await i.from(`user_roles`).select(`role`).eq(`user_id`,e.id);if(n)throw n;return(t??[]).map(e=>e.role)}})}function m(){let{session:e,user:t,loading:n}=f(),{data:r=[],isLoading:i}=p(t);return{session:e,user:t,roles:r,loading:n||!!t&&i,isStaff:r.some(e=>l.includes(e)),isAdmin:r.includes(`admin`),isInternal:r.includes(`internal`),canEditConfirmed:r.includes(`admin`)||r.includes(`operations_admin`),hasRole:e=>r.includes(e)}}export{f as n,m as t};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.