From 7bb33554f4bce7de5c64294f27e2cc7b411c5951 Mon Sep 17 00:00:00 2001 From: Daniel Date: Sun, 16 Oct 2022 18:32:29 +0000 Subject: [PATCH 1/2] Generate a new random slave token on opening modal --- packages/web_ui/src/components/SlavesPage.jsx | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/packages/web_ui/src/components/SlavesPage.jsx b/packages/web_ui/src/components/SlavesPage.jsx index 41748808..0484f4f8 100644 --- a/packages/web_ui/src/components/SlavesPage.jsx +++ b/packages/web_ui/src/components/SlavesPage.jsx @@ -51,6 +51,13 @@ function GenerateSlaveTokenButton(props) { setSlaveId(slaveId); } + // Generate a new random + useEffect(() => { + if (visible) { + generateToken().catch(notifyErrorHandler("Error generating token")); + } + }, [visible]); + // Only install plugins that aren't filesystem paths. Npm modules have max 1 forward slash in their name. const pluginString = pluginList.map(p => `"${p.requirePath}"`).filter(x => x.split("/") <= 1).join(" "); return <> From 4eb4bb96239d96b361668917b81c908046472b20 Mon Sep 17 00:00:00 2001 From: Daniel Date: Mon, 17 Oct 2022 00:09:06 +0200 Subject: [PATCH 2/2] Fix slave token modal form validation --- packages/web_ui/src/components/SlavesPage.jsx | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/packages/web_ui/src/components/SlavesPage.jsx b/packages/web_ui/src/components/SlavesPage.jsx index 0484f4f8..868d9573 100644 --- a/packages/web_ui/src/components/SlavesPage.jsx +++ b/packages/web_ui/src/components/SlavesPage.jsx @@ -1,6 +1,6 @@ import React, { useContext, useRef, useState, useEffect } from "react"; import { useHistory } from "react-router-dom"; -import { Button, Form, Input, Modal, PageHeader, Table, Tag, Typography } from "antd"; +import { Button, Form, InputNumber, Modal, PageHeader, Table, Tag, Typography } from "antd"; import CopyOutlined from "@ant-design/icons/lib/icons/CopyOutlined"; import { libLink } from "@clusterio/lib"; @@ -21,7 +21,6 @@ function GenerateSlaveTokenButton(props) { let [token, setToken] = useState(null); let [slaveId, setSlaveId] = useState(null); let [form] = Form.useForm(); - let tokenTextAreaRef = useRef(null); let [pluginList, setPluginList] = useState([]); useEffect(() => { (async () => { @@ -36,19 +35,20 @@ function GenerateSlaveTokenButton(props) { }, []); async function generateToken() { + let id; let values = form.getFieldsValue(); if (values.slaveId) { - slaveId = Number.parseInt(values.slaveId, 10); - if (Number.isNaN(slaveId)) { + id = Number.parseInt(values.slaveId, 10); + if (Number.isNaN(id)) { form.setFields([{ name: "slaveId", errors: ["Must be an integer"] }]); return; } form.setFields([{ name: "slaveId", errors: [] }]); } - let result = await libLink.messages.generateSlaveToken.send(control, { slave_id: slaveId }); + let result = await libLink.messages.generateSlaveToken.send(control, { slave_id: id || null }); setToken(result.token); - setSlaveId(slaveId); + setSlaveId(id); } // Generate a new random @@ -77,7 +77,9 @@ function GenerateSlaveTokenButton(props) { >
- { generateToken().catch(notifyErrorHandler("Error generating token")); }} /> + { + generateToken().catch(notifyErrorHandler("Error generating token")); + }} />
{token !== null && <>