diff --git a/src/components/mika/integrations/DisconnectMCPDialog.tsx b/src/components/mika/integrations/DisconnectMCPDialog.tsx index 3d923a4..94e8ad4 100644 --- a/src/components/mika/integrations/DisconnectMCPDialog.tsx +++ b/src/components/mika/integrations/DisconnectMCPDialog.tsx @@ -71,6 +71,7 @@ export function DisconnectMCPDialog({ onDisconnected?.(); } + return ( @@ -109,6 +110,7 @@ export function DisconnectMCPDialog({

Elas serão pausadas automaticamente ao desconectar. +

@@ -125,6 +127,7 @@ export function DisconnectMCPDialog({ handleDisconnect(); }} disabled={submitting || isLoading} + className="bg-destructive text-destructive-foreground hover:bg-destructive/90" > {submitting ? "Desconectando..." : "Desconectar"} diff --git a/src/routes/painel.integracoes.$slug.tsx b/src/routes/painel.integracoes.$slug.tsx index 3df275f..2e05919 100644 --- a/src/routes/painel.integracoes.$slug.tsx +++ b/src/routes/painel.integracoes.$slug.tsx @@ -122,6 +122,7 @@ function IntegrationDetailPage() { queryClient.invalidateQueries({ queryKey: ["user-integrations"] }); } + async function handleRefresh() { setRefreshing(true); const { data, error } = await invokeFunction<{ @@ -300,6 +301,7 @@ function IntegrationDetailPage() { mcpSlug={mcp.slug} mcpName={mcp.name} /> + ); } diff --git a/supabase/functions/_shared/oauth-providers.ts b/supabase/functions/_shared/oauth-providers.ts index 8170424..bfb9085 100644 --- a/supabase/functions/_shared/oauth-providers.ts +++ b/supabase/functions/_shared/oauth-providers.ts @@ -65,6 +65,7 @@ export function getProviderEnv(slug: ProviderSlug, redirectUri: string): Provide return { clientId, clientSecret, redirectUri }; } + /** * Monta a URL de autorização para iniciar o fluxo OAuth. */ @@ -442,6 +443,7 @@ export async function revokeToken( // Todoist precisa client_id/secret + access_token no body const clientId = readFirstEnv(["TODOIST_CLIENT_ID", "TODOIST_OAUTH_CLIENT_ID"]); const clientSecret = readFirstEnv(["TODOIST_CLIENT_SECRET", "TODOIST_OAUTH_CLIENT_SECRET"]); + const body = new URLSearchParams({ client_id: clientId, client_secret: clientSecret, diff --git a/supabase/functions/disconnect-integration/index.ts b/supabase/functions/disconnect-integration/index.ts index 3aedb51..f594f03 100644 --- a/supabase/functions/disconnect-integration/index.ts +++ b/supabase/functions/disconnect-integration/index.ts @@ -119,6 +119,7 @@ Deno.serve(async (req) => { if (!pErr) pausedCount = jobsToPause.length; } + // 2. Busca tokens ANTES de qualquer delete const accessToken = integ.access_token_vault_id ? await getDecryptedSecret(admin, integ.access_token_vault_id)