♻️ (monitor.py): change POST to DELETE for delete_messages endpoint

♻️ (schemas.py): remove unused MessageIds schema
♻️ (api.tsx): add missing commas in ApiInterceptor function
🐛 (api.tsx): fix duplicate request check to include method "get"
♻️ (index.ts): change deleteMessagesFn to use DELETE method instead of POST
♻️ (use-remove-messages.tsx): clean up comments and improve error handling
This commit is contained in:
cristhianzl 2024-06-03 10:29:58 -03:00
commit 21a8545ddb
5 changed files with 19 additions and 24 deletions

View file

@ -1,8 +1,7 @@
from typing import List, Optional from typing import List, Optional
from uuid import UUID
from fastapi import APIRouter, Depends, HTTPException, Query 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.deps import get_monitor_service
from langflow.services.monitor.schema import ( from langflow.services.monitor.schema import (
MessageModelRequest, MessageModelRequest,
@ -68,13 +67,13 @@ async def get_messages(
raise HTTPException(status_code=500, detail=str(e)) raise HTTPException(status_code=500, detail=str(e))
@router.post("/messages", status_code=204) @router.delete("/messages", status_code=204)
async def delete_messages( async def delete_messages(
message_ids: MessageIds, message_ids: List[int],
monitor_service: MonitorService = Depends(get_monitor_service), monitor_service: MonitorService = Depends(get_monitor_service),
): ):
try: try:
monitor_service.delete_messages(message_ids=message_ids.ids) monitor_service.delete_messages(message_ids=message_ids)
except Exception as e: except Exception as e:
raise HTTPException(status_code=500, detail=str(e)) raise HTTPException(status_code=500, detail=str(e))

View file

@ -322,5 +322,3 @@ class FlowDataRequest(BaseModel):
class ConfigResponse(BaseModel): class ConfigResponse(BaseModel):
frontend_timeout: int frontend_timeout: int
class MessageIds(BaseModel):
ids: List[int]

View file

@ -48,7 +48,7 @@ function ApiInterceptor() {
} }
await clearBuildVerticesState(error); await clearBuildVerticesState(error);
return Promise.reject(error); return Promise.reject(error);
} },
); );
const isAuthorizedURL = (url) => { const isAuthorizedURL = (url) => {
@ -65,10 +65,10 @@ function ApiInterceptor() {
const parsedURL = new URL(url); const parsedURL = new URL(url);
const isDomainAllowed = authorizedDomains.some( const isDomainAllowed = authorizedDomains.some(
(domain) => parsedURL.origin === new URL(domain).origin (domain) => parsedURL.origin === new URL(domain).origin,
); );
const isEndpointAllowed = authorizedEndpoints.some((endpoint) => const isEndpointAllowed = authorizedEndpoints.some((endpoint) =>
parsedURL.pathname.includes(endpoint) parsedURL.pathname.includes(endpoint),
); );
return isDomainAllowed || isEndpointAllowed; return isDomainAllowed || isEndpointAllowed;
@ -91,7 +91,8 @@ function ApiInterceptor() {
if ( if (
config?.url === lastUrl && config?.url === lastUrl &&
!isContained && !isContained &&
lastMethodCalled === config.method lastMethodCalled === config.method &&
lastMethodCalled === "get"
) { ) {
return Promise.reject("Duplicate request"); return Promise.reject("Duplicate request");
} }
@ -112,7 +113,7 @@ function ApiInterceptor() {
}, },
(error) => { (error) => {
return Promise.reject(error); return Promise.reject(error);
} },
); );
return () => { return () => {
@ -144,7 +145,7 @@ function ApiInterceptor() {
if (error?.config?.headers) { if (error?.config?.headers) {
delete error.config.headers["Authorization"]; delete error.config.headers["Authorization"];
error.config.headers["Authorization"] = `Bearer ${cookies.get( error.config.headers["Authorization"] = `Bearer ${cookies.get(
"access_token_lf" "access_token_lf",
)}`; )}`;
const response = await axios.request(error.config); const response = await axios.request(error.config);
return response; return response;

View file

@ -1040,7 +1040,12 @@ export async function getMessagesTable(
} }
export async function deleteMessagesFn(ids: number[]) { export async function deleteMessagesFn(ids: number[]) {
return await api.post(`${BASE_URL_API}monitor/messages`, { try {
ids, return await api.delete(`${BASE_URL_API}monitor/messages`, {
}); data: ids,
});
} catch (error) {
console.error("Error deleting flows:", error);
throw error;
}
} }

View file

@ -12,22 +12,14 @@ const useRemoveMessages = (
const handleRemoveMessages = async () => { const handleRemoveMessages = async () => {
try { try {
// Call the deleteMessagesFn to perform the deletion
await deleteMessagesFn(selectedRows); await deleteMessagesFn(selectedRows);
// Assuming deleteMessages is a separate function that updates state after deletion
const res = await deleteMessages(selectedRows); const res = await deleteMessages(selectedRows);
setRows(res); setRows(res);
// Clear the selected rows
setSelectedRows([]); setSelectedRows([]);
// Set success message
setSuccessData({ setSuccessData({
title: "Messages deleted successfully.", title: "Messages deleted successfully.",
}); });
} catch (error) { } catch (error) {
// Set error message
setErrorData({ setErrorData({
title: "Error deleting messages.", title: "Error deleting messages.",
}); });