From 42d5a501bb872b8818ad3b26ba49d6999bb9caa4 Mon Sep 17 00:00:00 2001 From: Gabriel Luiz Freitas Almeida Date: Mon, 12 Jun 2023 09:30:47 -0300 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=80=20feat(App.tsx):=20add=20SSEProvid?= =?UTF-8?q?er=20to=20App=20component=20=F0=9F=8E=89=20feat(SSEContext.tsx)?= =?UTF-8?q?:=20add=20SSEContext=20and=20SSEProvider=20components=20to=20ha?= =?UTF-8?q?ndle=20server-sent=20events=20The=20SSEProvider=20component=20w?= =?UTF-8?q?as=20added=20to=20the=20App=20component=20to=20provide=20the=20?= =?UTF-8?q?SSEContext=20to=20the=20TabsManagerComponent.=20The=20SSEContex?= =?UTF-8?q?t=20component=20was=20also=20added=20to=20handle=20server-sent?= =?UTF-8?q?=20events.=20The=20SSEContext=20component=20provides=20a=20way?= =?UTF-8?q?=20to=20update=20the=20sseData=20state=20and=20to=20access=20th?= =?UTF-8?q?e=20sseData=20state=20from=20any=20component=20that=20uses=20th?= =?UTF-8?q?e=20useSSE=20hook.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/frontend/src/App.tsx | 5 +++- src/frontend/src/contexts/SSEContext.tsx | 35 ++++++++++++++++++++++++ 2 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 src/frontend/src/contexts/SSEContext.tsx diff --git a/src/frontend/src/App.tsx b/src/frontend/src/App.tsx index f68c3ea73..04dbcdf04 100644 --- a/src/frontend/src/App.tsx +++ b/src/frontend/src/App.tsx @@ -14,6 +14,7 @@ import TabsManagerComponent from "./pages/FlowPage/components/tabsManagerCompone import { ErrorBoundary } from "react-error-boundary"; import CrashErrorComponent from "./components/CrashErrorComponent"; import { TabsContext } from "./contexts/tabsContext"; +import { SSEProvider } from "./contexts/SSEContext"; export default function App() { let { setCurrent, setShowSideBar, setIsStackedOpen } = @@ -128,7 +129,9 @@ export default function App() {
{/* Primary column */}
- + + +
diff --git a/src/frontend/src/contexts/SSEContext.tsx b/src/frontend/src/contexts/SSEContext.tsx new file mode 100644 index 000000000..8d90b26e2 --- /dev/null +++ b/src/frontend/src/contexts/SSEContext.tsx @@ -0,0 +1,35 @@ +import { + createContext, + useContext, + useState, + useEffect, + useCallback, +} from "react"; + +const initialValue = { + updateSSEData: ({}) => {}, + sseData: {}, +}; + +const SSEContext = createContext(initialValue); + +export function useSSE() { + return useContext(SSEContext); +} + +export function SSEProvider({ children }) { + const [sseData, setSSEData] = useState({}); + + const updateSSEData = useCallback((newData: any) => { + setSSEData((prevData) => ({ + ...prevData, + ...newData, + })); + }, []); + + return ( + + {children} + + ); +}