Mapa de Stores Zustand — Completo

Stores do sistema (src/stores/)

Autenticação e Usuário

StoreArquivoDados principais
auth-storeauth-store.tsuser, token, isAuthenticated, clearAuth(), isRestrictedUser()
users-storeusers-store.tslista de usuarios online

Atendimento (core)

StoreArquivoDados principais
ticket-storeticket-store.tsPRINCIPAL — tickets, currentTicket, messages, updateTicket()
ticket-filter-storeticket-filter-store.tsfiltros de ticket ativos
notification-storenotification-store.tsnotificacoes de tickets
urgency-storeurgency-store.tstickets urgentes
chat-draft-storechat-draft-store.tsrascunhos de mensagem por ticket

Canais e Chamadas

StoreArquivoDados principais
whatsapp-storewhatsapp-store.tscanais conectados, updateWhatsapp()
waba-call-storewaba-call-store.tsestado de chamada WABA ativa
dialog360-call-storedialog360-call-store.tschamada Dialog360
gupshup-call-storegupshup-call-store.tschamada Gupshup
private-call-storeprivate-call-store.tschamada privada WaVoIP
webphone-storewebphone-store.tsvisibilidade widget WaVoIP

Chat e Comunicacao

StoreArquivoDados principais
chat-storechat-store.tschat privado interno (mensagens, grupos, unread)
support-chat-storesupport-chat-store.tschat de suporte do sistema

UI e Experiencia

StoreArquivoDados principais
ui-storeui-store.tspreferencias UI (sidebar, modo monitor)
live-mode-storelive-mode-store.tsmodo ao vivo (blur de dados)
branding-storebranding-store.tslogo, cores, sons de notificacao
audio-player-storeaudio-player-store.tsplayer de audio de mensagens

Dados

StoreArquivoDados principais
contacts-storecontacts-store.tscache de contatos
activity-storeactivity-store.tslog de atividades

Utilitário

StoreArquivoDados principais
reset-all-storesreset-all-stores.tsreseta todos os stores (logout)

Padrão de uso

// Leitura seletiva (preferido — evita re-renders desnecessários)
const currentTicket = useTicketStore((s) => s.currentTicket);
const updateTicket = useTicketStore((s) => s.updateTicket);
 
// Leitura destrutiva (cuidado — re-render em qualquer mudança)
const { tickets, messages } = useTicketStore();
 
// Fora de componente React (em handlers/callbacks)
const { updateTicket } = useTicketStore.getState();

Fluxo de atualização de ticket via Socket

Backend emite socket → use-socket-tickets.ts → useTicketStore.updateTicket() → React re-render

Store crítico: ticket-store

O ticket-store é o coração do sistema. Atualizado por:

  1. Socket events (mensagens em tempo real)
  2. Chamadas diretas de API (ao fechar, transferir, etc)
  3. Otimistic updates (tags, status)

Usar updateTicketInStore de dentro do ChatHeader:

const { updateTicket: updateTicketInStore } = useTicketStore();
// NÃO declarar duas vezes no mesmo componente!