From 926b60214e2fa81f26beb4d4325949241d820b3e Mon Sep 17 00:00:00 2001 From: HFO4 <912394456@qq.com> Date: Sun, 31 Oct 2021 09:35:37 +0800 Subject: [PATCH] Feat: edit node --- src/Admin.js | 5 ++ src/component/Admin/Node/EditNode.js | 55 +++++++++++++++++++++ src/component/Admin/Node/Guide/Aria2RPC.js | 30 +++++------ src/component/Admin/Node/Guide/NodeGuide.js | 12 ++--- 4 files changed, 81 insertions(+), 21 deletions(-) create mode 100644 src/component/Admin/Node/EditNode.js diff --git a/src/Admin.js b/src/Admin.js index c65b042..701036b 100644 --- a/src/Admin.js +++ b/src/Admin.js @@ -34,6 +34,7 @@ import Import from "./component/Admin/File/Import"; import Captcha from "./component/Admin/Setting/Captcha"; import Node from "./component/Admin/Node/Node"; import AddNode from "./component/Admin/Node/AddNode"; +import EditNode from "./component/Admin/Node/EditNode"; const useStyles = makeStyles((theme) => ({ root: { @@ -193,6 +194,10 @@ export default function Admin() { + + + + )} /> diff --git a/src/component/Admin/Node/EditNode.js b/src/component/Admin/Node/EditNode.js new file mode 100644 index 0000000..016f947 --- /dev/null +++ b/src/component/Admin/Node/EditNode.js @@ -0,0 +1,55 @@ +import React, { useCallback, useEffect, useState } from "react"; +import { makeStyles } from "@material-ui/core/styles"; +import Paper from "@material-ui/core/Paper"; +import NodeGuide from "./Guide/NodeGuide"; +import { useParams } from "react-router"; +import { useDispatch } from "react-redux"; +import { toggleSnackbar } from "../../../actions"; +import API from "../../../middleware/Api"; + +const useStyles = makeStyles((theme) => ({ + root: { + [theme.breakpoints.up("md")]: { + marginLeft: 100, + }, + marginBottom: 40, + }, + content: { + padding: theme.spacing(2), + }, +})); + +export default function EditNode() { + const classes = useStyles(); + const { id } = useParams(); + const [node, setNode] = useState(null); + + const dispatch = useDispatch(); + const ToggleSnackbar = useCallback( + (vertical, horizontal, msg, color) => + dispatch(toggleSnackbar(vertical, horizontal, msg, color)), + [dispatch] + ); + + useEffect(() => { + API.get("/admin/node/" + id) + .then((response) => { + response.data.Rank = response.data.Rank.toString(); + response.data.Aria2Enabled = response.data.Aria2Enabled + ? "true" + : "false"; + setNode(response.data); + }) + .catch((error) => { + ToggleSnackbar("top", "right", error.message, "error"); + }); + }, [id]); + + return ( +
+ + {node && } + +
+ ); +} diff --git a/src/component/Admin/Node/Guide/Aria2RPC.js b/src/component/Admin/Node/Guide/Aria2RPC.js index fcde8fe..b1f937e 100644 --- a/src/component/Admin/Node/Guide/Aria2RPC.js +++ b/src/component/Admin/Node/Guide/Aria2RPC.js @@ -100,8 +100,8 @@ export default function Aria2RPC(props) { type: props.node.Type, server: props.node.Server, secret: props.node.SlaveKey, - rpc: props.node.Aria2OptionsSerialized.Server, - token: props.node.Aria2OptionsSerialized.Token, + rpc: props.node.Aria2OptionsSerialized.server, + token: props.node.Aria2OptionsSerialized.token, }) .then((response) => { ToggleSnackbar( @@ -219,7 +219,7 @@ export default function Aria2RPC(props) {
# RPC 授权令牌,可自行设定
- rpc-secure={props.node.Aria2OptionsSerialized.Token} + rpc-secret={props.node.Aria2OptionsSerialized.token}
@@ -254,10 +254,10 @@ export default function Aria2RPC(props) { required type={"url"} value={ - props.node.Aria2OptionsSerialized.Server + props.node.Aria2OptionsSerialized.server } onChange={props.handleOptionChange( - "Server" + "server" )} /> @@ -281,8 +281,8 @@ export default function Aria2RPC(props) {
@@ -301,9 +301,9 @@ export default function Aria2RPC(props) {
@@ -331,10 +331,10 @@ export default function Aria2RPC(props) { required value={ props.node.Aria2OptionsSerialized - .Interval + .interval } onChange={props.handleOptionChange( - "Interval" + "interval" )} /> @@ -356,10 +356,10 @@ export default function Aria2RPC(props) { required value={ props.node.Aria2OptionsSerialized - .Timeout + .timeout } onChange={props.handleOptionChange( - "Timeout" + "timeout" )} /> @@ -377,10 +377,10 @@ export default function Aria2RPC(props) { required value={ props.node.Aria2OptionsSerialized - .Options + .options } onChange={props.handleOptionChange( - "Options" + "options" )} /> diff --git a/src/component/Admin/Node/Guide/NodeGuide.js b/src/component/Admin/Node/Guide/NodeGuide.js index e399ca4..873076e 100644 --- a/src/component/Admin/Node/Guide/NodeGuide.js +++ b/src/component/Admin/Node/Guide/NodeGuide.js @@ -63,9 +63,9 @@ export default function NodeGuide(props) { MasterKey: randomStr(64), Rank: "0", Aria2OptionsSerialized: { - Token: randomStr(32), - Options: "{}", - Interval: 10, + token: randomStr(32), + options: "{}", + interval: 10, }, } ); @@ -88,8 +88,8 @@ export default function NodeGuide(props) { const handleOptionChange = (name) => (event) => { setNode({ ...node, - Aria2Options: { - ...node.Aria2Options, + Aria2OptionsSerialized: { + ...node.Aria2OptionsSerialized, [name]: event.target.value, }, }); @@ -119,7 +119,7 @@ export default function NodeGuide(props) { ToggleSnackbar( "top", "right", - "节点已" + (props.policy ? "保存" : "添加"), + "节点已" + (props.node ? "保存" : "添加"), "success" ); setActiveStep(activeStep + 1);