From ba6c6084a428d863c17aae9cc97c0d8c99660604 Mon Sep 17 00:00:00 2001 From: "gpt-engineer-app[bot]" <159125892+gpt-engineer-app[bot]@users.noreply.github.com> Date: Fri, 24 Apr 2026 10:55:03 +0000 Subject: [PATCH 1/3] Changes Co-authored-by: domfelipe <53182096+domfelipe@users.noreply.github.com> --- .../telegram/TelegramOnboardingWizard.tsx | 33 +++++++++++++++++-- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/src/components/mika/telegram/TelegramOnboardingWizard.tsx b/src/components/mika/telegram/TelegramOnboardingWizard.tsx index 2f013d1..798a341 100644 --- a/src/components/mika/telegram/TelegramOnboardingWizard.tsx +++ b/src/components/mika/telegram/TelegramOnboardingWizard.tsx @@ -34,6 +34,23 @@ export function TelegramOnboardingWizard({ open, onOpenChange, initialStep }: Pr const [step, setStep] = useState(1); 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; + } + // Inicializa step ao abrir useEffect(() => { if (!open) return; @@ -41,16 +58,26 @@ export function TelegramOnboardingWizard({ open, onOpenChange, initialStep }: Pr setStep(Math.min(Math.max(initialStep, 1), TOTAL_STEPS)); 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); + return; + } if (typeof window !== "undefined") { const stored = window.localStorage.getItem(STORAGE_KEY); const parsed = stored ? Number(stored) : NaN; - if (Number.isFinite(parsed) && parsed >= 1 && parsed <= TOTAL_STEPS) { + // Usa o maior entre o derivado e o salvo, limitado ao derivado + // (nunca avança além do que o estado real permite) + if (Number.isFinite(parsed) && parsed >= 1 && parsed <= derived) { setStep(parsed); return; } } - setStep(1); - }, [open, initialStep]); + setStep(derived); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [open, initialStep, agent?.telegram_bot_token_vault_id, agent?.telegram_webhook_configured, agent?.telegram_first_message_received_at]); // Persiste step ao mudar useEffect(() => { From c6275966669870fe3f57af62684c64aef319c201 Mon Sep 17 00:00:00 2001 From: "gpt-engineer-app[bot]" <159125892+gpt-engineer-app[bot]@users.noreply.github.com> Date: Fri, 24 Apr 2026 10:55:24 +0000 Subject: [PATCH 2/3] Changes Co-authored-by: domfelipe <53182096+domfelipe@users.noreply.github.com> --- src/hooks/use-agent-instance.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/hooks/use-agent-instance.ts b/src/hooks/use-agent-instance.ts index 1f35f29..4db9353 100644 --- a/src/hooks/use-agent-instance.ts +++ b/src/hooks/use-agent-instance.ts @@ -10,6 +10,7 @@ export interface AgentInstance { uuid_tenant: string; status: string; telegram_bot_username: string | null; + telegram_bot_token_vault_id: string | null; telegram_webhook_configured: boolean; telegram_token_invalid: boolean; telegram_first_message_received_at: string | null; From 677edc160aa229fa7fd0d81f4eb6400d2df88544 Mon Sep 17 00:00:00 2001 From: "gpt-engineer-app[bot]" <159125892+gpt-engineer-app[bot]@users.noreply.github.com> Date: Fri, 24 Apr 2026 10:55:34 +0000 Subject: [PATCH 3/3] Changes Co-authored-by: domfelipe <53182096+domfelipe@users.noreply.github.com> --- src/hooks/use-agent-instance.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hooks/use-agent-instance.ts b/src/hooks/use-agent-instance.ts index 4db9353..d3e8081 100644 --- a/src/hooks/use-agent-instance.ts +++ b/src/hooks/use-agent-instance.ts @@ -31,7 +31,7 @@ export function useAgentInstance() { const { data, error } = await supabase .from("agent_instances") .select( - "id, user_id, uuid_tenant, status, telegram_bot_username, telegram_webhook_configured, telegram_token_invalid, telegram_first_message_received_at, telegram_connected_at, telegram_onboarding_completed, created_at", + "id, user_id, uuid_tenant, status, telegram_bot_username, telegram_bot_token_vault_id, telegram_webhook_configured, telegram_token_invalid, telegram_first_message_received_at, telegram_connected_at, telegram_onboarding_completed, created_at", ) .eq("user_id", user!.id) .maybeSingle();