Co-authored-by: domfelipe <53182096+domfelipe@users.noreply.github.com>
This commit is contained in:
gpt-engineer-app[bot] 2026-04-18 02:06:44 +00:00
parent 03253f6a38
commit 823e8fdaf7

View file

@ -1,12 +1,20 @@
"use client"; "use client";
import { createFileRoute } from "@tanstack/react-router"; import { createFileRoute, useNavigate } from "@tanstack/react-router";
import { Plug } from "lucide-react"; import { Plug } from "lucide-react";
import { useEffect } from "react";
import { toast } from "sonner";
import { useQueryClient } from "@tanstack/react-query";
import { useIntegrationCards } from "@/hooks/use-integrations"; 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";
export const Route = createFileRoute("/painel/integracoes/")({ export const Route = createFileRoute("/painel/integracoes/")({
validateSearch: (search: Record<string, unknown>) => ({
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,
}); });
@ -14,6 +22,21 @@ function IntegracoesPage() {
const { cards, isLoading, error, limit } = useIntegrationCards(); const { cards, isLoading, error, limit } = useIntegrationCards();
const { data: agent } = useAgentInstance(); const { data: agent } = useAgentInstance();
const agentReady = agent?.status === "active" || agent?.status === "ready"; const agentReady = agent?.status === "active" || agent?.status === "ready";
const search = Route.useSearch();
const navigate = useNavigate();
const queryClient = useQueryClient();
useEffect(() => {
if (search.status === "success" && search.mcp) {
toast.success(`${search.mcp} conectado com sucesso!`);
queryClient.invalidateQueries({ queryKey: ["user-integrations"] });
queryClient.invalidateQueries({ queryKey: ["user-integration-limits"] });
navigate({ to: "/painel/integracoes", search: {}, replace: true });
} else if (search.error) {
toast.error(`Erro ao conectar: ${search.error}`);
navigate({ to: "/painel/integracoes", search: {}, replace: true });
}
}, [search.status, search.error, search.mcp, navigate, queryClient]);
return ( return (
<div className="space-y-6"> <div className="space-y-6">