Comunidade ZDG

Correções e Status das Libs atualizados.

Status

Editado: 2026-05-22 04:00:00

# TOP ERROR

. estável

# NEWS

. Lançamento Z-Pró V4!

. Processamento do Backend em Modo Cluster

. TechProvider para transformar seu Whatsapp em Oficial (Instagram e Facebook Messenger ).

. Integração Woocommerce, OLX, MercadoLivre e outros.

# FIQUE TRANQUILO

Mantemos seu sistema sempre ativo!

. Suporte preferencial via whatsapp;
. Atualizações recorrentes quando disponíveis;
. Backup externo diário;
. Correções de bugs e assessoria técnica;
. Monitoramento uptime da sua VPS.

Continue lendo...


Z-Pró Versão HOMOLOG
4.0.0

+estável
Z-Pró Versão HOTFIX
4.0.0.9

Lib / API Estabilidade Facilidade na Implantação Escalabilidade Perfil Ideal
CloudApi (waba) Alta ⭐⭐⭐ Estabilidade
COEXISTENCE (waba) Alta ⭐⭐ ⭐⭐⭐ Estabilidade 
DIALOG360 (waba)Alta⭐⭐⭐Estabilidade 
Z-Api Alta ⭐⭐ ⭐⭐ Negócio local
UAzapi Alta ⭐⭐ ⭐⭐⭐ Escala
Meow / Wuzapi Média ⭐⭐ ⭐⭐⭐ Projetos médios
wwbjs Baixa ⭐⭐⭐ Projetos médios
Baileys Baixa ⭐⭐⭐ ⭐⭐ Negócio / Dev / Automação
Evolution API Média ⭐⭐ ⭐⭐⭐ Negócio / Dev / Automação
hubNotificame ( insta/face/email ) Alta ⭐⭐ ⭐⭐ Projetos médios
Instagran (WABA) Alta ⭐⭐ ⭐⭐⭐ Estabilidade
Facebook (WABA) Alta ⭐⭐ ⭐⭐⭐ Estabilidade
E-mailsAlta⭐⭐⭐⭐⭐Estabilidade
gupshup Alta Estabilidade


Comandos

top
Mostra consumo de memória, livre e total, e uso de CPU.
Alternativa: htop

top
# ou
sudo apt install htop
htop


pm2 monit
Exibe consumo dos processos ativos e logs em tempo real.

pm2 monit


Limpar cache npm

sudo npm cache clean --force


Update global do npm

sudo npm i -g npm


Corrigir peer dependencies

npm install --save-dev "outro-pacote"


Instalar módulo extra

cd /pasta/app
npm i nome-pacote --force


Reinstalar pacotes forçado

rm -rf node_modules package-lock.json
npm install -g --unsafe-perm=true --allow-root


Instalar Node.js

sudo apt update && sudo apt upgrade
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt-get install -y nodejs


Remover Node.js (método 1)

sudo apt purge npm nodejs
node --version
npm --version


Remover Node.js (método 2)

sudo apt-get remove nodejs
sudo apt-get remove --purge nodejs
sudo rm -rf /usr/local/bin/node
sudo rm -rf /usr/local/lib/node_modules/npm


Instalar várias versões do Node com NVM

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
source ~/.bashrc
nvm ls-remote
nvm install 14.21.3
nvm use 14.21.3


Listar todos os domínios do Nginx

