You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
2.1 KiB
65 lines
2.1 KiB
import { create } from 'zustand'; |
|
import { ordersApi, PaginatedOrderResponse, PaginatedOrderRequest,UpdateOrderShippingInfo} from '../services/api/orders'; |
|
|
|
interface OrderListState { |
|
orders: PaginatedOrderResponse, |
|
getAllOrders: (data: PaginatedOrderRequest,page:number) => Promise<void>, |
|
deleteOrder: (orderId: string) => Promise<void>, |
|
changeOrder: (orderId: string,status:number) => Promise<void>, |
|
updateOrderShippingInfo: (orderId: string,data:UpdateOrderShippingInfo) => Promise<void>, |
|
} |
|
|
|
export const useOrderListStore = create<OrderListState>((set, get) => ({ |
|
orders: { |
|
items: [], |
|
total: 0, |
|
page: 1, |
|
page_size: 10, |
|
}, |
|
|
|
getAllOrders: async (data: PaginatedOrderRequest,page:number) => { |
|
const response = await ordersApi.getAllOrders(data); |
|
set((state) => ({ |
|
orders: { |
|
...response, |
|
items: page === 1 |
|
? response.items |
|
: [...state.orders.items, ...response.items], |
|
} |
|
})); |
|
}, |
|
|
|
deleteOrder: async (orderId: string) => { |
|
await ordersApi.deleteOrder(orderId); |
|
set((state) => ({ |
|
orders: { |
|
...state.orders, |
|
items: state.orders.items.filter(item => item.order_id !== orderId), |
|
total: state.orders.total - 1 |
|
} |
|
})); |
|
}, |
|
|
|
changeOrder: async (orderId: string,status:number) => { |
|
await ordersApi.changeOrder(orderId,status); |
|
set((state) => ({ |
|
orders: { |
|
...state.orders, |
|
items: state.orders.items.filter(item => item.order_id !== orderId), |
|
total: state.orders.total - 1 |
|
} |
|
})); |
|
}, |
|
|
|
updateOrderShippingInfo: async (orderId: string,data:UpdateOrderShippingInfo) => { |
|
await ordersApi.updateOrderShippingInfo(orderId,data); |
|
set((state) => ({ |
|
orders: { |
|
...state.orders, |
|
items: state.orders.items.filter(item => item.order_id !== orderId), |
|
total: state.orders.total - 1 |
|
} |
|
})); |
|
}, |
|
})); |
|
|
|
|