PageSourceSearch

https://comuny.app/assets/DeleteAccountModal-D_M6llBJ.js

js comuny.app collected 2026-10-09 22:21:32 UTC 11,708 bytes, 1 lines download raw bytes

1import{r as n,j as e}from"./vendor-react-CYGQtLbL.js";import{u as X,b as Y,h as z,s as k,j as R,D as J,c as K,e as Z,d as ee,f as se,C as M,T as ae,I as te,ao as re,B as m}from"./index-BI5Xs1tD.js";import{L as S}from"./label-0K7UBBa0.js";import{R as ne,a as ie}from"./radio-group-0E17kWhH.js";import{A as f,a as v}from"./alert-CF5DFzxO.js";import{as as oe,r as U,T as $,b as E,aR as ce,e as le,at as de,ak as me}from"./vendor-icons-DUSjHmPI.js";import"./vendor-sentry-N2mFvU_B.js";import"./vendor-radix-B8Jde9zG.js";import"./vendor-supabase-BxFEoWbK.js";import"./vendor-style-utils--BulIq_u.js";import"./vendor-toast-C2ugWvTP.js";import"./vendor-query-CTv-0CvJ.js";import"./vendor-router-ru3jn0Tj.js";const Re=({open:j,onOpenChange:u})=>{const{t:s,i18n:C}=X(),{toast:c}=Y(),{user:N}=z(),[t,o]=n.useState("check"),[l,x]=n.useState(null),[d,q]=n.useState(null),[w,_]=n.useState(""),[g,A]=n.useState(""),[b,T]=n.useState(!1),[h,p]=n.useState(!1),[B,F]=n.useState(!0),[O,P]=n.useState(""),I=[{value:"not_using",label:s("settings.deleteReasonNotUsing","Não estou mais usando a plataforma")},{value:"privacy_concerns",label:s("settings.deleteReasonPrivacy","Preocupações com privacidade")},{value:"too_expensive",label:s("settings.deleteReasonExpensive","Muito caro")},{value:"found_alternative",label:s("settings.deleteReasonAlternative","Encontrei uma alternativa melhor")},{value:"missing_features",label:s("settings.deleteReasonFeatures","Faltam recursos que preciso")},{value:"other",label:s("settings.deleteReasonOther","Outro motivo")}];n.useEffect(()=>{j&&N&&W()},[j,N]);const W=async()=>{F(!0);try{const{data:a,error:r}=await k.from("account_deletion_requests").select("*").eq("user_id",N?.id??"").eq("status","pending").maybeSingle();if(r)throw r;a?(x({id:a.id,scheduled_deletion_at:a.scheduled_deletion_at,requested_at:a.requested_at,reason:a.reason??void 0}),o("pending")):(x(null),o("confirm"))}catch(a){R.error("Error checking pending request:",a),o("confirm")}finally{F(!1)}},V=a=>{if(!a)return"-";const r=new Date(a);return Number.isNaN(r.getTime())?"-":new Intl.DateTimeFormat(C.language==="pt"?"pt-BR":C.language==="es"?"es-ES":"en-US",{year:"numeric",month:"long",day:"numeric",hour:"2-digit",minute:"2-digit"}).format(r)},G=async()=>{if(!d){c({title:s("settings.selectReasonError","Por favor, selecione um motivo"),variant:"destructive"});return}if(!g){c({title:s("settings.passwordRequired","Senha necessária"),description:s("settings.passwordRequiredDesc","Por favor, digite sua senha para confirmar"),variant:"destructive"});return}p(!0);try{const a=d==="other"?w:I.find(y=>y.value===d)?.label,r=await k.functions.invoke("request-account-deletion",{body:{reason:a,password:g}});if(r.error)throw new Error(r.error.message||"Failed to request deletion");const i=r.data;if(!i?.success){if(i?.code==="INVALID_PASSWORD"){c({title:s("settings.invalidPassword","Senha incorreta"),description:s("settings.invalidPasswordDesc","A senha informada está incorreta"),variant:"destructive"});return}if(i?.code==="ALREADY_REQUESTED"){x(i.existingRequest),o("pending");return}throw new Error(i?.error||"Unknown error")}P(i?.data?.scheduled_deletion_at??i?.scheduled_deletion_at),o("success"),c({title:s("settings.deletionRequestCreated","Solicitação criada"),description:s("settings.deletionRequestCreatedDesc","Sua solicitação de exclusão foi registrada")})}catch(a){R.error("Request deletion error:",a),c({title:s("settings.deletionRequestError","Erro ao solicitar exclusão"),description:a instanceof Error?a.message:"Erro desconhecido",variant:"destructive"})}finally{p(!1)}},H=async()=>{p(!0);try{const a=await k.functions.invoke("cancel-account-deletion",{});if(a.error)throw new Error(a.error.message||"Failed to cancel deletion");const r=a.data;if(!r?.success)throw new Error(r?.error||"Unknown error");x(null),c({title:s("settings.deletionCancelled","Exclusao cancelada"),description:s("settings.deletionCancelledDesc","Sua conta permanece ativa")}),u(!1),L()}catch(a){R.error("Cancel deletion error:",a),c({title:s("settings.cancelDeletionError","Erro ao cancelar exclusao"),description:a instanceof Error?a.message:"Erro desconhecido",variant:"destructive"})}finally{p(!1)}},L=()=>{o("check"),q(null),_(""),A(""),T(!1),x(null),P("")},Q=a=>{a||L(),u(a)},D=a=>{const r=new Date(a),i=new Date,y=r.getTime()-i.getTime();return Math.ceil(y/(1e3*60*60*24))};return e.jsx(J,{open:j,onOpenChange:Q,children:e.jsxs(K,{className:"sm:max-w-lg",children:[e.jsxs(Z,{className:"space-y-0",children:[t!=="check"&&t!=="pending"&&e.jsx("div",{className:"flex items-center gap-1.5 w-full mb-4",children:["confirm","password","success"].map((a,r)=>
1e.jsx("div",{className:`h-1.5 flex-1 rounded-full transition-colors ${t==="confirm"&&r===0||t==="password"&&r<=1||t==="success"&&r<=2?"bg-destructive":"bg-muted"}`},a))}),e.jsx(ee,{className:"text-base sm:text-lg flex items-center gap-2",children:t==="pending"?e.jsxs(e.Fragment,{children:[e.jsx(oe,{className:"h-5 w-5 text-amber-500"}),s("settings.pendingDeletionTitle","Exclusao pendente")]}):t==="success"?e.jsxs(e.Fragment,{children:[e.jsx(U,{className:"h-5 w-5 text-green-500"}),s("settings.deletionRequestedTitle","Solicitacao registrada")]}):e.jsxs(e.Fragment,{children:[e.jsx($,{className:"h-5 w-5 text-destructive"}),s("settings.deleteAccountDialogTitle")]})}),e.jsxs(se,{className:"text-xs sm:text-sm mt-1",children:[t==="check"&&s("settings.checkingDeletionStatus","Verificando status..."),t==="pending"&&s("settings.pendingDeletionDescription","Voce ja possui uma solicitacao de exclusao ativa"),t==="confirm"&&s("settings.deleteAccountDescription"),t==="password"&&s("settings.confirmPasswordToDelete","Digite sua senha para confirmar a exclusao"),t==="success"&&s("settings.deletionRequestedDescription","Sua conta sera excluida na data programada")]})]}),t==="check"&&B&&e.jsx("div",{className:"flex items-center justify-center py-8",children:e.jsx(E,{className:"h-8 w-8 animate-spin text-muted-foreground"})}),t==="pending"&&l&&e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsx(M,{className:"p-4 bg-amber-50 dark:bg-amber-950/30 border-amber-200 dark:border-amber-800",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(ce,{className:"h-5 w-5 text-amber-600 dark:text-amber-400 mt-0.5 flex-shrink-0"}),e.jsxs("div",{className:"flex-1",children:[e.jsx("p",{className:"text-sm font-medium text-amber-800 dark:text-amber-200",children:s("settings.scheduledDeletionDate","Data de exclusao programada")}),e.jsx("p",{className:"text-lg font-bold text-amber-900 dark:text-amber-100 mt-1",children:V(l.scheduled_deletion_at)}),e.jsx("p",{className:"text-xs text-amber-700 dark:text-amber-300 mt-2",children:D(l.scheduled_deletion_at)>0?s("settings.daysRemaining",{days:D(l.scheduled_deletion_at),defaultValue:`Faltam ${D(l.scheduled_deletion_at)} dias`}):s("settings.deletionToday","A exclusao ocorrera hoje")})]})]})}),e.jsx(f,{children:e.jsx(v,{className:"text-sm",children:s("settings.cancelDeletionInfo","Voce pode cancelar esta solicitacao a qualquer momento antes da data programada. Apos o cancelamento, sua conta permanecera ativa.")})}),l.reason&&e.jsxs("div",{className:"text-sm text-muted-foreground",children:[e.jsxs("span",{className:"font-medium",children:[s("settings.deletionReason","Motivo informado"),": "]}),l.reason]})]}),t==="confirm"&&e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsxs(f,{variant:"destructive",className:"border-destructive/50 bg-destructive/10",children:[e.jsx($,{className:"h-4 w-4"}),e.jsx(v,{children:s("settings.deleteAccountWarningNew","Ao excluir sua conta, todos os seus dados, cursos, progresso e certificados serao permanentemente removidos apos 30 dias.")})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(S,{children:s("settings.deleteAccountReasonLabel","Por que voce deseja excluir sua conta?")}),e.jsx(ne,{value:d||"",onValueChange:a=>q(a),className:"space-y-2",children:I.map(a=>e.jsxs("div",{className:"flex items-center space-x-3",children:[e.jsx(ie,{value:a.value,id:`reason-${a.value}`}),e.jsx(S,{htmlFor:`reason-${a.value}`,className:"font-normal cursor-pointer text-sm",children:a.label})]},a.value))}),d==="other"&&e.jsx(ae,{value:w,onChange:a=>_(a.target.value),placeholder:s("settings.deleteReasonPlaceholder","Descreva o motivo..."),className:"mt-2 min-h-[80px]"})]})]}),t==="password"&&e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsxs(f,{variant:"destructive",className:"border-destructive/50 bg-destructive/10",children:[e.jsx(le,{className:"h-4 w-4"}),e.jsx(v,{children:s("settings.deleteConfirmationWarning","Esta acao nao pode ser desfeita apos o periodo de 30 dias.")})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(S,{htmlFor:"delete-password",children:s("settings.enterPasswordToConfirm","Digite sua senha para confirmar")}),e.jsxs("div",{className:"relative",children:[e.jsx(te,{id:"delete-password",type:b?"text":"password",value:g,onChange:a=>A(a.target.value),placeholder:s("settings.passwordPlaceholder","Sua senha"),className:"pr-10"}),e.jsx("button",{type:"button",onClick:()=>T(!b),className:"absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground",children:b?e.jsx(de,{className:"w-4 h-4"}):e.jsx(me,{className:"w-4 h-4"})})]})]}),e.jsxs("div",{className:"p-3 bg-muted rounded-lg text-sm text-muted-foreground",children:[e.jsx("p",{className:"font-medium mb-1",children:s("settings.whatHappensNext","O que acontece depois?")}),e.jsxs("ul",{className:"list-disc list-inside space-y-1 text-xs",children:[e.jsx("li",{children:s("settings.deleteStep1","Sua conta sera marcada para exclusao")}),e.jsx("li",{children:s("settings.deleteStep2","Voce tem 30 dias para cancelar")}
1),e.jsx("li",{children:s("settings.deleteStep3","Apos 30 dias, todos os dados serao removidos permanentemente")})]})]})]}),t==="success"&&e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsx(M,{className:"p-4 bg-green-50 dark:bg-green-950/30 border-green-200 dark:border-green-800",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(U,{className:"h-5 w-5 text-green-600 dark:text-green-400 mt-0.5 flex-shrink-0"}),e.jsxs("div",{className:"flex-1",children:[e.jsx("p",{className:"text-sm font-medium text-green-800 dark:text-green-200",children:s("settings.deletionScheduled","Exclusao programada para")}),e.jsx("p",{className:"text-lg font-bold text-green-900 dark:text-green-100 mt-1",children:V(O)})]})]})}),e.jsx(f,{children:e.jsx(v,{className:"text-sm",children:s("settings.deletionEmailSent","Enviamos um email de confirmacao para voce. Voce pode cancelar a exclusao a qualquer momento nas configuracoes.")})})]}),e.jsxs(re,{className:"gap-2 sm:gap-0",children:[t==="pending"&&e.jsxs(e.Fragment,{children:[e.jsx(m,{variant:"outline",onClick:()=>u(!1),children:s("common.close","Fechar")}),e.jsxs(m,{onClick:H,disabled:h,children:[h&&e.jsx(E,{className:"h-4 w-4 mr-2 animate-spin"}),s("settings.cancelDeletion","Cancelar exclusao")]})]}),t==="confirm"&&e.jsxs(e.Fragment,{children:[e.jsx(m,{variant:"outline",onClick:()=>u(!1),children:s("settings.keepAccount","Manter minha conta")}),e.jsx(m,{variant:"destructive",onClick:()=>o("password"),disabled:!d||d==="other"&&!w.trim(),children:s("common.next","Continuar")})]}),t==="password"&&e.jsxs(e.Fragment,{children:[e.jsx(m,{variant:"outline",onClick:()=>o("confirm"),children:s("common.back","Voltar")}),e.jsxs(m,{variant:"destructive",onClick:G,disabled:!g||h,children:[h&&e.jsx(E,{className:"h-4 w-4 mr-2 animate-spin"}),s("settings.confirmDeletion","Confirmar exclusao")]})]}),t==="success"&&e.jsx(m,{onClick:()=>u(!1),className:"w-full",children:s("common.close","Fechar")})]})]})})};export{Re as DeleteAccountModal};

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.