grep server_name /etc/nginx/sites-enabled/* -RiI


Instalar Google Chrome

wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo apt install ./google-chrome-stable_current_amd64.deb


Verificar config do Nginx

sudo nginx -t


Encerrar processo em porta específica

sudo lsof -nP -iTCP -sTCP:LISTEN
lsof -i :80
kill -9 PID


Exportar Backup MySQL

mysqldump -u usuario -p --single-transaction --routines --triggers nomedabase > /backups/nomedabase.sql
mysql -u usuario -p nomedabase < /backups/nomedabase.sql


Exportar Backup PostgreSQL

pg_dump -U postgres nomebanco > /home/nomebanco.sql


Firewall básico UFW

sudo apt install ufw
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable


Checar espaço em disco

df -h
sudo du -sh *



Permitir acesso root ao deployzdg total sem senha

sudo visudo
# insere ao final do arquivo e pronto
deployzdg ALL=(ALL) NOPASSWD:ALL



Docker . Reiniciar Todas as Aplicações

docker stop $(docker ps -q)
docker start $(docker ps -aq)



Login CMD Windows Automático
4. Configurações técnicas > Acessando o Banco de Dados
ssh-keygen -t ed25519 -C "dev@ndnw.com.br"
type C:\Users\User\.ssh\id_ed25519.pub
as5d4a6sd4
ssh root@46.202.147.209
# yes | root password | enter | enter



Alterar Senha da Base de Dados postgres

# Faça o snapshot da sua vps. Acesse via terminal e execute:
docker exec -it postgres bash -lc "psql -U postgres -c \"ALTER USER zpro WITH PASSWORD 'OutraSenha123';\""
# Depois no arquivo .env do seu backend
nano /home/deployzdg/zpro.io/backend/.env
# Substitui pela senha nova e reinicie o backend



Atualizar VPS

sudo apt update && sudo apt upgrade -y
sudo npm install -g npm@latest
#logar como deployzdg e rodar dentro de zpro/frontend e de zpro/backend
npx update-browserslist-db@latest



Comandos para build do frontend/

 a. sudo su deployzdg
 b. cd /home/deployzdg/zpro.io/frontend
 c. export NODE_OPTIONS=--openssl-legacy-provider
 d. npx quasar build -P -m pwa
 e. pm2 stop all
 f. pm2 flush
 g. pm2 start all


Alterar Senha Postgres

#gerar hash
openssl rand -base64 48

#executar alteracao
docker ps -a
docker exec -it postgresql psql -U zpro
ALTER USER zpro WITH PASSWORD 'NOVA_SENHA_AQUI';
\du
\q





Erros

Erro: ENOENT (index.html não encontrado)
Caminho: /home/deployzdg/zpro.io/frontend/dist/pwa/index.html
Correção: Não executou o build corretamente → refaça o build do frontend.


incoming prekey bundle
Correção: Excesso de conexões na base. Reinicie o backend. Normalmente causado pelo Baileys.


Error: Evaluation failed: b
Correção: Travamento no wwebjs (Chrome travado em ação). Reinicie o backend.


Error: Queue not found (63-SendMessages)
Correção: Fila de disparos travada ou inexistente. Reinicie a ZPRO ou recrie o canal id referenciado.


ERR_BIG_MAC
Correção: Excesso de reconexões. Reinicie o backend (geralmente Baileys).


ERR_NO_DEF_WHATSAPP_FOUND
Correção: Adicione um canal como padrão (opção aparece só no modo expandido da tela de canais).


ERR_WHATSAPP_NOT_CONECTED
Correção: Canal deslogado ou aguardando conexão. Reconectar o canal pelo ID.


ERR_NO_PERMISSION_CONNECTIONS_LIMIT
Correção: Tenant atingiu limite de canais permitidos. Verifique configuração de permissões.


Erro: Could not load "sharp" module (Unsupported CPU)
Correção: VPS com processador incompatível (ARM64 não funciona). É necessário VPS com CPU AMD/Intel x64.


Erro no Postgres: could not open file "pg_filenode.map"
Correção 1: Ajustar permissões e reiniciar PostgreSQL:

docker container restart postgresql
docker exec -it postgresql bash
chown -R postgres:postgres /var/lib/postgresql

Correção 2: Se não resolver: backup → excluir container → recriar novo → restaurar dump.


ERROR: checkMessages (id undefined)
Correção: Alguma mensagem sem ID de canal. Validar dados na base.


Erro: Adicionar contato gera "undefined"
Correção: Definir canal principal como padrão na tenant.


Error: rate-overlimit (erro 500 baileys)
Correção: Limitação que o whatsapp coloca na baileys, no uso do grupo, não tem como burlar. Use wwebjs


stream errored out e Connection Update close Stream Errored (conflict)
Correção: Reinciar a zpro e ler novamente o qrCode


stream errored out e Connection Update close Stream Errored (timeout)
Correção:  algo bloqueando a conexão até o whatsapp (firewall) ou ele mesmo


error 5
erro webhook


error 11
webhook do n8n


ASAAS: Request failed with status code 401
Problema com o Token... refazer o Token asaas


prekey bundle
Esse erro é dowload da midia da baileys em loop.
Deve desmarcar na configurações gerais PERSISTIR DOWLOAD DE MIDIAS(BAILEYS)
E dá um restart no pm2




Otimização De VPS

Otimização de VPS — Rotinas Diárias e Preventivas


1. Limpeza Docker diária (3h da manhã)
0 3 * * * /usr/bin/docker system prune -a -f


2. Reinício automático dos serviços PM2 (5h10 e 19h10)
10 5 * * * pm2 stop all; pm2 start all
10 19 * * * pm2 stop all; pm2 start all


3. Limpeza de arquivos antigos (mais de 15 dias)
0 3 * * * find /home/deployzdg/zpro.io/backend/public/ -type f -mtime +15 -delete


4. Liberação de cache de memória
0 5 * * * sync && echo 3 > /proc/sys/vm/drop_caches


5. Renovação automática do SSL
0 1 1 * * certbot renew --quiet


6. Backup da base Postgres
0 2 * * * pg_dump -U zpro -h localhost postgres > /home/deployzdg/backups/db-$(date +\%F).sql


7. Atualizar VPS
0 4 * * * apt update && apt upgrade -y


8. Monitoramento de espaço utilizado
0 6 * * * df -h > /var/log/disk-usage.log
ou
0 6 * * * [ $(df / | awk 'END{print $5}' | tr -d '%') -gt 85 ] && echo "Disco cheio!" | mail -s "Alerta VPS" seu@email.com


9. Validação Nginx
0 1 1 * * nginx -t && systemctl reload nginx


10. Reinicia docker containers críticos
*/30 * * * * docker ps -q --filter "health=unhealthy" | xargs -r docker restart


