From 9b34b949a62f90bb04127e94330eeeea5e0fb1e8 Mon Sep 17 00:00:00 2001 From: Hornwitser Date: Wed, 9 Jun 2021 13:18:24 +0200 Subject: [PATCH] Accept invalid IDs in useSlave and useInstance Gracefully handle invalid IDs in useSlave and useInstance as this is necessary when when the ID isn't known by the component using the hook, since it can't conditionally call the hook. --- packages/web_ui/src/model/instance.jsx | 11 +++++------ packages/web_ui/src/model/slave.jsx | 9 ++++----- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/packages/web_ui/src/model/instance.jsx b/packages/web_ui/src/model/instance.jsx index 5b027d3a..ef4f27a2 100644 --- a/packages/web_ui/src/model/instance.jsx +++ b/packages/web_ui/src/model/instance.jsx @@ -10,21 +10,20 @@ export function useInstance(id) { let [instance, setInstance] = useState({ loading: true }); function updateInstance() { - if (!Number.isInteger(id)) { - setInstance({ missing: true }); - return; - } - libLink.messages.getInstance.send(control, { id }).then(result => { setInstance({ ...result, present: true }); }).catch(err => { - logger.log(`Failed to get instance: ${err}`); + logger.error(`Failed to get instance: ${err}`); setInstance({ missing: true }); }); } useEffect(() => { + if (!Number.isInteger(id)) { + setInstance({ missing: true }); + return undefined; + } updateInstance(); function updateHandler(newInstance) { diff --git a/packages/web_ui/src/model/slave.jsx b/packages/web_ui/src/model/slave.jsx index c29e7405..729e671a 100644 --- a/packages/web_ui/src/model/slave.jsx +++ b/packages/web_ui/src/model/slave.jsx @@ -9,11 +9,6 @@ export function useSlave(id) { let [slave, setSlave] = useState({ loading: true }); function updateSlave() { - if (!Number.isInteger(id)) { - setSlave({ missing: true }); - return; - } - // XXX optimize by requesting only the slave in question libLink.messages.listSlaves.send(control).then(result => { let match = result.list.find(i => i.id === id); @@ -26,6 +21,10 @@ export function useSlave(id) { } useEffect(() => { + if (!Number.isInteger(id)) { + setSlave({ missing: true }); + return undefined; + } updateSlave(); function updateHandler(newSlave) {