#
vincentlu
2026-01-10 89ca1eb19972e8f5e0baccbaffcfa7fbb2ae85c3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import React, { useCallback, useState } from "react";
import DeleteSweepIcon from '@mui/icons-material/DeleteSweep';
import {
    useDataProvider,
    useNotify,
    useRefresh,
    Button as RaButton,
} from 'react-admin';
import ConfirmButton from "../components/ConfirmButton";
 
const LaneDeleteAllButton = () => {
    const dataProvider = useDataProvider();
    const notify = useNotify();
    const refresh = useRefresh();
    const [loading, setLoading] = useState(false);
 
    const handleConfirm = useCallback(() => {
        setLoading(true);
        dataProvider.delete('lane', {
            id: '__purge_all__',
            meta: { deleteAll: true },
        }).then(() => {
            notify('page.lane.actions.deleteAllSuccess', { type: 'info' });
            refresh();
        }).catch((error) => {
            console.error(error);
            notify('page.lane.actions.deleteAllError', { type: 'error' });
        }).finally(() => {
            setLoading(false);
        });
    }, [dataProvider, notify, refresh]);
 
    return (
        <ConfirmButton
            label="page.lane.actions.deleteAll"
            onConfirm={handleConfirm}
            disabled={loading}
            renderButton={({ buttonProps }) => (
                <RaButton
                    {...buttonProps}
                    label="page.lane.actions.deleteAll"
                    color="error"
                    size="small"
                    startIcon={<DeleteSweepIcon />}
                    sx={{
                        fontWeight: 600,
                        textTransform: 'none',
                    }}
                />
            )}
        />
    );
};
 
export default LaneDeleteAllButton;