12. Monitoramento de serviços Redis
*/15 * * * * docker inspect -f '{{.State.Health.Status}}' redis_container | grep -q healthy || docker restart redis_container


13. Altera o uso padrão de memória pm2 ( problemas de lentidão )
Start o back usando mais memoria v8 e colocando um restart a cada  3 horas no back
2. exemplo, se o servidor tem 32gb de ram, ele pode usar até 14gb...
pm2 start dist/server.js --name zpro-backend --node-args="--max-old-space-size=14000"
1. se tiver 16gb, pode usar ate 7gb...
pm2 start dist/server.js --name zpro-backend --node-args="--max-old-space-size=7000





Limite de Conexões nGinx

# acompanha conexoes socks

tail -f /var/log/nginx/error.log
watch -n1 "ss -s"

o problema:

768 worker_connections are not enough

Isso significa que o NGINX atingiu o limite máximo de conexões simultâneas por worker.
Como você está usando Socket.IO / WebSocket, cada cliente mantém uma conexão aberta, então o limite padrão estoura rápido.

Isso explica perfeitamente:

  • erros CORS falsos

  • erros 500

  • instabilidade

  • algumas VPS funcionando e outras não (dependendo do tráfego)


???? Correção

Edite:

Bash
sudo nano /etc/nginx/nginx.conf

Procure:

Nginx
events {
worker_connections 768;
}

Troque para algo mais alto:

Nginx
events {
worker_connections 8192;
multi_accept on;
}

???? Ajuste adicional recomendado (produção)

worker_rlimit_nofile 200000; no topo

Ainda no mesmo arquivo, dentro do bloco http {}:

Nginx
http {

keepalive_timeout 65;

}

???? Ajustar limite de arquivos do sistema

Execute:

Bash
ulimit -n

Se retornar algo baixo (ex: 1024), aumente.

Edite:

Bash
sudo nano /etc/security/limits.conf

Adicione no final:

* soft nofile 200000
* hard nofile 200000

???? Reinicie NGINX

Bash
sudo nginx -t
sudo systemctl restart nginx

???? Capacidade depois do ajuste

Se sua VPS tem:

worker_processes auto
worker_connections 8192

E 16 workers (como seu log mostrou), o servidor suporta aproximadamente:

8192 x 16 ≈ 131k conexões simultâneas

Mais que suficiente para Socket.IO + CRM + Webhooks.


???? Dica importante para Socket.IO

Sempre use:

Nginx
worker_processes auto;

no topo do nginx.conf.


Conclusão:
Seu problema não era CORS nem Node, era simplesmente limite de conexões do NGINX estourando.

Exemplo como seria correto

worker_rlimit_nofile 200000;

events {
worker_connections 8192;
multi_accept on;
}

http {

keepalive_timeout 65;

}


Instruções Práticas

# AULAS

Assista a aula 4. Configurações técnicas > Acessando o Banco de Dados

