diff --git a/src/backend/base/langflow/api/v1/monitor.py b/src/backend/base/langflow/api/v1/monitor.py index 22b4a663d..8f8110879 100644 --- a/src/backend/base/langflow/api/v1/monitor.py +++ b/src/backend/base/langflow/api/v1/monitor.py @@ -1,8 +1,7 @@ from typing import List, Optional - +from uuid import UUID from fastapi import APIRouter, Depends, HTTPException, Query -from langflow.api.v1.schemas import MessageIds from langflow.services.deps import get_monitor_service from langflow.services.monitor.schema import ( MessageModelRequest, @@ -68,13 +67,13 @@ async def get_messages( raise HTTPException(status_code=500, detail=str(e)) -@router.post("/messages", status_code=204) +@router.delete("/messages", status_code=204) async def delete_messages( - message_ids: MessageIds, + message_ids: List[int], monitor_service: MonitorService = Depends(get_monitor_service), ): try: - monitor_service.delete_messages(message_ids=message_ids.ids) + monitor_service.delete_messages(message_ids=message_ids) except Exception as e: raise HTTPException(status_code=500, detail=str(e)) diff --git a/src/backend/base/langflow/api/v1/schemas.py b/src/backend/base/langflow/api/v1/schemas.py index c9dc28bcf..4a6868003 100644 --- a/src/backend/base/langflow/api/v1/schemas.py +++ b/src/backend/base/langflow/api/v1/schemas.py @@ -322,5 +322,3 @@ class FlowDataRequest(BaseModel): class ConfigResponse(BaseModel): frontend_timeout: int -class MessageIds(BaseModel): - ids: List[int] diff --git a/src/frontend/src/controllers/API/api.tsx b/src/frontend/src/controllers/API/api.tsx index d630c474f..32e04b8ac 100644 --- a/src/frontend/src/controllers/API/api.tsx +++ b/src/frontend/src/controllers/API/api.tsx @@ -48,7 +48,7 @@ function ApiInterceptor() { } await clearBuildVerticesState(error); return Promise.reject(error); - } + }, ); const isAuthorizedURL = (url) => { @@ -65,10 +65,10 @@ function ApiInterceptor() { const parsedURL = new URL(url); const isDomainAllowed = authorizedDomains.some( - (domain) => parsedURL.origin === new URL(domain).origin + (domain) => parsedURL.origin === new URL(domain).origin, ); const isEndpointAllowed = authorizedEndpoints.some((endpoint) => - parsedURL.pathname.includes(endpoint) + parsedURL.pathname.includes(endpoint), ); return isDomainAllowed || isEndpointAllowed; @@ -91,7 +91,8 @@ function ApiInterceptor() { if ( config?.url === lastUrl && !isContained && - lastMethodCalled === config.method + lastMethodCalled === config.method && + lastMethodCalled === "get" ) { return Promise.reject("Duplicate request"); } @@ -112,7 +113,7 @@ function ApiInterceptor() { }, (error) => { return Promise.reject(error); - } + }, ); return () => { @@ -144,7 +145,7 @@ function ApiInterceptor() { if (error?.config?.headers) { delete error.config.headers["Authorization"]; error.config.headers["Authorization"] = `Bearer ${cookies.get( - "access_token_lf" + "access_token_lf", )}`; const response = await axios.request(error.config); return response; diff --git a/src/frontend/src/controllers/API/index.ts b/src/frontend/src/controllers/API/index.ts index c1d3b24a0..c7f52f99e 100644 --- a/src/frontend/src/controllers/API/index.ts +++ b/src/frontend/src/controllers/API/index.ts @@ -1040,7 +1040,12 @@ export async function getMessagesTable( } export async function deleteMessagesFn(ids: number[]) { - return await api.post(`${BASE_URL_API}monitor/messages`, { - ids, - }); + try { + return await api.delete(`${BASE_URL_API}monitor/messages`, { + data: ids, + }); + } catch (error) { + console.error("Error deleting flows:", error); + throw error; + } } diff --git a/src/frontend/src/pages/SettingsPage/pages/messagesPage/hooks/use-remove-messages.tsx b/src/frontend/src/pages/SettingsPage/pages/messagesPage/hooks/use-remove-messages.tsx index 01c4eb446..78e8ff51d 100644 --- a/src/frontend/src/pages/SettingsPage/pages/messagesPage/hooks/use-remove-messages.tsx +++ b/src/frontend/src/pages/SettingsPage/pages/messagesPage/hooks/use-remove-messages.tsx @@ -12,22 +12,14 @@ const useRemoveMessages = ( const handleRemoveMessages = async () => { try { - // Call the deleteMessagesFn to perform the deletion await deleteMessagesFn(selectedRows); - - // Assuming deleteMessages is a separate function that updates state after deletion const res = await deleteMessages(selectedRows); setRows(res); - - // Clear the selected rows setSelectedRows([]); - - // Set success message setSuccessData({ title: "Messages deleted successfully.", }); } catch (error) { - // Set error message setErrorData({ title: "Error deleting messages.", });