Bugfix order page
This commit is contained in:
Binary file not shown.
@@ -13,7 +13,7 @@ import {
|
|||||||
useTheme
|
useTheme
|
||||||
} from "@mui/material";
|
} from "@mui/material";
|
||||||
import { useMutation, useQuery } from "@tanstack/react-query";
|
import { useMutation, useQuery } from "@tanstack/react-query";
|
||||||
import React, { PropsWithChildren, useEffect, useState } from "react";
|
import React, { PropsWithChildren, useState } from "react";
|
||||||
import { DndProvider, useDrag, useDrop } from 'react-dnd';
|
import { DndProvider, useDrag, useDrop } from 'react-dnd';
|
||||||
import { HTML5Backend } from 'react-dnd-html5-backend';
|
import { HTML5Backend } from 'react-dnd-html5-backend';
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
@@ -125,15 +125,13 @@ const EditOrder: React.FC<{ open: boolean; order: OrderType | null; onClose: ()
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
// Main component for managing orders
|
|
||||||
export default function OrdersInfo() {
|
export default function OrdersInfo() {
|
||||||
const [orders, setOrders] = useState<OrderType[]>([]);
|
|
||||||
const [editOrder, setEditOrder] = useState<OrderType | null>(null);
|
const [editOrder, setEditOrder] = useState<OrderType | null>(null);
|
||||||
const [openSnackbar, setOpenSnackbar] = useState(false);
|
const [openSnackbar, setOpenSnackbar] = useState(false);
|
||||||
|
|
||||||
const { user: loginData } = useAccount();
|
const { user: loginData } = useAccount();
|
||||||
|
|
||||||
const { data, refetch } = useQuery({
|
const { data, refetch, isLoading } = useQuery({
|
||||||
queryKey: ["fetchOrdersAdmin", loginData],
|
queryKey: ["fetchOrdersAdmin", loginData],
|
||||||
queryFn: () => fetchOrdersAdmin(loginData ? loginData : { email: "", password: "", session: "", customerId: -1, isAdmin: false }),
|
queryFn: () => fetchOrdersAdmin(loginData ? loginData : { email: "", password: "", session: "", customerId: -1, isAdmin: false }),
|
||||||
retry: 3,
|
retry: 3,
|
||||||
@@ -146,15 +144,10 @@ export default function OrdersInfo() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
console.log("data", data);
|
|
||||||
if (data) {
|
|
||||||
setOrders(data);
|
|
||||||
}
|
|
||||||
}, [data]);
|
|
||||||
|
|
||||||
const handleDrop = async (id: number, status: OrderStatusEnum) => {
|
const handleDrop = async (id: number, status: OrderStatusEnum) => {
|
||||||
const obj = orders.find((o) => o.id === id);
|
|
||||||
|
const currentOrders = data ?? [];
|
||||||
|
const obj = currentOrders.find((o) => o.id === id);
|
||||||
if (!obj) {
|
if (!obj) {
|
||||||
setOpenSnackbar(true);
|
setOpenSnackbar(true);
|
||||||
return;
|
return;
|
||||||
@@ -162,20 +155,22 @@ export default function OrdersInfo() {
|
|||||||
try {
|
try {
|
||||||
await patchOrderMutation.mutateAsync({ id: obj.id, status: status });
|
await patchOrderMutation.mutateAsync({ id: obj.id, status: status });
|
||||||
refetch();
|
refetch();
|
||||||
setOrders(orders.map((o) => (o.id === id ? { ...o, status } : o)));
|
|
||||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
setOpenSnackbar(true);
|
setOpenSnackbar(true);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
const handleEdit = (order: OrderType) => setEditOrder(order);
|
const handleEdit = (order: OrderType) => setEditOrder(order);
|
||||||
|
|
||||||
|
if (isLoading || !data) {
|
||||||
|
return <div>Lade Bestellungen...</div>;
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<DndProvider backend={HTML5Backend}>
|
<DndProvider backend={HTML5Backend}>
|
||||||
<div style={{ display: 'flex', gap: 10, minHeight: '90%' }}>
|
<div style={{ display: 'flex', gap: 10, minHeight: '90%' }}>
|
||||||
{statusOrder.map((status) => (
|
{statusOrder.map((status) => (
|
||||||
<Column key={status} status={status} onDrop={handleDrop}>
|
<Column key={status} status={status} onDrop={handleDrop}>
|
||||||
{orders
|
{data
|
||||||
.filter((o) => o.status === status)
|
.filter((o) => o.status === status)
|
||||||
.map((o) => (
|
.map((o) => (
|
||||||
<OrderCard key={o.id} order={o} onClick={() => handleEdit(o)} />
|
<OrderCard key={o.id} order={o} onClick={() => handleEdit(o)} />
|
||||||
@@ -196,5 +191,4 @@ export default function OrdersInfo() {
|
|||||||
/>
|
/>
|
||||||
</DndProvider>
|
</DndProvider>
|
||||||
);
|
);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user