diff --git a/src/components/mika/telegram/StepToken.tsx b/src/components/mika/telegram/StepToken.tsx index 930545f..d2a8bab 100644 --- a/src/components/mika/telegram/StepToken.tsx +++ b/src/components/mika/telegram/StepToken.tsx @@ -101,11 +101,13 @@ export function StepToken({ onValidated, onNext, validated }: Props) { )} -
- -
+ {state !== "success" && ( +
+ +
+ )} ); } diff --git a/src/components/mika/telegram/TelegramOnboardingWizard.tsx b/src/components/mika/telegram/TelegramOnboardingWizard.tsx index 798a341..e519e9d 100644 --- a/src/components/mika/telegram/TelegramOnboardingWizard.tsx +++ b/src/components/mika/telegram/TelegramOnboardingWizard.tsx @@ -14,10 +14,9 @@ import { toast } from "sonner"; import { StepWelcome } from "./StepWelcome"; import { StepCreateBot } from "./StepCreateBot"; import { StepToken, type ValidatedBot } from "./StepToken"; -import { StepWaiting } from "./StepWaiting"; const STORAGE_KEY = "mika-onboarding-last-step"; -const TOTAL_STEPS = 4; +const TOTAL_STEPS = 3; interface Props { open: boolean; @@ -35,19 +34,11 @@ export function TelegramOnboardingWizard({ open, onOpenChange, initialStep }: Pr const [validated, setValidated] = useState(null); // Deriva o passo inicial do estado real do agente. - // Só pula para passos avançados se houver evidência concreta no banco. function deriveStepFromAgent(): number { if (!agent) return 1; const hasToken = !!agent.telegram_bot_token_vault_id; const hasUsername = !!agent.telegram_bot_username; - const webhookOk = !!agent.telegram_webhook_configured; - const firstMsg = !!agent.telegram_first_message_received_at; - - // Token validado + webhook configurado → aguardando 1ª mensagem (ou já recebida) - if (hasToken && hasUsername && (webhookOk || firstMsg)) return 4; - // Token validado mas webhook ainda não → ainda no passo do token (3) if (hasToken && hasUsername) return 3; - // Sem token: sempre começa do início return 1; } @@ -59,7 +50,6 @@ export function TelegramOnboardingWizard({ open, onOpenChange, initialStep }: Pr return; } const derived = deriveStepFromAgent(); - // Se o agente ainda não tem token, ignora qualquer valor antigo do localStorage if (derived === 1 && typeof window !== "undefined") { window.localStorage.removeItem(STORAGE_KEY); setStep(1); @@ -91,35 +81,30 @@ export function TelegramOnboardingWizard({ open, onOpenChange, initialStep }: Pr onOpenChange(false); } - async function handleFinish() { - if (!agent || !user) return handleClose(); - const { error } = await supabase - .from("agent_instances") - .update({ telegram_onboarding_completed: true }) - .eq("id", agent.id); - if (error) { - toast.error("Não foi possível salvar o status do onboarding."); - return; + + // Após validar token, recarrega agent_instance, marca onboarding como completo, + // mostra toast de sucesso e fecha o wizard automaticamente. + async function handleValidated(bot: ValidatedBot) { + setValidated(bot); + if (user) { + await queryClient.invalidateQueries({ queryKey: ["agent-instance", user.id] }); + } + if (agent) { + await supabase + .from("agent_instances") + .update({ telegram_onboarding_completed: true }) + .eq("id", agent.id); + if (user) { + await queryClient.invalidateQueries({ queryKey: ["agent-instance", user.id] }); + } } if (typeof window !== "undefined") { window.localStorage.removeItem(STORAGE_KEY); } - await queryClient.invalidateQueries({ queryKey: ["agent-instance", user.id] }); - toast.success("Onboarding concluído!"); + toast.success("Token salvo! Seu agente será ativado em alguns minutos."); onOpenChange(false); } - // Após validar token, recarrega agent_instance (já tem bot_username persistido) - function handleValidated(bot: ValidatedBot) { - setValidated(bot); - if (user) { - queryClient.invalidateQueries({ queryKey: ["agent-instance", user.id] }); - } - } - - const botUsername = validated?.bot_username ?? agent?.telegram_bot_username ?? ""; - const connectedAt = agent?.telegram_connected_at ?? null; - return ( @@ -137,7 +122,7 @@ export function TelegramOnboardingWizard({ open, onOpenChange, initialStep }: Pr Conectar Telegram ao Mika - Wizard guiado para conectar seu agente Mika ao Telegram em 4 passos. + Wizard guiado para conectar seu agente Mika ao Telegram em 3 passos.
@@ -178,22 +163,9 @@ export function TelegramOnboardingWizard({ open, onOpenChange, initialStep }: Pr setStep(4)} + onNext={() => { /* fechamento é feito em handleValidated */ }} /> )} - {step === 4 && agent && botUsername && ( - - )} - {step === 4 && (!agent || !botUsername) && ( -
- Conecte o bot primeiro para receber a primeira mensagem. -
- )}
diff --git a/src/routes/bem-vindo.tsx b/src/routes/bem-vindo.tsx index efb495a..defcfc6 100644 --- a/src/routes/bem-vindo.tsx +++ b/src/routes/bem-vindo.tsx @@ -358,8 +358,13 @@ function WelcomePage() { open={wizardOpen} onOpenChange={(open) => { setWizardOpen(open); - // Quando fechar o wizard, leva ao painel if (!open) { + // Se o token foi salvo (vault_id presente), considera sucesso + if (agent?.telegram_bot_token_vault_id) { + toast.success( + "Perfeito! Seu agente está sendo ativado. Você receberá uma mensagem no Telegram quando estiver pronto! 🎉", + ); + } navigate({ to: "/painel", search: {} }); } }}