From f8fa0922d974f885c58116907004d6370b3760a7 Mon Sep 17 00:00:00 2001 From: Justin Campbell Date: Fri, 20 Nov 2020 11:48:23 -0500 Subject: [PATCH] Raise QueueSelector open state and optimize API calls --- src/components/AppView/AppView.js | 16 +++++++++++++--- src/components/QueueSelector/QueueSelector.js | 11 ++++++++--- 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/src/components/AppView/AppView.js b/src/components/AppView/AppView.js index 9c630fc..9ba85ef 100644 --- a/src/components/AppView/AppView.js +++ b/src/components/AppView/AppView.js @@ -16,13 +16,18 @@ export default function AppView({ setDarkMode }){ const [queues, setQueues] = useState([]); const [items, setItems] = useState([]); const [selectedQueues, setSelectedQueues] = useState([]); + const [queueSelectorOpen, setQueueSelectorOpen] = useState(false); const access_token = useToken(); useEffect( _ => { async function getQueues(){ if (access_token === null){ - return + return undefined + } + + if (queueSelectorOpen){ + return undefined } if (selectedQueues.length > 0){ @@ -44,7 +49,7 @@ export default function AppView({ setDarkMode }){ } } getQueues(); - }, [selectedQueues, access_token]); + }, [selectedQueues, access_token, queueSelectorOpen]); useEffect( _ => { let tempItems = []; @@ -92,7 +97,12 @@ export default function AppView({ setDarkMode }){ - + diff --git a/src/components/QueueSelector/QueueSelector.js b/src/components/QueueSelector/QueueSelector.js index 1c119f6..4395d02 100644 --- a/src/components/QueueSelector/QueueSelector.js +++ b/src/components/QueueSelector/QueueSelector.js @@ -7,8 +7,9 @@ import CheckBoxIcon from '@material-ui/icons/CheckBox'; import CircularProgress from '@material-ui/core/CircularProgress'; import { useToken } from "../AuthProvider/"; -export default function QueueSelector({ selectedQueues, setSelectedQueues }) { - const [open, setOpen] = useState(false); +export default function QueueSelector({ queueSelectorOpen, setQueueSelectorOpen, selectedQueues, setSelectedQueues }) { + const open = queueSelectorOpen; + const setOpen = setQueueSelectorOpen; const [queueCounts, setQueueCounts] = useState([]); const access_token = useToken(); const loading = open && queueCounts.length === 0; @@ -112,8 +113,12 @@ export default function QueueSelector({ selectedQueues, setSelectedQueues }) { }; QueueSelector.propTypes = { + /** State variable to manage open status. */ + "queueSelectorOpen": PropTypes.bool.isRequired, + /** Function to update state variable that manages open status. */ + "setQueueSelectorOpen": PropTypes.func.isRequired, /** State variable to manage selected queues. */ "selectedQueues": PropTypes.array.isRequired, /** Function to update state variable that manages selected queues. */ - "setSelectedQueues": PropTypes.func.isRequired + "setSelectedQueues": PropTypes.func.isRequired, }; \ No newline at end of file