umami/src/app/(main)/reports/ReportsList.js

38 lines
1,017 B
JavaScript
Raw Normal View History

2023-09-29 12:29:22 +00:00
'use client';
import { useApi } from 'components/hooks';
import ReportsTable from './ReportsTable';
import useFilterQuery from 'components/hooks/useFilterQuery';
import DataTable from 'components/common/DataTable';
function useReports() {
const { get, del, useMutation } = useApi();
const { mutate } = useMutation(reportId => del(`/reports/${reportId}`));
2023-10-04 08:46:00 +00:00
const queryResult = useFilterQuery(['reports'], params => get(`/reports`, params));
2023-09-29 12:29:22 +00:00
const deleteReport = id => {
mutate(id, {
onSuccess: () => {
2023-10-04 08:46:00 +00:00
queryResult.refetch();
2023-09-29 12:29:22 +00:00
},
});
};
2023-10-04 08:46:00 +00:00
return { queryResult, deleteReport };
2023-09-29 12:29:22 +00:00
}
export default function ReportsList() {
2023-10-04 08:46:00 +00:00
const { queryResult, deleteReport } = useReports();
2023-09-29 12:29:22 +00:00
const handleDelete = async (id, callback) => {
await deleteReport(id);
2023-10-04 08:46:00 +00:00
await queryResult.refetch();
2023-09-29 12:29:22 +00:00
callback?.();
};
return (
2023-10-04 08:46:00 +00:00
<DataTable queryResult={queryResult}>
2023-09-29 12:29:22 +00:00
{({ data }) => <ReportsTable data={data} showDomain={true} onDelete={handleDelete} />}
</DataTable>
);
}