From 022ef7c028a7eef374b9cebc91a69ebd9a41c6ae Mon Sep 17 00:00:00 2001 From: anovazzi1 Date: Wed, 29 May 2024 17:15:21 -0300 Subject: [PATCH] feat: Add Messages page to SettingsPage Refactor the SettingsPage component to include a new "Messages" page. This page will be accessible through the "/settings/messages" route and will display messages related to user settings. The necessary changes have been made to the index.tsx file of the SettingsPage component and the routes.tsx file. --- src/frontend/src/controllers/API/index.ts | 6 +- .../src/modals/flowLogsModal/index.tsx | 2 +- src/frontend/src/pages/SettingsPage/index.tsx | 7 ++ .../SettingsPage/pages/messagesPage/index.tsx | 114 ++++++++++++++++++ src/frontend/src/routes.tsx | 2 + 5 files changed, 128 insertions(+), 3 deletions(-) create mode 100644 src/frontend/src/pages/SettingsPage/pages/messagesPage/index.tsx diff --git a/src/frontend/src/controllers/API/index.ts b/src/frontend/src/controllers/API/index.ts index b6dc2ef86..cfc687493 100644 --- a/src/frontend/src/controllers/API/index.ts +++ b/src/frontend/src/controllers/API/index.ts @@ -1022,12 +1022,14 @@ export async function getTransactionTable( } export async function getMessagesTable( - id: string, mode: "intersection" | "union", + id?: string, params = {}, ): Promise<{ rows: Array; columns: Array }> { const config = {}; - config["params"] = { flow_id: id }; + if (id) { + config["params"] = { flow_id: id }; + } if (params) { config["params"] = { ...config["params"], ...params }; } diff --git a/src/frontend/src/modals/flowLogsModal/index.tsx b/src/frontend/src/modals/flowLogsModal/index.tsx index 70a8802c2..bc11a2906 100644 --- a/src/frontend/src/modals/flowLogsModal/index.tsx +++ b/src/frontend/src/modals/flowLogsModal/index.tsx @@ -53,7 +53,7 @@ export default function FlowLogsModal({ setRows(rows); }); } else if (activeTab === "Messages") { - getMessagesTable(currentFlowId, "union").then((data) => { + getMessagesTable("union", currentFlowId).then((data) => { const { columns, rows } = data; setColumns(columns.map((col) => ({ ...col, editable: true }))); setRows(rows); diff --git a/src/frontend/src/pages/SettingsPage/index.tsx b/src/frontend/src/pages/SettingsPage/index.tsx index e4f856599..346fbbb99 100644 --- a/src/frontend/src/pages/SettingsPage/index.tsx +++ b/src/frontend/src/pages/SettingsPage/index.tsx @@ -43,6 +43,13 @@ export default function SettingsPage(): JSX.Element { ), }, + { + title: "Messages", + href: "/settings/messages", + icon: ( + + ), + }, ]; return ( >([]); + const [rows, setRows] = useState([]); + const removeGlobalVariable = useGlobalVariablesStore( + (state) => state.removeGlobalVariable, + ); + const setErrorData = useAlertStore((state) => state.setErrorData); + const getVariableId = useGlobalVariablesStore((state) => state.getVariableId); + + const [selectedRows, setSelectedRows] = useState([]); + + async function removeVariables() { + const deleteGlobalVariablesPromise = selectedRows.map(async (row) => { + const id = getVariableId(row); + const deleteGlobalVariables = deleteGlobalVariable(id!); + await deleteGlobalVariables; + }); + Promise.all(deleteGlobalVariablesPromise) + .then(() => { + selectedRows.forEach((row) => { + removeGlobalVariable(row); + }); + }) + .catch(() => { + setErrorData({ + title: `Error deleting global variables.`, + }); + }); + } + + useEffect(() => { + console.log("MessagesPage useEffect"); + getMessagesTable("union").then((data) => { + const { columns, rows } = data; + console.log(data); + setColumns(columns.map((col) => ({ ...col, editable: true }))); + setRows(rows); + }); + }, []); + + return ( +
+
+
+

+ Messages + +

+

+ Manage your messages as you like. +

+
+
+ +
+
+ +
+ + + { + setSelectedRows( + event.api.getSelectedRows().map((row) => row.name), + ); + }} + rowSelection="multiple" + suppressRowClickSelection={true} + pagination={true} + columnDefs={columns} + rowData={rows} + /> + + +
+
+ ); +} diff --git a/src/frontend/src/routes.tsx b/src/frontend/src/routes.tsx index 49b905f41..f6832848d 100644 --- a/src/frontend/src/routes.tsx +++ b/src/frontend/src/routes.tsx @@ -20,6 +20,7 @@ import ShortcutsPage from "./pages/SettingsPage/pages/ShortcutsPage"; import SignUp from "./pages/SignUpPage"; import StorePage from "./pages/StorePage"; import ViewPage from "./pages/ViewPage"; +import MessagesPage from "./pages/SettingsPage/pages/messagesPage"; const Router = () => { return ( @@ -58,6 +59,7 @@ const Router = () => { } /> } /> } /> + } />