mirror of
https://github.com/domfelipe/mika-agent-assist.git
synced 2026-08-07 15:36:49 +00:00
Corrigiu lógica do wizard
X-Lovable-Edit-ID: edt-61c7ebff-9762-4734-a5d5-1db6a1d61adb Co-authored-by: domfelipe <53182096+domfelipe@users.noreply.github.com>
This commit is contained in:
commit
775ae3d4ba
2 changed files with 32 additions and 4 deletions
|
|
@ -34,6 +34,23 @@ export function TelegramOnboardingWizard({ open, onOpenChange, initialStep }: Pr
|
||||||
const [step, setStep] = useState(1);
|
const [step, setStep] = useState(1);
|
||||||
const [validated, setValidated] = useState<ValidatedBot | null>(null);
|
const [validated, setValidated] = useState<ValidatedBot | null>(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
|
// Inicializa step ao abrir
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!open) return;
|
if (!open) return;
|
||||||
|
|
@ -41,16 +58,26 @@ export function TelegramOnboardingWizard({ open, onOpenChange, initialStep }: Pr
|
||||||
setStep(Math.min(Math.max(initialStep, 1), TOTAL_STEPS));
|
setStep(Math.min(Math.max(initialStep, 1), TOTAL_STEPS));
|
||||||
return;
|
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") {
|
if (typeof window !== "undefined") {
|
||||||
const stored = window.localStorage.getItem(STORAGE_KEY);
|
const stored = window.localStorage.getItem(STORAGE_KEY);
|
||||||
const parsed = stored ? Number(stored) : NaN;
|
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);
|
setStep(parsed);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
setStep(1);
|
setStep(derived);
|
||||||
}, [open, initialStep]);
|
// 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
|
// Persiste step ao mudar
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@ export interface AgentInstance {
|
||||||
uuid_tenant: string;
|
uuid_tenant: string;
|
||||||
status: string;
|
status: string;
|
||||||
telegram_bot_username: string | null;
|
telegram_bot_username: string | null;
|
||||||
|
telegram_bot_token_vault_id: string | null;
|
||||||
telegram_webhook_configured: boolean;
|
telegram_webhook_configured: boolean;
|
||||||
telegram_token_invalid: boolean;
|
telegram_token_invalid: boolean;
|
||||||
telegram_first_message_received_at: string | null;
|
telegram_first_message_received_at: string | null;
|
||||||
|
|
@ -30,7 +31,7 @@ export function useAgentInstance() {
|
||||||
const { data, error } = await supabase
|
const { data, error } = await supabase
|
||||||
.from("agent_instances")
|
.from("agent_instances")
|
||||||
.select(
|
.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)
|
.eq("user_id", user!.id)
|
||||||
.maybeSingle();
|
.maybeSingle();
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue