PageSourceSearch

https://www.getminerhub.com/assets/InvitePage-DEmbrkUL.js

js getminerhub.com collected 2026-10-02 01:30:53 UTC 10,973 bytes, 1 lines download raw bytes

1import{j as e}from"./vendor-motion-C5FObYmw.js";import{r as c}from"./vendor-helmet-C1O7rrm-.js";import{b as X,d as Y}from"./vendor-react-B8Ra2ABZ.js";import{aX as Z,aY as ee,G as ae,P as d,C as i,H as se,R as te,N as b,ac as M,bA as V,bB as re,V as ne,J as ie,W as k,O as h,I as v,a4 as T,a5 as B,a6 as oe,B as m,cx as le}from"./index-D5Z3iEdy.js";import{u as ce}from"./vendor-query-S2mA_Wh8.js";import{resolveToken as de}from"./short-token-DvIvguJm.js";import"./vendor-ui-DH9CwqBQ.js";import"./vendor-charts-sgZODtTB.js";import"./vendor-flow-4lyVEpXM.js";import"./vendor-dnd-BVlXN6uJ.js";function ye(){const[H]=X(),{code:O}=Y(),f=Z(),{switchBoard:$}=ee(),F=ce();ae();const j=de(O,H.get("token")),[s,r]=c.useState("loading"),[t,J]=c.useState(null),[I,w]=c.useState(!1),[N,x]=c.useState(!1),[u,P]=c.useState(!1),[_,Q]=c.useState(""),[y,R]=c.useState(""),[C,U]=c.useState("");c.useEffect(()=>{if(!j){r("invalid");return}K()},[j]);const K=async()=>{var a;try{const{data:o,error:l}=await d.rpc("get_invitation_by_token",{p_token:j}),n=Array.isArray(o)?o[0]:o;if(l||!n){console.error("Invitation not found:",l),r("invalid");return}if(n.status==="accepted"){r("accepted");return}if(n.status==="cancelled"){r("invalid");return}if(new Date(n.expires_at)<new Date){r("expired");return}J({id:n.id,email:n.email,role:n.role,status:n.status,expires_at:n.expires_at,invited_by:n.invited_by,inviter_name:n.inviter_name||"Um usuário"}),r("valid");const{data:{session:g}}=await d.auth.getSession();g?(((a=g.user.email)==null?void 0:a.toLowerCase())===n.email.toLowerCase()||i.error(`Este convite foi enviado para ${n.email}. Você está logado com outro e-mail.`),r("valid")):r("needs_signup")}catch(o){console.error("Error validating invitation:",o),r("error")}},W=async()=>{var a;if(t){if(!_.trim()){i.error("Digite seu nome completo");return}if(y.length<6){i.error("A senha deve ter pelo menos 6 caracteres");return}x(!0);try{const o=await d.functions.invoke("send-auth-email",{body:{email:t.email,password:y,fullName:_,type:"signup",lang:le()}});if(o.error){const l=((a=o.error)==null?void 0:a.message)||"";l.includes("already registered")||l.includes("already been registered")?(i.error("Este e-mail já está cadastrado. Faça login."),r("needs_login")):i.error(l||"Erro ao criar conta");return}localStorage.setItem("pending_invite_token",j),i.success("Conta criada! Verifique seu e-mail para confirmar."),r("email_sent")}catch(o){console.error("Error signing up:",o),i.error(o.message||"Erro ao criar conta")}finally{x(!1)}}},A=async()=>{if(t){if(!C){i.error("Digite sua senha");return}x(!0);try{const{error:a}=await d.auth.signInWithPassword({email:t.email,password:C});if(a)throw a;await L()}catch(a){console.error("Error logging in:",a),i.error(a.message||"Erro ao fazer login")}finally{x(!1)}}},L=async()=>{var a;if(t)try{const{data:{session:o}}=await d.auth.getSession();if(!o){i.error("Sessão expirada. Faça login novamente."),r("needs_login"),x(!1),w(!1);return}const{error:l}=await d.from("board_invitations").update({status:"accepted",accepted_at:new Date().toISOString()}).eq("id",t.id);if(l){const p=l.message||"";if(p.includes("Limite de membros"))i.error("O mural atingiu o limite de membros do plano. Peça ao dono para fazer upgrade.");else if(p.includes("não autenticado"))i.error("Sessão expirada. Faça login novamente."),r("needs_login");else throw l;return}localStorage.removeItem("pending_invite_token"),i.success("Convite aceito com sucesso!"),localStorage.setItem("active_board",t.invited_by);const{data:{session:n}}=await d.auth.getSession(),g=(a=n==null?void 0:n.user)==null?void 0:a.id;if(g){const p=["board-memberships",g];let q=!1;for(let D=0;D<15;D++){const me=await F.refetchQueries({queryKey:p}),S=F.getQueryData(p);if(S!=null&&S.some(E=>E.boardOwnerId===t.invited_by)){q=!0;break}await new Promise(E=>setTimeout(E,1e3))}q||console.warn("[InvitePage] Membership not found in cache after retries, navigating anyway")}$(t.invited_by),f(`/?board=${t.invited_by}`,{replace:!0})}catch(o){console.error("Error accepting invitation:",o),i.error("Erro ao aceitar convite. Tente novamente.")}},G=async()=>
1{if(t){w(!0);try{const{data:{session:a}}=await d.auth.getSession();if(!a){i.info("Faça login para aceitar o convite"),r("needs_login"),w(!1);return}await L()}catch(a){console.error("Error accepting invitation:",a),i.error("Erro ao aceitar convite. Tente novamente.")}finally{w(!1)}}},z=a=>a==="member"?"Membro":"Visualizador";return e.jsx("div",{className:"min-h-screen bg-background flex items-center justify-center p-4",children:e.jsxs(se,{className:"w-full max-w-md",children:[e.jsxs(te,{className:"text-center",children:[e.jsxs("div",{className:"mx-auto w-12 h-12 rounded-full bg-primary/10 flex items-center justify-center mb-4",children:[s==="loading"&&e.jsx(b,{className:"w-6 h-6 text-primary animate-spin"}),s==="valid"&&e.jsx(M,{className:"w-6 h-6 text-primary"}),(s==="needs_signup"||s==="needs_login")&&e.jsx(M,{className:"w-6 h-6 text-primary"}),s==="accepted"&&e.jsx(V,{className:"w-6 h-6 text-primary"}),s==="email_sent"&&e.jsx(V,{className:"w-6 h-6 text-primary"}),(s==="expired"||s==="invalid"||s==="error")&&e.jsx(re,{className:"w-6 h-6 text-destructive"})]}),e.jsxs(ne,{className:"text-xl",children:[s==="loading"&&"Verificando convite...",s==="valid"&&"Você foi convidado!",s==="needs_signup"&&"Crie sua conta",s==="needs_login"&&"Faça login",s==="accepted"&&"Convite já aceito",s==="email_sent"&&"Verifique seu e-mail",s==="expired"&&"Convite expirado",s==="invalid"&&"Convite inválido",s==="error"&&"Erro ao carregar"]})]}),e.jsxs(ie,{className:"text-center space-y-4",children:[s==="loading"&&e.jsx("p",{className:"text-muted-foreground",children:"Aguarde enquanto verificamos seu convite..."}),s==="needs_signup"&&t&&e.jsxs(e.Fragment,{children:[e.jsxs(k,{className:"text-base",children:[e.jsx("strong",{className:"text-foreground",children:t.inviter_name})," convidou você para colaborar no Miner Hub como"," ",e.jsx("strong",{className:"text-primary",children:z(t.role)}),"."]}),e.jsxs("div",{className:"space-y-4 mt-4 text-left",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(h,{htmlFor:"email",children:"E-mail"}),e.jsx(v,{id:"email",type:"email",value:t.email,disabled:!0,className:"bg-muted"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(h,{htmlFor:"fullName",children:"Nome completo"}),e.jsx(v,{id:"fullName",type:"text",placeholder:"Seu nome completo",value:_,onChange:a=>Q(a.target.value)})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(h,{htmlFor:"password",children:"Senha"}),e.jsxs("div",{className:"relative",children:[e.jsx(v,{id:"password",type:u?"text":"password",placeholder:"Mínimo 6 caracteres",value:y,onChange:a=>R(a.target.value)}),e.jsx("button",{type:"button",onClick:()=>P(!u),className:"absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground",children:u?e.jsx(T,{className:"w-4 h-4"}):e.jsx(B,{className:"w-4 h-4"})})]}),e.jsx(oe,{password:y})]}),e.jsx(m,{onClick:W,disabled:N,className:"w-full",size:"lg",children:N?e.jsxs(e.Fragment,{children:[e.jsx(b,{className:"w-4 h-4 mr-2 animate-spin"}),"Criando conta..."]}):"Criar conta e aceitar convite"}),e.jsxs("p",{className:"text-sm text-muted-foreground text-center",children:["Já tem uma conta?"," ",e.jsx("button",{onClick:()=>r("needs_login"),className:"text-primary hover:underline",children:"Fazer login"})]})]})]}),s==="needs_login"&&t&&e.jsxs(e.Fragment,{children:[e.jsxs(k,{className:"text-base",children:["Faça login para aceitar o convite de"," ",e.jsx("strong",{className:"text-foreground",children:t.inviter_name}),"."]}),e.jsxs("div",{className:"space-y-4 mt-4 text-left",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(h,{htmlFor:"loginEmail",children:"E-mail"}),e.jsx(v,{id:"loginEmail",type:"email",value:t.email,disabled:!0,className:"bg-muted"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(h,{htmlFor:"loginPassword",children:"Senha"}),e.jsxs("div",{className:"relative",children:[e.jsx(v,{id:"loginPassword",type:u?"text":"password",placeholder:"Sua senha",value:C,onChange:a=>U(a.target.value),onKeyDown:a=>a.key==="Enter"&&A()}),e.jsx("button",{type:"button",onClick:()=>P(!u),className:"absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground",children:u?e.jsx(T,{className:"w-4 h-4"}):e.jsx(B,{className:"w-4 h-4"})})]})]}),e.jsx(m,{onClick:A,disabled:N,className:"w-full",size:"lg",children:N?e.jsxs(e.Fragment,{children:[e.jsx(b,{className:"w-4 h-4 mr-2 animate-spin"}),"Entrando..."]}):"Entrar e aceitar convite"}),e.jsxs("p",{className:"text-sm text-muted-foreground text-center",children:["Não tem conta?"," ",e.jsx("button",{onClick:()=>r("needs_signup"),className:"text-primary hover:underline",children:"Criar conta"})]})]})]}),s==="valid"&&t&&e.jsxs(e.Fragment,{children:[e.jsxs(k,{className:"text-base",children:[e.jsx("strong",{className:"text-foreground",children:t.inviter_name})," convidou você para colaborar no Miner Hub como"," ",e.jsx("strong",{className:"text-primary",children:z(t.role)}),"."]}),e.jsxs("p",{className:"text-sm text-muted-foreground",children:["Convite para: ",t.email]}),e.jsx(m,{onClick:G,disabled:I,className:"w-full mt-4",size:"lg",children:I?e.jsxs(e.Fragment,{children:[e.jsx(b,{className:"w-4 h-4 mr-2 animate-spin"}),"Aceitando..."]}):"Aceitar Convite"})]}),s==="email_sent"&&t&&e.jsxs(e.Fragment,{children:[e.jsxs("p",{className:"text-muted-foreground",children:["Enviamos um link de confirmação para ",e.jsx("strong",{className:"text-foreground",children:t.email}),". Verifique sua caixa de entrada e spam."]}),e.jsx("p",{className:"text-sm text-muted-foreground mt-2",children:"Após confirmar seu e-mail, volte aqui e faça login para aceitar o convite."}),e.jsx(m,{onClick:()=>r("needs_login"),className:"w-full mt-4",children:"Já confirmei, fazer login"})]}),s==="accepted"&&e.jsxs(e.Fragment,{children:[e.jsx("p",{className:"text-muted-foreground",children:"Este convite já foi aceito anteriormente."}),e.jsx(m,{onClick:()=>f("/"),className:"w-full mt-4",children:"Ir para o Miner Hub"})]}),s==="expired"&&e.jsxs(e.Fragment,{children:[e.jsx("p",{className:"text-muted-foreground",children:"Este convite expirou. Peça ao remetente para enviar um novo convite."}),e.jsx(m,{variant:"outline",onClick:()=>
1f("/login"),className:"w-full mt-4",children:"Ir para o Login"})]}),s==="invalid"&&e.jsxs(e.Fragment,{children:[e.jsx("p",{className:"text-muted-foreground",children:"Este convite não existe ou foi cancelado."}),e.jsx(m,{variant:"outline",onClick:()=>f("/login"),className:"w-full mt-4",children:"Ir para o Login"})]}),s==="error"&&e.jsxs(e.Fragment,{children:[e.jsx("p",{className:"text-muted-foreground",children:"Ocorreu um erro ao carregar o convite. Tente novamente mais tarde."}),e.jsx(m,{variant:"outline",onClick:()=>window.location.reload(),className:"w-full mt-4",children:"Tentar Novamente"})]})]})]})})}export{ye 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.