PageSourceSearch

https://knuckl.com/assets/AuthSocialComplete-DkPvFji7.js

js knuckl.com collected 2026-10-02 01:34:36 UTC 9,552 bytes, 1 lines download raw bytes

1import{u as te,a as n,j as i}from"./vendor-query-CRhh6spR.js";import{u as re,b as se,a2 as ne,s as o,L as F,z as ae,B as w,I as oe,a3 as le}from"./index-BkVb42KZ.js";import{L as ce}from"./label-Xk_s6Ck5.js";import{c as L,p as H,a as ue}from"./social-intent-Blxpmtle.js";import{u as de,N as fe}from"./vendor-react-BAmwgVqg.js";import{M as me}from"./mail-DS62qYck.js";import"./vendor-charts-BVeOEGzI.js";import"./vendor-stripe-2y4Jo9_W.js";import"./vendor-supabase-Csx7YFID.js";function y(c){return c?c.replace(/<[^>]*>/g,"").replace(/\s+/g," ").trim().slice(0,80):""}function je(){var T,V,z;const c=de(),{user:e,authStatus:U}=re(),{t:J}=se(),p=te(),r=J.auth.socialGate,[d,v]=n.useState("phone"),[W,h]=n.useState(!1),[q,D]=n.useState(!1),[x,j]=n.useState(!1),[X,Y]=n.useState(!1),[k,Z]=n.useState(""),[M,m]=n.useState(null),P=n.useRef(null),N=n.useRef(null),l=n.useMemo(()=>{var s,u,f;const t=(s=e==null?void 0:e.identities)==null?void 0:s[0];return{provider:(t==null?void 0:t.provider)??((u=e==null?void 0:e.app_metadata)==null?void 0:u.provider)??"unknown",subject:((f=t==null?void 0:t.identity_data)==null?void 0:f.sub)??(t==null?void 0:t.id)??"",email:(e==null?void 0:e.email)??""}},[e]),C=!!(l.email&&(e!=null&&e.email_confirmed_at||((z=(V=(T=e==null?void 0:e.identities)==null?void 0:T[0])==null?void 0:V.identity_data)==null?void 0:z.email_verified)===!0)),[g,Q]=n.useState("unknown"),{ready:A,path:B}=ne();n.useEffect(()=>{if(!(e!=null&&e.id))return;let t=!1;return(async()=>{const{data:s,error:u}=await o.from("profiles").select("unified_onboarding_completed, phone_verified_at").eq("user_id",e.id).maybeSingle();if(t)return;if(u){Q("no");return}const f=(s==null?void 0:s.unified_onboarding_completed)===!0||!!(s!=null&&s.phone_verified_at);Q(f?"yes":"no")})(),()=>{t=!0}},[e==null?void 0:e.id]),n.useEffect(()=>{g==="yes"&&(!A||!B||(L(),c(B,{replace:!0})))},[B,A,c,g]),n.useEffect(()=>{e!=null&&e.id&&g==="no"&&!C&&h(!0)},[C,g,e==null?void 0:e.id]);const I=n.useRef(!1);n.useEffect(()=>{if(!(e!=null&&e.id)||g!=="no"||I.current)return;const t=H();t&&(I.current=!0,(async()=>{try{await o.rpc("claim_initial_role",{new_role:t==="contractor"?"contractor":"worker"}),t==="sub"&&await o.rpc("set_sub_visible",{visible:!0}),p.invalidateQueries({queryKey:["user-roles",e.id]})}catch{I.current=!1}})())},[p,g,e==null?void 0:e.id]);const $=n.useCallback(async()=>{if(!l.email){m(r.emailFailed);return}j(!0),m(null);try{const{data:t,error:s}=await o.functions.invoke("phone-auth",{body:{action:"send_email_otp",email:l.email}});if(s||t!=null&&t.error)throw s??new Error(String(t.error));Y(!0)}catch{m(r.emailFailed)}finally{j(!1)}},[r,l.email]),ee=n.useCallback(async()=>{var t;j(!0),m(null);try{const{data:s,error:u}=await o.functions.invoke("phone-auth",{body:{action:"verify_email_otp",email:l.email,otp:k.trim()}});if(u||s!=null&&s.error){m(r.emailInvalid);return}await((t=N.current)==null?void 0:t.call(N,null))}catch{m(r.emailInvalid)}finally{j(!1)}},[k,r,l.email]),K=n.useCallback(async()=>{L(),await o.auth.signOut(),c("/auth",{replace:!0})},[c]),O=n.useCallback(async t=>{if(e!=null&&e.id){v("working");try{const{data:s,error:u}=t?await o.rpc("phone_belongs_to_other_user",{check_phone:t}):{data:!1,error:null};if(u)throw u;if(t&&s===!0){await o.rpc("record_social_link_conflict",{p_provider:l.provider,p_subject:l.subject,p_email:l.email,p_phone:t}),v("conflict"),window.setTimeout(()=>{var a;return(a=P.current)==null?void 0:a.focus()},0);return}if(t){const{error:a}=await o.from("profiles").update({phone:t,phone_verified_at:new Date().toISOString(),phone_verification_deferred_at:null}).eq("user_id",e.id);if(a)throw a}else{const{error:a}=await o.from("profiles").update({phone_verification_deferred_at:new Date().toISOString()}).eq("user_id",e.id).is("phone_verified_at",null);if(a)throw a}const f=H();if(f){const{error:a}=await o.rpc("claim_initial_role",{new_role:f==="worker"?"worker":"contractor"});if(a)throw a;if(f==="sub"){const{error:G}=await o.rpc("set_sub_visible",{visible:!0});if(G)throw G}}const b=ue(),S=e.user_metadata??{},ie=y(S.full_name??S.name);let E=y(b==null?void 0:b.firstName)||y(S.given_name),R=y(b==null?void 0:b.lastName)||y(S.family_name);
1const _=[E,R].filter(Boolean).join(" ")||ie;if(!E&&_){const a=_.split(" ");E=a[0]??"",R=a.slice(1).join(" ")}if(_){const{data:a}=await o.from("profiles").select("full_name").eq("user_id",e.id).maybeSingle();a!=null&&a.full_name||(await o.auth.updateUser({data:{full_name:_,given_name:E,family_name:R}}),await o.from("profiles").update({full_name:_}).eq("user_id",e.id))}L(),p.invalidateQueries({queryKey:["user-roles",e.id]}),p.invalidateQueries({queryKey:["profile",e.id]}),p.invalidateQueries({queryKey:["dashboard-path-profile",e.id]}),c("/onboarding",{replace:!0})}catch{v("error")}}},[l,c,p,e]);return N.current=O,i.jsxs("main",{className:"min-h-[100dvh] flex items-center justify-center bg-background px-4",children:[!e&&U==="ready"&&i.jsx(fe,{to:"/auth",replace:!0}),!e||g!=="no"?i.jsx("div",{className:"w-full max-w-sm rounded-card border border-border bg-card p-6 text-center shadow-sm",children:i.jsx(F,{className:"mx-auto h-6 w-6 animate-spin text-muted-foreground","aria-hidden":"true"})}):i.jsxs(i.Fragment,{children:[i.jsxs("div",{className:"w-full max-w-sm rounded-card border border-border bg-card p-6 text-center shadow-sm",children:[i.jsx(ae,{className:"mx-auto mb-3 h-8 w-8 text-primary","aria-hidden":"true"}),d==="conflict"?i.jsxs(i.Fragment,{children:[i.jsx("h1",{ref:P,tabIndex:-1,className:"text-lg font-semibold text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background rounded-sm",children:r.duplicateTitle}),i.jsx("p",{className:"mt-2 text-sm text-muted-foreground",children:r.duplicateBody}),i.jsx(w,{onClick:()=>void K(),className:"mt-5 h-11 w-full focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",children:r.duplicateCta})]}):i.jsxs(i.Fragment,{children:[i.jsx("h1",{className:"text-lg font-semibold text-foreground",children:r.title}),i.jsx("p",{className:"mt-2 text-sm text-muted-foreground",children:q?r.emailBody:d==="error"?r.errorBody:r.subtitle}),q?i.jsxs("div",{className:"mt-5 space-y-3 text-left",children:[X?i.jsxs(i.Fragment,{children:[i.jsx("p",{className:"text-sm text-muted-foreground",children:r.emailSent}),i.jsx(ce,{htmlFor:"social-email-otp",children:r.emailCodeLabel}),i.jsx(oe,{id:"social-email-otp",inputMode:"numeric",autoComplete:"one-time-code",maxLength:6,value:k,onChange:t=>Z(t.target.value.replace(/\D/g,"")),className:"h-11 text-center tracking-[0.4em]"}),i.jsx(w,{onClick:()=>void ee(),disabled:x||k.length!==6,className:"h-11 w-full focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",children:x?i.jsx(F,{className:"h-4 w-4 animate-spin","aria-hidden":"true"}):r.emailVerifyCta})]}):i.jsxs(w,{onClick:()=>void $(),disabled:x,className:"h-11 w-full gap-2 focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",children:[x?i.jsx(F,{className:"h-4 w-4 animate-spin","aria-hidden":"true"}):i.jsx(me,{className:"h-4 w-4","aria-hidden":"true"}),x?r.emailSending:r.emailSendCta]}),M&&i.jsx("p",{role:"alert",className:"text-sm text-destructive",children:M}),i.jsx("button",{type:"button",onClick:()=>{D(!1),m(null),h(!0)},className:"w-full text-sm underline underline-offset-4 text-muted-foreground rounded-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background",children:r.emailBackCta})]}):i.jsxs(i.Fragment,{children:[i.jsx("div",{className:"mt-5 min-h-[44px]",children:d==="working"?i.jsxs("span",{className:"flex h-11 items-center justify-center text-sm text-muted-foreground",children:[i.jsx(F,{className:"mr-2 h-4 w-4 animate-spin","aria-hidden":"true"}),r.working]}):C&&d!=="error"?i.jsxs(i.Fragment,{children:[i.jsx(w,{onClick:()=>void O(null),className:"h-11 w-full focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",children:r.continueCta(l.email)}),i.jsx("p",{className:"mt-3 text-xs text-muted-foreground",children:r.continueHint}),i.jsx("p",{className:"mt-3 text-xs uppercase tracking-wide text-muted-foreground",children:r.continueOr})]}):i.jsx(w,{onClick:()=>{v("phone"),h(!0)},className:"h-11 w-full focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",children:d==="error"?r.retry:r.verifyCta})}),C&&d==="phone"?i.jsx("button",{type:"button",onClick:()=>{v("phone"),h(!0)},className:"mt-4 block w-full text-sm font-medium underline underline-offset-4 text-primary rounded-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background",children:r.verifyCta}):i.jsx("button",{type:"button",onClick:()=>{D(!0),h(!1)},className:"mt-4 block w-full text-sm font-medium underline underline-offset-4 text-primary rounded-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background",children:r.emailFallbackCta})]}),i.jsx("button",{type:"button",onClick:()=>void K(),className:"mt-4 text-sm underline underline-offset-4 text-muted-foreground rounded-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background",children:r.signOut})]})]}),d!=="conflict"&&i.jsx(le,{open:W&&d==="phone"&&!q,onOpenChange:h,dismissible:!1,persistToProfile:!1,onVerified:O})]})]})}export{je as default};

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.