feat: skip edit view for live connectors, disconnect directly from accounts list

This commit is contained in:
CREDO23 2026-04-23 08:51:31 +02:00
parent 80a349ea11
commit 9bb117ffa7
3 changed files with 45 additions and 24 deletions

View file

@ -123,8 +123,9 @@ export const ConnectorIndicator = forwardRef<ConnectorIndicatorHandle, Connector
handleSkipIndexing, handleSkipIndexing,
handleStartEdit, handleStartEdit,
handleSaveConnector, handleSaveConnector,
handleDisconnectConnector, handleDisconnectConnector,
handleBackFromEdit, handleDisconnectFromList,
handleBackFromEdit,
handleBackFromConnect, handleBackFromConnect,
handleBackFromYouTube, handleBackFromYouTube,
handleViewAccountsList, handleViewAccountsList,
@ -225,25 +226,27 @@ export const ConnectorIndicator = forwardRef<ConnectorIndicatorHandle, Connector
{isYouTubeView && searchSpaceId ? ( {isYouTubeView && searchSpaceId ? (
<YouTubeCrawlerView searchSpaceId={searchSpaceId} onBack={handleBackFromYouTube} /> <YouTubeCrawlerView searchSpaceId={searchSpaceId} onBack={handleBackFromYouTube} />
) : viewingMCPList ? ( ) : viewingMCPList ? (
<ConnectorAccountsListView <ConnectorAccountsListView
connectorType="MCP_CONNECTOR" connectorType="MCP_CONNECTOR"
connectorTitle="MCP Connectors" connectorTitle="MCP Connectors"
connectors={(allConnectors || []) as SearchSourceConnector[]} connectors={(allConnectors || []) as SearchSourceConnector[]}
indexingConnectorIds={indexingConnectorIds} indexingConnectorIds={indexingConnectorIds}
onBack={handleBackFromMCPList} onBack={handleBackFromMCPList}
onManage={handleStartEdit} onManage={handleStartEdit}
onAddAccount={handleAddNewMCPFromList} onDisconnect={(connector) => handleDisconnectFromList(connector, () => refreshConnectors())}
addButtonText="Add New MCP Server" onAddAccount={handleAddNewMCPFromList}
/> addButtonText="Add New MCP Server"
/>
) : viewingAccountsType ? ( ) : viewingAccountsType ? (
<ConnectorAccountsListView <ConnectorAccountsListView
connectorType={viewingAccountsType.connectorType} connectorType={viewingAccountsType.connectorType}
connectorTitle={viewingAccountsType.connectorTitle} connectorTitle={viewingAccountsType.connectorTitle}
connectors={(connectors || []) as SearchSourceConnector[]} connectors={(connectors || []) as SearchSourceConnector[]}
indexingConnectorIds={indexingConnectorIds} indexingConnectorIds={indexingConnectorIds}
onBack={handleBackFromAccountsList} onBack={handleBackFromAccountsList}
onManage={handleStartEdit} onManage={handleStartEdit}
onAddAccount={() => { onDisconnect={(connector) => handleDisconnectFromList(connector, () => refreshConnectors())}
onAddAccount={() => {
// Check both OAUTH_CONNECTORS and COMPOSIO_CONNECTORS // Check both OAUTH_CONNECTORS and COMPOSIO_CONNECTORS
const oauthConnector = const oauthConnector =
OAUTH_CONNECTORS.find( OAUTH_CONNECTORS.find(

View file

@ -17,6 +17,7 @@ import { SummaryConfig } from "../../components/summary-config";
import { VisionLLMConfig } from "../../components/vision-llm-config"; import { VisionLLMConfig } from "../../components/vision-llm-config";
import { LIVE_CONNECTOR_TYPES, getReauthEndpoint } from "../../constants/connector-constants"; import { LIVE_CONNECTOR_TYPES, getReauthEndpoint } from "../../constants/connector-constants";
import { getConnectorDisplayName } from "../../tabs/all-connectors-tab"; import { getConnectorDisplayName } from "../../tabs/all-connectors-tab";
import { MCPServiceConfig } from "../components/mcp-service-config";
import { type ConnectorConfigProps, getConnectorConfigComponent } from "../index"; import { type ConnectorConfigProps, getConnectorConfigComponent } from "../index";
interface ConnectorEditViewProps { interface ConnectorEditViewProps {
@ -110,10 +111,7 @@ export const ConnectorEditView: FC<ConnectorEditViewProps> = ({
// Get connector-specific config component (MCP-backed connectors use a generic view) // Get connector-specific config component (MCP-backed connectors use a generic view)
const ConnectorConfigComponent = useMemo(() => { const ConnectorConfigComponent = useMemo(() => {
if (isMCPBacked) { if (isMCPBacked) return MCPServiceConfig;
const { MCPServiceConfig } = require("../components/mcp-service-config");
return MCPServiceConfig as FC<ConnectorConfigProps>;
}
return getConnectorConfigComponent(connector.connector_type); return getConnectorConfigComponent(connector.connector_type);
}, [connector.connector_type, isMCPBacked]); }, [connector.connector_type, isMCPBacked]);
const [isScrolled, setIsScrolled] = useState(false); const [isScrolled, setIsScrolled] = useState(false);

View file

@ -1311,6 +1311,25 @@ export const useConnectorDialog = () => {
[editingConnector, searchSpaceId, deleteConnector, cameFromMCPList, setIsOpen] [editingConnector, searchSpaceId, deleteConnector, cameFromMCPList, setIsOpen]
); );
const handleDisconnectFromList = useCallback(
async (connector: SearchSourceConnector, refreshConnectors: () => void) => {
if (!searchSpaceId) return;
try {
await deleteConnector({ id: connector.id });
trackConnectorDeleted(Number(searchSpaceId), connector.connector_type, connector.id);
toast.success(`${connector.name} disconnected successfully`);
refreshConnectors();
queryClient.invalidateQueries({
queryKey: cacheKeys.logs.summary(Number(searchSpaceId)),
});
} catch (error) {
console.error("Error disconnecting connector:", error);
toast.error("Failed to disconnect connector");
}
},
[searchSpaceId, deleteConnector]
);
// Handle quick index (index with selected date range, or backend defaults if none selected) // Handle quick index (index with selected date range, or backend defaults if none selected)
const handleQuickIndexConnector = useCallback( const handleQuickIndexConnector = useCallback(
async ( async (
@ -1484,6 +1503,7 @@ export const useConnectorDialog = () => {
handleStartEdit, handleStartEdit,
handleSaveConnector, handleSaveConnector,
handleDisconnectConnector, handleDisconnectConnector,
handleDisconnectFromList,
handleBackFromEdit, handleBackFromEdit,
handleBackFromConnect, handleBackFromConnect,
handleBackFromYouTube, handleBackFromYouTube,