Skip to content

Commit

Permalink
Raise QueueSelector open state and optimize API calls
Browse files Browse the repository at this point in the history
  • Loading branch information
Justin Campbell committed Nov 20, 2020
1 parent e7bc281 commit f8fa092
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 6 deletions.
16 changes: 13 additions & 3 deletions src/components/AppView/AppView.js
Original file line number Diff line number Diff line change
Expand Up @@ -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){
Expand All @@ -44,7 +49,7 @@ export default function AppView({ setDarkMode }){
}
}
getQueues();
}, [selectedQueues, access_token]);
}, [selectedQueues, access_token, queueSelectorOpen]);

useEffect( _ => {
let tempItems = [];
Expand Down Expand Up @@ -92,7 +97,12 @@ export default function AppView({ setDarkMode }){

<Box className={classes.leftCol}>
<ItemTableAppBar title="webqueue2" setDarkMode={setDarkMode} />
<QueueSelector selectedQueues={selectedQueues} setSelectedQueues={setSelectedQueues} />
<QueueSelector
queueSelectorOpen={queueSelectorOpen}
setQueueSelectorOpen={setQueueSelectorOpen}
selectedQueues={selectedQueues}
setSelectedQueues={setSelectedQueues}
/>
<ItemTable data={items} rowCanBeSelected={sidebarOpen}/>
</Box>

Expand Down
11 changes: 8 additions & 3 deletions src/components/QueueSelector/QueueSelector.js
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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,
};

0 comments on commit f8fa092

Please sign in to comment.