mirror of
https://github.com/melgarafael/DeskcommCRM.git
synced 2026-10-02 01:28:34 +08:00
As rotas respondem 200 {changed:false, motivo} quando a empresa já estava
no estado pedido — outro admin agiu antes e a tela estava velha. Os hooks
ignoravam a resposta e mostravam "Tenant suspenso/reativado com sucesso";
na suspensão por cobrança o admin leria "reativado" com a empresa parada.
Agora changed:false vira toast.info "Nada mudou" com o motivo traduzido
(pt/es), e motivo desconhecido não inventa causa.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
hooks/
React hooks compartilhados (Client Components).
A popular conforme as specs:
useSupabaseRealtime.ts— subscribe apostgres_changesfiltrado por tenantuseToast.ts— notificaçõesuseDebouncedCallback.tsuseTenant.ts— contexto do tenant atual (lê de cookie/header validado pelo server)useFeatureFlag.ts— flags simples por tenant (ex: ai_handoff_enabled)
Convenções:
- Sempre
"use client"no topo - Validar input com Zod onde aplicável
- Cleanup explícito em
useEffect(canais Realtime, listeners, timers)