Skip to content
Snippets Groups Projects
EmptyBasketButton.js 2.32 KiB
Newer Older
import React, { useContext, useState } from "react";
import { Button, Modal } from "react-bootstrap";
Klaas Kliffen's avatar
Klaas Kliffen committed
import { useHistory } from "react-router-dom";
import { BasketContext } from "../../contexts/BasketContext";
Klaas Kliffen's avatar
Klaas Kliffen committed
import { GlobalContext } from "../../contexts/GlobalContext";
import { getOKIcon, getTrashIcon } from "../../utils/styling";

export default function EmptyBasketButton(props) {
    const { api_host, isAuthenticated, isTokenValid, loginAgain } = useContext(GlobalContext);
    const basketContext = useContext(BasketContext);
    const { setHasChanged, refresh, setRefresh } = useContext(BasketContext);
    const [show, setShow] = useState(false);

    const handleClose = () => setShow(false);
    const handleShow = () => setShow(true);

Klaas Kliffen's avatar
Klaas Kliffen committed
    function emptyBasket(basketContext) {
        basketContext.clear()
        setHasChanged(true)
        setShow(false)
        setRefresh(!refresh)
Klaas Kliffen's avatar
Klaas Kliffen committed
    if (isAuthenticated) {
        //alert(basketContext.datasets)
Klaas Kliffen's avatar
Klaas Kliffen committed
        if (basketContext.datasets.length > 0) {
Klaas Kliffen's avatar
Klaas Kliffen committed
                    <Button
                        type="button"
                        variant="primary"
                        onClick={handleShow}
                        {...props}>
                        {getTrashIcon('white')} Empty Basket
                    </Button>
Klaas Kliffen's avatar
Klaas Kliffen committed
                    <Modal show={show} onHide={handleClose}>
                        <Modal.Header closeButton>
                            <Modal.Title>{getTrashIcon('black')}{' '}Empty Basket</Modal.Title>
                        </Modal.Header>
                        <Modal.Body><h5>Are you sure you want to empty the basket?</h5>
                            <i>(don't forget to click 'Save Basket' afterward)</i>
                        </Modal.Body>
                        <Modal.Footer>
                            <Button variant="success"
                                onClick={() => emptyBasket(basketContext, api_host, isTokenValid, loginAgain, history)}
Klaas Kliffen's avatar
Klaas Kliffen committed
                            >
                                {getOKIcon()}{' '}OK
                            </Button>
Klaas Kliffen's avatar
Klaas Kliffen committed
                        </Modal.Footer>
                    </Modal>
Klaas Kliffen's avatar
Klaas Kliffen committed
    else {