1import{j as t}from"./ui-vendor-Nh__yRYT.js";import{A as K,a2 as M,u as X,x as Z,y as ee,ac as te,w as L,a6 as D,B as k,ad as H,ae as ne,af as Q,ag as T,ah as ie,ai as re,aj as se,ak as oe,al as ae,am as ce}from"./index-BinsBWQu.js";import{c as de}from"./auth-session-transitions-Dds_Hvew.js";import{f as le,a as u}from"./react-vendor-NvA41F0Y.js";import{u as ue}from"./use-view-transition-navigate-OfoUcrvx.js";async function fe({organizationId:o,organizationName:d,selectedProjectId:S,listProjects:a,listEnvironments:E,updatePreferences:A,signal:j}){let I=[],y=!1;try{I=await a(o,j)}catch(s){y=!0,console.error("Failed to load invited organization projects:",s)}const f=I.filter(s=>s.organization_id===o),n=f.find(s=>s.id===S)??f[0];let i=[],m=!1;if(n)try{i=await E(n.id,j)}catch(s){m=!0,console.error("Failed to load invited organization project environments:",s)}const l=i.find(s=>s.slug==="development")??i[0];return await A({onboardingCompleted:!0,selectedOrganizationId:o,selectedOrganizationName:d,selectedProjectId:n?.id,selectedProjectName:n?.name,selectedEnvironmentId:l?.id,selectedEnvironmentName:l?.name},j),{projectId:n?.id,environmentId:l?.id,projectLookupFailed:y,environmentLookupFailed:m}}function je(){const{invitationId:o}=le(),d=ue(),S=K(),{toast:a}=M(),{preferences:E,updatePreferences:A,isLoading:j,refreshPreferences:I}=X(),y=Z(),f=ee(),n=te(),{data:i,isPending:m}=L.useSession(),l=i?.session.id,s=i?.user.id,O=u.useRef(!1),[z,p]=u.useState(!1),[V,U]=u.useState(null),[P,G]=u.useState(null),[W,C]=u.useState(null),[R,N]=u.useState(null),q=!!(R&&n.isCurrent(R)),v=q?V:null,B=q?W:null;u.useEffect(()=>{if(m)return;if(!l||!s){const c=`/accept-invitation/${o}`;d(`/sign-in?returnTo=${encodeURIComponent(c)}`);return}const r=D(s,l);if(!r)return;const e=r,g=new AbortController;C(null),U(null),G(null),N(null),p(!1);async function w(){try{const c=await n.run(e,({signal:h})=>L.organization.getInvitation({query:{id:o},fetchOptions:{signal:h}}),g.signal),{data:Y,error:x}=c;if(x){n.commit(e,()=>{C(x.message||"Invitation not found or has expired"),N(e)});return}n.commit(e,()=>{U(Y),N(e)})}catch(c){if(c instanceof H)return;n.commit(e,()=>{C("Failed to load invitation details"),N(e)})}}return w(),()=>g.abort()},[l,s,m,o,d,f.sessionGeneration,f.userId,n]);const _=async()=>{if(z||O.current)return;const r=P??(v?.organizationId?{id:v.organizationId,name:v.organizationName}:null);if(!r){a({title:"Error",description:"This invitation is missing its organization details.",variant:"destructive"});return}O.current=!0,p(!0);let e;try{const g=j?await I():E;if(!P){const{error:h}=await de({invitationId:o});if(h){a({title:"Error",description:h.message||"Failed to accept invitation",variant:"destructive"});return}G(r)}if(!i?.user.id)throw new Error("Authentication changed before invitation acceptance completed.");if(e=await ne({userId:i.user.id,sessionGeneration:Q(i.session.id),organizationId:r.id}),!e.activated||!T(e))return;const w=r.id,c={revision:f.revision,userId:i.user.id,sessionGeneration:Q(i.session.id),organizationId:w};if(!await ie(e,async h=>{const $=await fe({organizationId:w,organizationName:r.name,selectedProjectId:g.selectedProjectId,listProjects:(b,F)=>se(c,b,F),listEnvironments:(b,F)=>re(c,b,F),updatePreferences:A,signal:h});($.projectLookupFailed||$.environmentLookupFailed)&&console.warn("Invited organization setup completed without a complete project selection.")})||(await oe(S,i?.user.id),e&&!T(e)))return;const x=()=>{ae(),i?.user.id&&y.announceScopeChanged(i.user.id),a({title:"Welcome!",description:"You have joined the organization"}),d("/home",{replace:!0})};if(e){if(!await ce(e,x))return}else x()}catch{if(e&&!T(e))return;a({title:"Error",description:"An unexpected error occurred",variant:"destructive"})}finally{O.current=!1,p(!1)}},J=async()=>{p(!0);const r=D(i?.user.id,i?.session.id);if(!r){p(!1);return}try{const{error:e}=await n.run(r,({signal:g})=>L.organization.rejectInvitation({invitationId:o,fetchOptions:{signal:g}}));if(e){n.commit(r,()=>{a({title:"Error",description:e.message||"Failed to reject invitation",variant:"destructive"})});return}n.commit(r,()=>{a({title:"Invitation declined"}),d("/")})}catch(e){if(e instanceof H)return;n.commit(r,()=>{a({title:"Error",description:"An unexpected error occurred",variant:"destructive"})})}finally{n.commit(r,()=>p(!1))}};return m?t.jsx("div",{className:"flex items-center justify-center min-h-screen",children:t.jsx("p",{className:"text-muted-foreground",children:"Loading..."})}):B?t.jsx("div",{className:"flex items-center justify-center min-h-screen",children:t.jsxs("div",{className:"text-center space-y-4",children:[t.jsx("h1",{className:"text-2xl font-display font-bold text-foreground",children:"Invalid Invitation"}),t.jsx("p",{className:"text-muted-foreground",children:B}),t.jsx(k,{variant:"outline",onClick:()=>d("/"),children:"Go Home"})]})}):v?t.jsx("div",{className:"flex items-center justify-center min-h-screen",children:t.jsxs("div",{className:"max-w-md w-full space-y-6 border bg-card p-8",children:[t.jsxs("div",{className:"text-center space-y-2",children:[t.jsx("h1",{className:"text-2xl font-display font-bold text-foreground",children:"Team Invitation"}),t.jsxs("p",{className:"text-muted-foreground",children:["You've been invited to join ",t.jsx("span",{className:"font-medium text-foreground",children:v.organizationName})," as a ",t.jsx("span",{className:"font-medium text-foreground",children:v.role}),"."]})]}),t.jsxs("div",{className:"flex gap-3 justify-center",children:[t.jsx(k,{onClick:_,disabled:z,children:z?"Processing...":P?"Retry setup":"Accept"}),t.jsx(k,{variant:"outline",onClick:J,disabled:z,children:"Decline"})]})]})}):t.jsx("div",{className:"flex items-center justify-center min-h-screen",children:t.jsx("p",{className:"text-muted-foreground",children:"Loading invitation..."})})}export{je as AcceptInvitationPage};
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.