From 3f75ce341bdb782bd9754c558288b72bd2dc3f53 Mon Sep 17 00:00:00 2001 From: Mathias Wagner Date: Thu, 15 Feb 2024 01:02:46 +0100 Subject: [PATCH] Created the CreationDialog.jsx --- .../CreationDialog/CreationDialog.jsx | 132 ++++++++++++++++++ 1 file changed, 132 insertions(+) create mode 100644 webui/src/states/Root/pages/Overview/components/CreationDialog/CreationDialog.jsx diff --git a/webui/src/states/Root/pages/Overview/components/CreationDialog/CreationDialog.jsx b/webui/src/states/Root/pages/Overview/components/CreationDialog/CreationDialog.jsx new file mode 100644 index 0000000..81b8b05 --- /dev/null +++ b/webui/src/states/Root/pages/Overview/components/CreationDialog/CreationDialog.jsx @@ -0,0 +1,132 @@ +import { + Alert, + Button, + Checkbox, Dialog, DialogActions, + DialogContent, + DialogTitle, + FormControlLabel, Link, + MenuItem, + Select, + Stack, + TextField +} from "@mui/material"; + +import SpigotImage from "@/common/assets/software/spigot.webp"; +import PaperImage from "@/common/assets/software/paper.webp"; +import PurpurImage from "@/common/assets/software/purpur.webp"; +import {PROXY_URL, request} from "@/common/utils/RequestUtil.js"; +import {useContext, useEffect, useState} from "react"; +import {ServerContext} from "@/common/contexts/Server/index.js"; +import {t} from "i18next"; +import {Trans} from "react-i18next"; + +export const CreationDialog = ({dialogOpen, setDialogOpen}) => { + + const EULA_URL = "https://www.minecraft.net/en-us/eula"; + + const {updateServer} = useContext(ServerContext); + + + const [creating, setCreating] = useState(false); + + const [errorMessage, setErrorMessage] = useState(""); + + const [serverName, setServerName] = useState(""); + const [serverDescription, setServerDescription] = useState(""); + const [serverSoftware, setServerSoftware] = useState("spigot"); + const [serverVersion, setServerVersion] = useState("1.20.4"); + const [eulaAccepted, setEulaAccepted] = useState(false); + + const createServer = async () => { + if (creating) return; + + if (serverName === "") { + setErrorMessage(t("server.creation.error.name")); + return; + } + + if (!eulaAccepted) { + setErrorMessage(t("server.creation.error.eula")); + return; + } + + setErrorMessage(""); + + setCreating(true); + + await request("server/setup", "POST", { + name: serverName, description: serverDescription, type: serverSoftware, version: serverVersion, + memory: 4096, autoStart: false + }, {}, false); + + setCreating(false); + setDialogOpen(false); + updateServer(); + } + + useEffect(() => { + if (errorMessage !== "") setErrorMessage(""); + }, [serverName, serverDescription, serverSoftware, serverVersion, eulaAccepted]); + + + return ( + setDialogOpen(false)}> + {t("server.creation.title")} + + + {errorMessage && + {errorMessage} + } + + + setServerName(e.target.value)}/> + + + + setServerDescription(e.target.value)}/> + + + + + + + + } checked={eulaAccepted} + onChange={(e) => setEulaAccepted(e.target.checked)} + label={}}> + server.creation.eula}/> + + + {!creating && } + {!creating && } + {creating && } + + + ) +} \ No newline at end of file