Assista a aula 4. Configurações técnicas > Gerando Logs

Assista a aula 6. Conexões e Integrações > Conectar API não oficial: Wpp Web + Proxy

Verifica propagação de DNS:
https://dnschecker.org/#A/sub.dominio.com.br

Downtime WhatsApp:
https://downdetector.com.br/fora-do-ar/whatsapp/


# LIB

Lib não é a zpro. A zpro apenas integra as libs que são disponíveis para se conectar ao whatsapp.

Libs diferentes oferecem tecnologias diferentes e comportamentos também.

Se estiver recebendo comportamento indesejado, troque a versão ou tecnologia.


# Atualizar Baileys versão alternativa

# https://github.com/wppconnect-team/wa-version/tree/main/html

sudo su deployzdg
cd /home/deployzdg/zpro.io/backend/
nano .env
# adicione a flag no final do arquivo, salve e feche
BAILEYS_VERSION=2.3000.1026933896
# após salvar e fechar o documento reinicie a zpro
pm2 stop all
pm2 flush
pm2 start all
pm2 log
# faça um novo teste
----- ou remova a versão alternativa e... ------
sudo su deployzdg
cd /home/deployzdg/zpro.io/backend/
pm2 stop all
npm r @whiskeysockets/baileys
npm i @whiskeysockets/baileys
pm2 flush
pm2 start all
pm2 log
----- ou ainda deinfiindo especifica e... ------
No arquivo /home/deployzdg/zpro.io/backend/package.json, altere a versão da baileys da seguinte maneira:
"@whiskeysockets/baileys": "github:pedroherpeto/WSocketBaileys",
Após salvar e fecha-lo, rode a instalação da nova versão
sudo su deployzdg
cd home/deployzdg/zpro.io/backend/
npm i -f
pm2 stop all
pm2 flush
pm2 start all
pm2 log


# Atualizar wweb.js

# https://github.com/pedroslopez/whatsapp-web.js/releases

sudo su deployzdg
cd /home/deployzdg/zpro.io/backend/
pm2 stop all
rm -rf .wwebjs_auth
rm -rf .wwebjs_cache
npm r whatsapp-web.js
npm i whatsapp-web.js
pm2 flush
pm2 start all
pm2 log


# WuZapi / Meow

# Como Fazer

https://zpro.passaportezdg.com.br/central-do-assinante/recursos-tecnicos/ferramentas-terceiras/instalacao-wuzapi-meow

# Após instalar, reforça que foi atualizada
go get -u go.mau.fi/whatsmeow@latest
go mod tidy
go build .
# reiniciar a meow


# Evolution API

O endereço url para baixar: https://github.com/EvolutionAPI/evolution-api

https://www.youtube.com/watch?v=ibXm0HHbhhs

- não orientamos esta instalação pois é uma lib externa e fica fora do escopo de suporte à plataforma zpró.


# WEBCHAT

Apenas repassando..

> Instalar e configurar webchat através do autoinstalador

> Você ativa a integração no menu Configurações

> Em seguida cria um novo canal no menu Canais para webchat e conecta

> Retorna ao menu Configurações e gera um app

Agora, pela parte da zpró desative temporariamente firewall
sudo ufw disable
sudo su deployzdg
cd /home/deployzdg/zpro.io/backend
nano .env
# adicione a flag abaixo ao documento .env:
SECURE_URL=*
# confirme também se está definido corretamente porta e dominio do chat no mesmo arquivo:
WSS_URL=https://webchat.seusiteaqui.com.br
WSS_PORT=NUMERO_DA_PORTA
# salve o documento, feche e reinicie o sistema
pm2 stop all
pm2 flush
pm2 start all
# faça um novo teste


# Integração ZAPI ou integração UAzapi

Apenas revisando...

url
https://api.z-api.io

Chave global
Criou dentro segurança

Depois criou uma instancia dentro da Zapi

No zpro criou o canal e incluiu o id e o token da instancia da Zapi.

Se sim então refaça o token.

Irei mandar uma live do Pedrinho que é bem completa e pode ajudar
https://youtube.com/live/YPqliPPUPfs?feature=share


# Definir timezone VPS

timedatectl list-timezones | grep Sao_Paulo
sudo timedatectl set-timezone America/Sao_Paulo


# DEFINIR HORÁRIO CONTAINER

# liste os containers para capturar o ID dele
docker ps -a

