1 2!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="a28589ea-b3fb-57cc-bf54-dde2cf65d7b1")}catch(e){}}(); 3import{R as e,S as D,ao as U,C,bi as K,l as A,Y as y,r as _,n as H,bg as j,W as L,aj as G,aI as Y,x as $,aY as J,aG as Q}from"./index-Cs-In7Vx.js";import{c as Z,B as q,h as X,a as ee,s as te,b as k,d as ae,u as ne}from"./cacheKeys-Px_UUtmK.js";import{C as re}from"./ContactPhoneRounded-B3ob7BpZ.js";import{F as O}from"./FiberManualRecord-B1d1Mzjb.js";import{S as oe}from"./meta-Bd4svD5c.js";import{f as se}from"./formatWhatsAppPhone-DJG7KN8s.js";import{r as ie,u as ce,i as le}from"./useIntegrationOverview-Dol5EBAf.js";async function de({companyId:t,integrationId:a,page:n=1,limit:o=20,filters:r={}}){const i=Array.isArray(r.eventType)?r.eventType.filter(Boolean):r.eventType;try{return(await Z.get(`${q}/v1/meta/integrations/events`,{params:{companyId:t,integrationId:a,page:n,limit:o,level:r.level,eventType:i,period:r.period}})).data}catch(u){X(u)}}const P=20;function R(t){const a=t?.pagination;return a?.page&&a?.totalPages?a.page<a.totalPages:(t?.data||[]).length>=P}function me(t,a,n){const o=e.useCallback((f,h)=>!t||h&&!R(h)?null:{companyId:t,integrationId:a,page:f+1,limit:P,filters:n},[t,a,n]),{data:r,error:i,size:u,setSize:l,isLoading:c}=D(o,de,{shouldRetryOnError:!1,revalidateOnFocus:!0,revalidateOnReconnect:!0,persistSize:!1}),p=e.useMemo(()=>(r||[]).flatMap(f=>f?.data||[]),[r]),E=!!(t&&c),v=E||u>0&&r&&typeof r[u-1]>"u",d=!E&&p.length===0||(r&&r.length>0?!R(r[r.length-1]):!1),g=e.useCallback(()=>l(f=>f+1),[l]);return{events:p,error:i,isLoadingInitialData:E,isLoadingMore:v,isReachingEnd:d,loadMore:g}}const ue={period:"30d",eventType:["OAUTH_START","OAUTH_CALLBACK_SUCCESS","OAUTH_CALLBACK_ERROR"]};function pe(t){const a=String(t?.eventType||"").toUpperCase(),n=t?.message;return a==="OAUTH_CALLBACK_SUCCESS"?{statusLabel:"Conectado",statusColor:"green",dotClassName:"bg-green",description:n||"Conectado manualmente: Meta Business"}:a==="OAUTH_START"?{statusLabel:"Reconectando",statusColor:"orange",dotClassName:"bg-orange",description:n||"Sessão expirada: reconexão automática em andamento"}:a==="OAUTH_CALLBACK_ERROR"?{statusLabel:"Reconectando",statusColor:"red",dotClassName:"bg-red",description:n||"Reconexão em andamento: ocorreu erro no retorno OAuth"}:{statusLabel:"Reconectando",statusColor:"orange",dotClassName:"bg-orange",description:n||"Evento de reconexão em andamento"}}function ge({open:t,integration:a,companyId:n,onClose:o}){const[r,i]=e.useState(null);e.useEffect(()=>{t&&i(a)},[t,a]);const{events:u,error:l,isLoadingInitialData:c,isLoadingMore:p,isReachingEnd:E,loadMore:v}=me(r?.integrationId?n:null,r?.integrationId,ue),s=r?.displayVerifiedName,d=s?`Histórico de conexões â ${s}`:"Histórico de conexões";return e.createElement(U,{open:t,title:d,onClose:o,maxWidth:"sm",contentPadding:"p-0",dividers:!1},e.createElement("div",{className:"px-20 py-16"},c?e.createElement("div",{className:"flex items-center justify-center py-20"},e.createElement(C,{size:24})):l?e.createElement("div",{className:"border-red-200 text-red-700 rounded-12 border border-solid bg-white p-16 text-16"},"Não foi possÃvel carregar o histórico de conexões."):u.length===0?e.createElement("div",{className:"rounded-12 border border-solid border-gray-200 bg-white p-16 text-16 text-gray-500"},"Nenhum evento OAuth foi encontrado para este número nos últimos 30 dias."):e.createElement("div",{className:"space-y-16"},u.map(g=>{const f=pe(g);return e.createElement("div",{key:g.id||`${g.createdAt}-${g.eventType}`,className:"flex gap-16"},e.createElement("div",{className:"flex w-12 flex-col items-center pt-8"},e.createElement("span",{className:`h-8 w-8 shrink-0 rounded-full ${f.dotClassName}`}),e.createElement("span",{className:"h-full w-px bg-gray-200"})),e.createElement("div",{className:"flex-1 rounded-12 border border-solid border-gray-200 bg-white p-16"},e.createElement("div",{className:"flex flex-wrap items-center justify-between gap-8"},e.createElement(K,{color:f.statusColor},f.statusLabel),e.createElement("div",{className:"text-16 text-gray-500"},g?.createdAt?A().diff(g.createdAt,"hours")<24?A(g.createdAt).locale("pt-br").fromNow():A(g.createdAt).locale("pt-br").format("DD MMM, HH:mm"):"-")),e.createElement("div",{className:"mt-8 text-16 text-gray-700"},f.description)))}),!E&&e.createElement("div",{className:"pt-8"},e.createElement(y,{variant:"outlined",fullWidth:!0,onClick:v,disabled:p},p?"Carregando...":"Carregar mais")))))}const fe=t=>
3_.createElement("svg",{viewBox:"0 0 24 24",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",...t},_.createElement("path",{d:"M9.5 6.5v3h-3v-3h3M11 5H5v6h6V5zm-1.5 9.5v3h-3v-3h3M11 13H5v6h6v-6zm6.5-6.5v3h-3v-3h3M19 5h-6v6h6V5zm-6 8h1.5v1.5H13V13zm1.5 1.5H16V16h-1.5v-1.5zM16 13h1.5v1.5H16V13zm-3 3h1.5v1.5H13V16zm1.5 1.5H16V19h-1.5v-1.5zM16 16h1.5v1.5H16V16zm1.5-1.5H19V16h-1.5v-1.5zm0 3H19V19h-1.5v-1.5zM21 7c-.55 0-1-.45-1-1V4h-2c-.55 0-1-.45-1-1s.45-1 1-1h3c.55 0 1 .45 1 1v3c0 .55-.45 1-1 1zm1 14v-3c0-.55-.45-1-1-1s-1 .45-1 1v2h-2c-.55 0-1 .45-1 1s.45 1 1 1h3c.55 0 1-.45 1-1zM3 22h3c.55 0 1-.45 1-1s-.45-1-1-1H4v-2c0-.55-.45-1-1-1s-1 .45-1 1v3c0 .55.45 1 1 1zM2 3v3c0 .55.45 1 1 1s1-.45 1-1V4h2c.55 0 1-.45 1-1s-.45-1-1-1H3c-.55 0-1 .45-1 1z"})),Ee={staticTitle:"Meta API",description:"Conexão oficial. Vincule múltiplos números e escale o atendimento.",bullets:["Usado para envio de modelos de mensagem.","Modelos aprovados para abertura de janela de comunicação.","Ideal para disparos em massa."],footer:"Consulte os custos de uso na Meta.",connectLabel:"Conectar via Meta",connectVariant:"contained"},be={staticTitle:"API Alternativa",description:"Ideal para começar com baixo volume e sem custo por mensagem.",bullets:["Usado no disparador de mensagens.","Conexão com WhatsApp Web.","Sem disparo em massa."],footer:"IncluÃdo no seu plano.",connectLabel:"Conectar via API",connectVariant:"outlined"};function he({text:t}){return e.createElement("div",{className:"flex items-start gap-8 text-16 text-gray-700"},e.createElement(O,{style:{fontSize:8},className:"mt-8 shrink-0 text-purple"}),e.createElement("span",null,t))}function ve({integration:t,isMetaApi:a,isBusy:n,onDelete:o,onRestart:r,onOpenHistory:i,onToggle:u,isToggling:l,hasActiveWebhookSubscription:c}){const p=H(),E=t?.displayVerifiedName,v=se(t?.phoneNumberIdentification)||t?.phoneNumberIdentification||t?.integrationId||"Número não identificado";return e.createElement("div",{className:"rounded-8 border border-solid border-gray-200 bg-gray-50 p-16"},e.createElement("div",{className:"mb-12 flex items-center justify-between gap-8"},e.createElement("div",{className:"flex items-center gap-8 text-16 font-semibold text-gray-600"},e.createElement(re,{style:{fontSize:18},className:"shrink-0 text-gray-400"}),"Dados do número"),e.createElement("div",{className:"flex items-center gap-8"},e.createElement("div",{className:`flex items-center gap-6 rounded-full px-10 py-4 text-14 font-semibold ${c?"bg-green-lightest text-green-dark":"bg-red-lightest text-red-dark"}`},e.createElement(O,{style:{fontSize:10}}),c?"Integração ativa":"Integração desativada"),l?e.createElement(C,{size:16}):e.createElement(j,{size:"small",color:"primary",checked:c,onChange:s=>u?.(t,s.target.checked),disabled:n}))),E&&e.createElement("div",{className:"text-20 text-gray-500"},E),e.createElement("div",{className:"mt-4 text-16 text-gray-600"},v),e.createElement("div",{className:"mt-16 flex flex-wrap gap-8"},a?e.createElement(e.Fragment,null,e.createElement(y,{size:"small",className:"bg-white",variant:"outlined",onClick:o,disabled:n},"Excluir número"),e.createElement(y,{size:"small",className:"bg-white",variant:"outlined",onClick:r,disabled:n},"Reiniciar"),e.createElement(y,{size:"small",className:"bg-white",variant:"outlined",onClick:i,disabled:n},"Histórico")):e.createElement(y,{size:"small",variant:"outlined",color:"primary",onClick:()=>p.push("/marketing/whatsapp/campanhas")},"Ir para disparador")))}function F({integration:t,isMetaApi:a,onConnect:n,onToggle:o,isToggling:r,onDelete:i,onRestart:u,onOpenHistory:l,isBusy:c,connectLoading:p}){const E=a?Ee:be,{staticTitle:v,description:s,bullets:d,footer:g,connectLabel:f,connectVariant:h}=E,m=!!t,b=t?.hasActiveWebhookSubscription!==!1;return e.createElement("div",{className:"flex flex-col gap-20 rounded-12 border border-solid border-gray-200 bg-white p-20"},e.createElement("div",{className:"flex items-center gap-16"},a?e.createElement(oe,{className:"mt-4 h-32 w-32 shrink-0"}):e.createElement(fe,{className:"h-32 w-32 shrink-0 text-purple"}),e.createElement("span",{className:"text-16 font-semibold text-gray-800"},v)),m?e.createElement(ve,{integration:t,isMetaApi:a,isBusy:c,onDelete:i,onRestart:u,onOpenHistory:l,onToggle:o,isToggling:r,hasActiveWebhookSubscription:b}):e.createElement("p",{className:"text-16 text-gray-600"},s),e.createElement("div",{className:"space-y-8"},d.map(I=>e.createElement(he,{key:I,text:I}))),!m&&e.createElement(y,{fullWidth:!0,variant:h,color:"primary",disableElevation:!0,onClick:n,disabled:c,startIcon:p?e.createElement(C,{size:16,color:"inherit"}):void 0},p?"Conectando...":f),e.createElement("div",{className:"border-0 border-t border-solid border-gray-100 pt-8 text-16 text-gray-400"},g))}const Ie=600*1e3,Ne="WA_EMBEDDED_SIGNUP",ye="FINISH",xe="FINISH_WHATSAPP_BUSINESS_APP_ONBOARDING",Ce="FINISH_ONLY_WABA",we="FINISH_OBO_MIGRATION",z="FINISH_GRANT_ONLY_API_ACCESS",B="ERROR",T="CANCEL",V=[ye,xe,Ce,we,z],Se=[...V,B,T];function Ae(t){try{const a=new URL(t).hostname.toLowerCase();return a==="facebook.com"||a.endsWith(".facebook.com")}catch{return!1}}function Te(t){if(!t)return null;if(typeof t=="string")try{return JSON.parse(t)}catch{return null}return typeof t=="object"?t:null}function _e(t){if(!t)return null;const a=Array.isArray(t)?t[0]:t;if(!a||typeof a!="object")return null;const n=a.event||a.type||a.eventType,o=a.type,r=a.data||a;return!Se.includes(n)||o&&o!==Ne?null:{eventName:n,payload:r}}function ke(t){if(!t)return null;const{eventName:a,payload:n}=t;if(!V.includes(a))return null;const o=n.waba_id||n.wabaId,r=n.phone_number_id||n.phoneNumberId;return!o&&!r?null:{wabaId:o,phoneNumberId:r}}const M="facebook-jssdk",Re="https://connect.facebook.net/en_US/sdk.js";let x=null;function Fe(){return typeof window>"u"?Promise.reject(new Error("Facebook SDK indisponÃvel fora do navegador")):window.FB?Promise.resolve(window.FB):x||(x=new Promise((t,a)=>{const n=document.getElementById(M);if(n){n.addEventListener("load",()=>t(window.FB)),n.addEventListener("error",()=>
3a(new Error("Falha ao carregar SDK do Facebook")));return}const o=document.createElement("script");o.id=M,o.async=!0,o.defer=!0,o.crossOrigin="anonymous",o.src=Re,o.onload=()=>{if(!window.FB){a(new Error("SDK do Facebook carregado sem objeto FB"));return}t(window.FB)},o.onerror=()=>a(new Error("Falha ao carregar SDK do Facebook")),document.body.appendChild(o)}).catch(t=>{throw x=null,t}),x)}async function Me({appId:t}){const a=await Fe();return a.init({appId:t,cookie:!0,xfbml:!1,version:"v25.0"}),a}function He({companyId:t,onSuccess:a}){const n=L(),[o,r]=e.useState(!1),i=e.useRef({code:null,state:null,wabaId:null,phoneNumberId:null,callbackSent:!1,active:!1}),u=e.useRef(null),l=e.useCallback(()=>{i.current={code:null,state:null,wabaId:null,phoneNumberId:null,callbackSent:!1,active:!1}},[]),c=e.useCallback(()=>{u.current&&(clearTimeout(u.current),u.current=null)},[]),p=e.useCallback(()=>{c(),u.current=setTimeout(()=>{i.current.callbackSent||(r(!1),l(),n.error("Tempo esgotado para concluir o processo. Tente novamente."))},Ie)},[n,c,l]),E=e.useCallback(async()=>{const s=i.current;if(!(s.callbackSent||!s.code||!s.state||!s.wabaId&&!s.phoneNumberId)){s.callbackSent=!0;try{await ee({code:s.code,state:s.state,wabaId:s.wabaId,phoneNumberId:s.phoneNumberId}),n.success("Integração com WhatsApp Business concluÃda com sucesso!"),await a?.()}catch(d){n.error(d?.response?.data?.message||"Não foi possÃvel concluir a integração com o WhatsApp.")}finally{c(),l(),r(!1)}}},[n,c,a,l]);e.useEffect(()=>{const s=d=>{if(!i.current.active||!Ae(d.origin))return;p();const g=Te(d.data),f=_e(g),h=f?.eventName;if(!f)return;if(h===B||h===T){c(),l(),r(!1),n.error(h===T?"Processo de integração cancelado.":"A Meta retornou erro durante o fluxo de cadastro incorporado.");return}const m=ke(f);if(!m){h===z&&(c(),l(),r(!1));return}i.current={...i.current,wabaId:m.wabaId,phoneNumberId:m.phoneNumberId},E()};return window.addEventListener("message",s),()=>{window.removeEventListener("message",s),c()}},[n,E,c,l,p]);const v=e.useCallback(async()=>{if(!t){n.error("Não foi possÃvel identificar a empresa atual para iniciar a integração.");return}c(),l(),r(!0);try{const d=(await te({companyId:t}))?.embeddedSignup;if(!d?.appId||!d?.configId||!d?.state)throw new Error("Resposta inválida ao iniciar integração");i.current={...i.current,state:d.state,active:!0},p();const g=await Me({appId:d.appId}),h=(await new Promise(m=>{const b=d.responseType||"code",I=typeof d.overrideDefaultResponseType=="boolean"?d.overrideDefaultResponseType:!0,w=d.extras||{version:"v4",features:[]};g.login(S=>{p(),m(S)},{config_id:d.configId,response_type:b,override_default_response_type:I,extras:w,state:d.state})}))?.authResponse?.code;if(!h){c(),l(),r(!1),n.error("Processo cancelado ou não autorizado. Tente novamente.");return}i.current={...i.current,code:h},await E()}catch(s){c(),l(),r(!1),n.error(s?.response?.data?.message||s?.message||"Erro ao iniciar integração com a Meta.")}},[n,E,c,t,l,p]);return{loadingMetaConnect:o,startEmbeddedSignupFlow:v}}function Le({companyId:t,onOverviewChange:a,startEmbeddedSignupFlow:n}){const o=L(),r=G(),i=H(),[u,l]=e.useState(null),[c,p]=e.useState(null),[E,v]=e.useState(null),s=e.useCallback(async m=>{if(m?.integrationId){if(m.hasActiveWebhookSubscription===!1){l(m.integrationId);try{await k({companyId:t,integrationId:m.integrationId}),o.success("Integração reativada com sucesso."),await a?.()}catch(b){o.error(b?.response?.data?.message||"Não foi possÃvel reativar a integração.")}finally{l(null)}return}await n()}},[o,t,a,n]),d=e.useCallback(async(m,b)=>{if(m?.integrationId){try{await r({title:"Confirmação de exclusão de número",description:"Ao confirmar, não será possÃvel desfazer a ação.",cancellationText:"Cancelar",confirmationText:"Confirmar"})}catch{return}p(m.integrationId);try{await ae({integrationId:m.integrationId,companyId:t}),await a?.(),o.success("Número removido com sucesso."),b?.(m.integrationId)}catch(I){o.error(I?.response?.data?.message||"Não foi possÃvel remover o número.")}finally{p(null)}}},[o,t,r,a]),g=e.useCallback(async(m,b)=>{if(m?.integrationId){v(m.integrationId);try{if(b)await k({companyId:t,integrationId:m.integrationId}),o.success("Integração conectada à API com sucesso.");else{try{await r({title:"Desconectar integração",description:"Ao confirmar, a integração deste número será desligada.",cancellationText:"Cancelar",confirmationText:"Confirmar"})}catch{return}await ne({companyId:t,integrationId:m.integrationId}),o.success("Integração desconectada da API com sucesso.")}await a?.()}catch(I){o.error(I?.response?.data?.message||"Não foi possÃvel atualizar o status da integração.")}finally{v(null)}}},[o,t,r,a]),f=e.useCallback(()=>{i.push("/marketing/whatsapp/campanhas?autoConnectWhatsapp=1")},[i]);return{isBusy:!!u||!!c||!!E,isTogglingIntegration:E,restartIntegration:s,deleteIntegration:d,toggleApiConnection:g,connectAlternativeApi:f}}function Oe({companyId:t,integrations:a,isLoadingOverview:n,onOverviewChange:o}){const[r,i]=e.useState(null),[u,l]=e.useState(!1),{loadingMetaConnect:c,startEmbeddedSignupFlow:p}=He({companyId:t,onSuccess:e.useCallback(async()=>{await o?.()},[o])}),{isBusy:E,isTogglingIntegration:v,restartIntegration:s,deleteIntegration:d,toggleApiConnection:g,connectAlternativeApi:f}=Le({companyId:t,onOverviewChange:o,startEmbeddedSignupFlow:p}),h=E||c,m=a.length>0,b=e.useMemo(()=>
3{const N=ie(a);return N?.wabaId?N:null},[a]),I=e.useMemo(()=>a.find(N=>!N.wabaId)||null,[a]),w=e.useCallback(N=>{i(N),l(!0)},[]),S=e.useCallback(async()=>{await d(b,N=>{r?.integrationId===N&&(l(!1),i(null))})},[d,r,b]),W=e.useCallback(async()=>{await s(b)},[b,s]);return n||!t?e.createElement("div",{className:"flex h-full items-center justify-center"},e.createElement(C,{size:28})):e.createElement("div",{className:"flex min-h-0 flex-1 flex-col"},e.createElement(ge,{open:u,integration:r,companyId:t,onClose:()=>l(!1)}),e.createElement("div",{className:"my-auto w-full space-y-24"},e.createElement("div",{className:"flex flex-col items-center py-8 text-center"},e.createElement("div",{className:"flex h-80 w-80 items-center justify-center rounded-full bg-purple-lightest"},e.createElement(Y,{className:"h-48 w-48 text-purple"})),m?e.createElement(e.Fragment,null,e.createElement("div",{className:"mt-16 text-32 font-semibold text-gray-600"},"Seus números do WhatsApp, em um só lugar"),e.createElement("div",{className:"mt-8 text-24 text-gray-500"},"Conecte, visualize e gerencie todos os números vinculados à sua conta.")):e.createElement(e.Fragment,null,e.createElement("div",{className:"mt-16 text-20 font-semibold text-gray-800"},"Conecte seu primeiro número"),e.createElement("div",{className:"mt-8 max-w-xs text-16 text-gray-500"},"Para começar a enviar mensagens, escolha como vincular o WhatsApp Business."))),e.createElement("div",{className:"grid grid-cols-1 gap-16 sm:grid-cols-2"},e.createElement(F,{integration:b,isMetaApi:!0,onConnect:p,onToggle:g,isToggling:v===b?.integrationId,onDelete:S,onRestart:W,onOpenHistory:()=>b&&w(b),isBusy:h,connectLoading:c}),e.createElement(F,{integration:I,isMetaApi:!1,onConnect:f,onToggle:g,isToggling:v===I?.integrationId,isBusy:h}))))}function Ke(){const t=$(({globalCompany:u})=>u.company?.id),{integrations:a,error:n,isLoading:o,refresh:r}=ce(t),i=le(n);return n&&!i?e.createElement("div",{className:"flex h-full flex-col items-center justify-center space-y-20 p-20"},e.createElement(J,{title:"Problema ao carregar os dados da conexão WhatsApp"}),e.createElement(y,{onClick:()=>r(),variant:"outlined"},"Tentar novamente")):e.createElement(Q,null,e.createElement("div",{className:"flex h-full min-h-0 flex-col px-16 py-16 sm:px-24"},e.createElement(Oe,{companyId:t,integrations:a,isLoadingOverview:o,onOverviewChange:r})))}export{Ke as default}; 4 5//# debugId=a28589ea-b3fb-57cc-bf54-dde2cf65d7b1
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.