♻️ (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 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))

View file

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

View file

@ -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;

View file

@ -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;
}
}

View file

@ -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.",
});