Co-authored-by: domfelipe <53182096+domfelipe@users.noreply.github.com>
This commit is contained in:
gpt-engineer-app[bot] 2026-04-22 14:32:51 +00:00
parent a1f95a4888
commit 8532faecec
2 changed files with 20 additions and 12 deletions

View file

@ -1,6 +1,8 @@
"use client"; "use client";
import { createFileRoute, Link } from "@tanstack/react-router"; import { createFileRoute, Link } from "@tanstack/react-router";
import { zodValidator, fallback } from "@tanstack/zod-adapter";
import { z } from "zod";
import { useEffect, useState } from "react"; import { useEffect, useState } from "react";
import { ArrowRight, CheckCircle2, Loader2, Sparkles } from "lucide-react"; import { ArrowRight, CheckCircle2, Loader2, Sparkles } from "lucide-react";
import { useSubscription } from "@/hooks/use-profile"; import { useSubscription } from "@/hooks/use-profile";
@ -17,10 +19,12 @@ import { TelegramOnboardingWizard } from "@/components/mika/telegram/TelegramOnb
import { toast } from "sonner"; import { toast } from "sonner";
import { cn } from "@/lib/utils"; import { cn } from "@/lib/utils";
const dashboardSearchSchema = z.object({
status: fallback(z.string().optional(), undefined),
});
export const Route = createFileRoute("/painel/")({ export const Route = createFileRoute("/painel/")({
validateSearch: (search: Record<string, unknown>) => ({ validateSearch: zodValidator(dashboardSearchSchema),
status: typeof search.status === "string" ? (search.status as string) : undefined,
}),
component: DashboardPage, component: DashboardPage,
}); });
@ -36,11 +40,11 @@ function DashboardPage() {
useEffect(() => { useEffect(() => {
if (search.status !== "success" || !agent) return; if (search.status !== "success" || !agent) return;
if (agent.status === "suspended" || agent.status === "error") { if (agent.status === "suspended" || agent.status === "error") {
navigate({ search: {}, replace: true }); navigate({ search: { status: undefined }, replace: true });
return; return;
} }
if (!agent.telegram_bot_username) setWizardOpen(true); if (!agent.telegram_bot_username) setWizardOpen(true);
navigate({ search: {}, replace: true }); navigate({ search: { status: undefined }, replace: true });
}, [search.status, agent, navigate]); }, [search.status, agent, navigate]);
useEffect(() => { useEffect(() => {

View file

@ -1,6 +1,8 @@
"use client"; "use client";
import { createFileRoute, useNavigate } from "@tanstack/react-router"; import { createFileRoute, useNavigate } from "@tanstack/react-router";
import { zodValidator, fallback } from "@tanstack/zod-adapter";
import { z } from "zod";
import { Plug } from "lucide-react"; import { Plug } from "lucide-react";
import { useEffect } from "react"; import { useEffect } from "react";
import { toast } from "sonner"; import { toast } from "sonner";
@ -9,12 +11,14 @@ import { useIntegrationCards } from "@/hooks/use-integrations";
import { useAgentInstance } from "@/hooks/use-agent-instance"; import { useAgentInstance } from "@/hooks/use-agent-instance";
import { IntegrationCard } from "@/components/mika/integrations/IntegrationCard"; import { IntegrationCard } from "@/components/mika/integrations/IntegrationCard";
const integracoesSearchSchema = z.object({
status: fallback(z.string().optional(), undefined),
error: fallback(z.string().optional(), undefined),
mcp: fallback(z.string().optional(), undefined),
});
export const Route = createFileRoute("/painel/integracoes/")({ export const Route = createFileRoute("/painel/integracoes/")({
validateSearch: (search: Record<string, unknown>) => ({ validateSearch: zodValidator(integracoesSearchSchema),
status: typeof search.status === "string" ? search.status : undefined,
error: typeof search.error === "string" ? search.error : undefined,
mcp: typeof search.mcp === "string" ? search.mcp : undefined,
}),
component: IntegracoesPage, component: IntegracoesPage,
}); });
@ -31,10 +35,10 @@ function IntegracoesPage() {
toast.success(`${search.mcp} conectado com sucesso!`); toast.success(`${search.mcp} conectado com sucesso!`);
queryClient.invalidateQueries({ queryKey: ["user-integrations"] }); queryClient.invalidateQueries({ queryKey: ["user-integrations"] });
queryClient.invalidateQueries({ queryKey: ["user-integration-limits"] }); queryClient.invalidateQueries({ queryKey: ["user-integration-limits"] });
navigate({ to: "/painel/integracoes", search: {}, replace: true }); navigate({ to: "/painel/integracoes", search: { status: undefined, error: undefined, mcp: undefined }, replace: true });
} else if (search.error) { } else if (search.error) {
toast.error(`Erro ao conectar: ${search.error}`); toast.error(`Erro ao conectar: ${search.error}`);
navigate({ to: "/painel/integracoes", search: {}, replace: true }); navigate({ to: "/painel/integracoes", search: { status: undefined, error: undefined, mcp: undefined }, replace: true });
} }
}, [search.status, search.error, search.mcp, navigate, queryClient]); }, [search.status, search.error, search.mcp, navigate, queryClient]);