# Ver horário Postgres
docker exec ID date

# Para alterar a data Postgres
docker exec CONTAINER ID ln -sf /usr/share/zoneinfo/America/Sao_Paulo /etc/localtime

------------------ ou -----------
# Como root
docker ps
# pega o docker Postgress
docker exec -it  psql -U  SET timezone = 'America/Sao_Paulo';
exit
docker restart 


# Iniciar z-pro no pm2 list

sudo su deployzdg
cd /home/deployzdg/zpro.io/backend
pm2 start dist/server.js --name zpro-backend
cd /home/deployzdg/zpro.io/frontend
pm2 start server.js --name zpro-frontend
pm2 save
pm2 startup
pm2 log


# gmail smtp configuração

echo "=== SERVER INFO + Gmail SMTP CHECK ==="; echo "HOSTNAME: $(hostname)"; echo "DATE: $(date -u)"; echo ""; echo "PUBLIC IP:"; curl -s ifconfig.me || curl -s httpbin.org/ip; echo ""; echo "ORG / ASN:"; curl -s https://ipinfo.io/org || curl -s https://ipapi.co/org; echo ""; echo "WHOIS (resumo):"; whois $(curl -s ifconfig.me) 2>/dev/null | egrep -i "orgname|org-name|netname|netrange|origin|aut-num|descr" | sed '/^$/d' | sed -n '1,6p'; echo ""; echo "PTR / Reverse DNS:"; dig +short -x $(curl -s ifconfig.me) || host $(curl -s ifconfig.me); echo ""; echo "Distro / Kernel:"; (lsb_release -a 2>/dev/null || cat /etc/os-release) 2>/dev/null | sed -n '1,4p'; uname -sr; echo ""; echo "Virtualization:"; systemd-detect-virt || echo "none detected"; echo ""; echo "Hardware vendor:"; sudo cat /sys/class/dmi/id/sys_vendor 2>/dev/null || sudo dmidecode -s system-manufacturer 2>/dev/null || echo "unknown"; echo ""; echo "Gmail SMTP ports check:"; for p in 465 587; do timeout 5 bash -c "echo > /dev/tcp/smtp.gmail.com/$p" 2>/dev/null && echo "smtp.gmail.com:$p -> open" || echo "smtp.gmail.com:$p -> closed/blocked"; done; echo "=== END ==="


# Reinstalar Frontend

Faça da seguinte forma:

. Preservando frontend/.env, frontend/public, frontend/server.js, remova os demais arquivos em frontend/

. Baixe a HOTFIX ou se tiveres a de ontem, e extraia o conteúdo de zpro_passaporte_shell_hotfix/zpro.zip

. Suba manualmente pelo FTP, utilizando o usuario deployzdg, o que estiver dentro de /frontend

. Cuidado para não sobrescrever os arquivos .env, server.js e a pasta public durante o upload de frontend/

Em seguida rode manualmente a instalação com o usuario deployzdg pelo terminal

a. npm install --force
b. export NODE_OPTIONS=--openssl-legacy-provider
c. npx quasar build -P -m pwa
d. pm2 restart all


# Transferência de pastas e arquivos entre servidores

# gera um arquivo zipado da pasta local
tar -czf node_modules.tar.gz node_modules

# transfere para outro servidor
scp node_modules.tar.gz root@IP-OUTRO-SERVIDOR:/home/deployzdg/zpro.io/frontend/

# extrai arquivos
tar -xzf node_modules.tar.gz



Personalização do Layout

1. Esconder Menu Restrito Para Usuários

src/components/layout/sidebar.tsx

