From 295f5854d5ca270ff7f5bc3bb27de79aebb5853d Mon Sep 17 00:00:00 2001 From: Mathias Wagner Date: Sat, 3 Jun 2023 01:32:41 +0200 Subject: [PATCH] Created the ServerContext.jsx --- .../common/contexts/Server/ServerContext.jsx | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 client/src/common/contexts/Server/ServerContext.jsx diff --git a/client/src/common/contexts/Server/ServerContext.jsx b/client/src/common/contexts/Server/ServerContext.jsx new file mode 100644 index 0000000..a2814ec --- /dev/null +++ b/client/src/common/contexts/Server/ServerContext.jsx @@ -0,0 +1,41 @@ +import React, {createContext, useEffect, useState} from "react"; +import {v4 as uuid} from 'uuid'; +import {postRequest} from "@/common/utils/RequestUtil.js"; + +export const ServerContext = createContext({}); + +export const ServerProvider = (props) => { + const [servers, setServers] = useState(localStorage.getItem("servers") + ? JSON.parse(localStorage.getItem("servers")) : []); + + useEffect(() => { + localStorage.setItem("servers", JSON.stringify(servers)); + }, [servers]); + + const addServer = async (server) => { + const data = await postRequest("server/check", server); + if (data?.status === "failed") return false; + + setServers(servers => [...servers, {...server, id: uuid(), distro: data?.id}]); + + return true; + } + + const updateServer = async (id, newServer) => { + const data = await postRequest("server/check", newServer); + + if (data?.status === "failed") return false; + + setServers(servers => servers.map(server => server.id === id ? {...server, ...newServer, distro: data?.id} : server)); + + return true; + } + + const deleteServer = (id) => setServers(servers => servers.filter(server => server.id !== id)); + + return ( + + {props.children} + + ) +} \ No newline at end of file