Created the ServerMenu.jsx
This commit is contained in:
parent
e5e85525fd
commit
fcfaa53b82
@ -0,0 +1,133 @@
|
|||||||
|
import {Divider, ListItemIcon, ListItemText, Menu, MenuItem} from "@mui/material";
|
||||||
|
import {
|
||||||
|
Delete,
|
||||||
|
DriveFileRenameOutline,
|
||||||
|
EditNote,
|
||||||
|
ManageHistory, Memory,
|
||||||
|
PowerSettingsNew,
|
||||||
|
RestartAlt
|
||||||
|
} from "@mui/icons-material";
|
||||||
|
import {t} from "i18next";
|
||||||
|
import {patchRequest, postRequest} from "@/common/utils/RequestUtil.js";
|
||||||
|
import {useContext, useState} from "react";
|
||||||
|
import {ServerContext} from "@/common/contexts/Server";
|
||||||
|
import RenameDialog from "./dialogs/RenameDialog.jsx";
|
||||||
|
import UpdateDescriptionDialog from "./dialogs/UpdateDescriptionDialog.jsx";
|
||||||
|
import MigrateVersionDialog from "./dialogs/MigrateVersionDialog.jsx";
|
||||||
|
import ChangeRAMDialog from "./dialogs/ChangeRAMDialog.jsx";
|
||||||
|
import ConfirmDeleteDialog from "./dialogs/ConfirmDeleteDialog.jsx";
|
||||||
|
|
||||||
|
export const ServerMenu = ({menuOpen, menuRef, setMenuOpen, uuid, setAlert, status, config}) => {
|
||||||
|
|
||||||
|
const [renameDialogOpen, setRenameDialogOpen] = useState(false);
|
||||||
|
const [updateDescriptionDialogOpen, setUpdateDescriptionDialogOpen] = useState(false);
|
||||||
|
const [migrateDialogOpen, setMigrateDialogOpen] = useState(false);
|
||||||
|
const [changeRAMDialogOpen, setChangeRAMDialogOpen] = useState(false);
|
||||||
|
const [deleteDialogOpen, setDeleteDialogOpen] = useState(false);
|
||||||
|
|
||||||
|
const {updateServer} = useContext(ServerContext);
|
||||||
|
|
||||||
|
const startServer = async () => {
|
||||||
|
setMenuOpen(false);
|
||||||
|
setAlert({severity: "success", message: t("server.starting")});
|
||||||
|
await postRequest("server/start", {uuid});
|
||||||
|
|
||||||
|
updateServer();
|
||||||
|
}
|
||||||
|
|
||||||
|
const stopServer = async () => {
|
||||||
|
setMenuOpen(false);
|
||||||
|
setAlert({severity: "success", message: t("server.stopping")});
|
||||||
|
await postRequest("server/stop", {uuid});
|
||||||
|
|
||||||
|
updateServer();
|
||||||
|
}
|
||||||
|
|
||||||
|
const renameServer = async () => {
|
||||||
|
setMenuOpen(false);
|
||||||
|
setRenameDialogOpen(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
const updateDescription = async () => {
|
||||||
|
setMenuOpen(false);
|
||||||
|
setUpdateDescriptionDialogOpen(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
const migrateVersion = async () => {
|
||||||
|
setMenuOpen(false);
|
||||||
|
setMigrateDialogOpen(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
const changeRAM = async () => {
|
||||||
|
setMenuOpen(false);
|
||||||
|
setChangeRAMDialogOpen(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
const toggleStartOnBoot = async () => {
|
||||||
|
setMenuOpen(false);
|
||||||
|
setAlert({severity: "success", message: t("server.dialog.toggle_start_on_boot.success")});
|
||||||
|
await patchRequest("server/", {uuid, autoStart: !config.autoStart});
|
||||||
|
updateServer();
|
||||||
|
}
|
||||||
|
|
||||||
|
const deleteServer = async () => {
|
||||||
|
setMenuOpen(false);
|
||||||
|
setDeleteDialogOpen(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<RenameDialog open={renameDialogOpen} setOpen={setRenameDialogOpen} uuid={uuid} setAlert={setAlert}
|
||||||
|
current={config.name}/>
|
||||||
|
<UpdateDescriptionDialog open={updateDescriptionDialogOpen} setOpen={setUpdateDescriptionDialogOpen}
|
||||||
|
uuid={uuid} setAlert={setAlert} current={config.description}/>
|
||||||
|
<MigrateVersionDialog open={migrateDialogOpen} setOpen={setMigrateDialogOpen} uuid={uuid} setAlert={setAlert}
|
||||||
|
currentSoftware={config.type} currentVersion={config.version}/>
|
||||||
|
<ChangeRAMDialog open={changeRAMDialogOpen} setOpen={setChangeRAMDialogOpen} uuid={uuid} setAlert={setAlert}
|
||||||
|
current={config.memory}/>
|
||||||
|
<ConfirmDeleteDialog open={deleteDialogOpen} setOpen={setDeleteDialogOpen} uuid={uuid} setAlert={setAlert}/>
|
||||||
|
|
||||||
|
<Menu open={menuOpen} anchorEl={menuRef.current} onClose={() => setMenuOpen(false)}
|
||||||
|
anchorOrigin={{vertical: "bottom", horizontal: "right"}} transformOrigin={{vertical: "top", horizontal: "right"}}>
|
||||||
|
<MenuItem onClick={() => renameServer()}>
|
||||||
|
<ListItemIcon><DriveFileRenameOutline/></ListItemIcon>
|
||||||
|
<ListItemText>{t("server.rename")}</ListItemText>
|
||||||
|
</MenuItem>
|
||||||
|
|
||||||
|
<MenuItem onClick={() => updateDescription()}>
|
||||||
|
<ListItemIcon><EditNote/></ListItemIcon>
|
||||||
|
<ListItemText>{t("server.update_description")}</ListItemText>
|
||||||
|
</MenuItem>
|
||||||
|
|
||||||
|
<MenuItem onClick={() => migrateVersion()}>
|
||||||
|
<ListItemIcon><ManageHistory/></ListItemIcon>
|
||||||
|
<ListItemText>{t("server.migrate")}</ListItemText>
|
||||||
|
</MenuItem>
|
||||||
|
|
||||||
|
<MenuItem onClick={() => changeRAM()}>
|
||||||
|
<ListItemIcon><Memory/></ListItemIcon>
|
||||||
|
<ListItemText>{t("server.update_ram")}</ListItemText>
|
||||||
|
</MenuItem>
|
||||||
|
|
||||||
|
<MenuItem onClick={() => toggleStartOnBoot()}>
|
||||||
|
<ListItemIcon><RestartAlt/></ListItemIcon>
|
||||||
|
<ListItemText>{t("server." + (config.autoStart ? "disable" : "enable") + "_start_on_boot")}</ListItemText>
|
||||||
|
</MenuItem>
|
||||||
|
|
||||||
|
<Divider/>
|
||||||
|
|
||||||
|
{status === "OFFLINE" && (<MenuItem onClick={startServer}><ListItemIcon><PowerSettingsNew /></ListItemIcon>
|
||||||
|
<ListItemText>{t("server.start")}</ListItemText>
|
||||||
|
</MenuItem>)}
|
||||||
|
{status === "ONLINE" && (<MenuItem onClick={stopServer}><ListItemIcon><PowerSettingsNew /></ListItemIcon>
|
||||||
|
<ListItemText>{t("server.stop")}</ListItemText>
|
||||||
|
</MenuItem>)}
|
||||||
|
|
||||||
|
<MenuItem onClick={() => deleteServer()}>
|
||||||
|
<ListItemIcon><Delete/></ListItemIcon>
|
||||||
|
<ListItemText>{t("server.delete")}</ListItemText>
|
||||||
|
</MenuItem>
|
||||||
|
</Menu>
|
||||||
|
</>
|
||||||
|
)
|
||||||
|
}
|
Reference in New Issue
Block a user