const navCategories = useMemo(() => {
  if (paymentOverdue) {
    console.log("[MENU] paymentOverdue ativo → menu reduzido");

    return [{
      key: "payment",
      label: t("paymentOverdueCategory"),
      icon: CreditCard,
      items: [{
        name: t("paymentOverdueItem"),
        href: "/configuracoesPagamentoAtrasado",
        icon: CreditCard
      }],
      defaultOpen: true,
    }] as NavCategory[];
  }

  const categories = getProfileMenus(
    profile,
    menuVisibility || {},
    t,
    isRestricted
  );

  // ???? só aplica filtro para esses perfis
const shouldFilter = ["user", "super"].includes(user?.profile ?? "");


  if (!shouldFilter) {
    console.log("[MENU] filtro ignorado para perfil:", user?.profile);
    return categories;
  }

  const permissions = user?.menuPermissions || {};

  const getPermission = (routeName?: string) => {
    if (!routeName) return undefined;

    if (routeName === "agenda") {
      return permissions["agendamentos"];
    }

    if (routeName === "funil") {
      return permissions["chat-flow"];
    }

    return permissions[routeName];
  };

  console.log("[MENU] permissions:", permissions);
  console.log("[MENU] categories (original):", categories);

  const filtered = categories
    .map(category => {
      console.group(`???? CATEGORY: ${category.key}`);

      const items = (category.items || []).filter(item => {
        const perm = getPermission(item.routeName);

        const condition =
          !item.routeName || perm !== false;

        const reason = !item.routeName
          ? "sem routeName (sempre visível)"
          : perm === false
            ? "permission = false (REMOVIDO)"
            : perm === true
              ? "permission = true (mantido)"
              : "permission undefined (mantido)";

        console.log("ITEM:", {
          category: category.key,
          name: item.name,
          routeName: item.routeName,
          permission: perm,
          condition,
          reason
        });

        return condition;
      });

      const subgroups = category.subgroups?.map(sub => {
        console.group(`???? SUBGROUP: ${sub.label}`);

        if (
          category.key === "comunicacao-marketing" &&
          sub.label === "Redes Sociais"
        ) {
          console.log("???? SUBGROUP BLOQUEADO:", {
            category: category.key,
            subgroup: sub.label,
            reason: "Redes Sociais desabilitado"
          });

          console.groupEnd();

          return {
            ...sub,
            items: []
          };
        }

        const subItems = sub.items.filter(item => {
          const perm = getPermission(item.routeName);

          const condition =
            !item.routeName || perm !== false;

          const reason = !item.routeName
            ? "sem routeName (sempre visível)"
            : perm === false
              ? "permission = false (REMOVIDO)"
              : perm === true
                ? "permission = true (mantido)"
                : "permission undefined (mantido)";

          console.log("SUB ITEM:", {
            category: category.key,
            subgroup: sub.label,
            name: item.name,
            routeName: item.routeName,
            permission: perm,
            condition,
            reason
          });

          return condition;
        });

        console.groupEnd();

        return {
          ...sub,
          items: subItems
        };
      });

      console.groupEnd();

      return {
        ...category,
        items,
        subgroups
      };
    })
    .filter(category => {
      const hasItems = !!category.items?.length;
      const hasSubItems = !!category.subgroups?.some(
        subgroup => subgroup.items.length > 0
      );

      const keep = hasItems || hasSubItems;

      console.log("???? CATEGORY RESULT:", {
        key: category.key,
        hasItems,
        hasSubItems,
        keep
      });

      return keep;
    });

  console.log("[MENU] categories (filtered):", filtered);

  return filtered;

// eslint-disable-next-line react-hooks/exhaustive-deps
}, [
  profile,
  menuVisibility,
  isRestricted,
  paymentOverdue,
  user
]);



2. Mostrar apenas canais do supervisor

src/app/(dashboard)/sessoes/page.tsx

  const loadChannels = useCallback(async () => {
    try {
      const { data } = await fetchWhatsapps();
     
      // SEMPRE QUE O USUARIO FOR SUPERVISOR
      if( user?.profile === 'super' ){
        // FILTRA E MOSTRA APENAS OS CANAIS COM O TELEFONE DO SUPER
        // console.log("USER PHONE:", user?.phone);
        // console.log("DATA ORIGINAL:", data);
        const filtered = data.filter((ch) => {
          // se não tiver user ainda, não filtra (evita bug)
          if (!user?.phone) return true;
          return ch.name === user.phone;
        });
        // console.log("DATA FILTRADA:", filtered);
        const list = filtered;
      }else{
        // original é apenas o trecho abaixo
        // recebe direto de data, sem filtrar
        const list = Array.isArray(data) ? data : [];
      }

    } catch {
      toast.error(t("errorLoadingChannels"));
    } finally {
      setLoading(false);
    }
  }, [t]);





Novidade!

Precisando do Suporte ou Buscando Consultoria?

Entre em contato pelo whats: https://wa.me/5547992434350

Núcleo de Negócios WEB
Sua Empresa Grande Na Internet!

uptime
https://www.nucleodenegociosweb.com.br/servicos/atendimento-whatsapp/crm-para-whatsapp/