91 lines
2.7 KiB
JavaScript
91 lines
2.7 KiB
JavaScript
import { n as useMutation, p as useQueryClient, u as useQuery } from "../_libs/react+tanstack__react-query.mjs";
|
|
//#region node_modules/.nitro/vite/services/ssr/assets/cart-query-hooks-Bz8ID9jY.js
|
|
function getCartKey(cartType) {
|
|
return `local-cart-${cartType}`;
|
|
}
|
|
function readCart(cartType) {
|
|
try {
|
|
const raw = localStorage.getItem(getCartKey(cartType));
|
|
return raw ? JSON.parse(raw) : [];
|
|
} catch {
|
|
return [];
|
|
}
|
|
}
|
|
function writeCart(cartType, items) {
|
|
localStorage.setItem(getCartKey(cartType), JSON.stringify(items));
|
|
}
|
|
function useGetCart(cartType = "regular") {
|
|
return useQuery({
|
|
queryKey: [getCartKey(cartType)],
|
|
queryFn: () => {
|
|
const items = readCart(cartType);
|
|
return {
|
|
items,
|
|
totalItems: items.reduce((sum, item) => sum + item.quantity, 0),
|
|
totalAmount: 0
|
|
};
|
|
}
|
|
});
|
|
}
|
|
function useAddToCart(cartType = "regular") {
|
|
const queryClient = useQueryClient();
|
|
return useMutation({
|
|
mutationFn: async ({ productId, quantity, storeId, slotId, deliveryDate }) => {
|
|
const items = readCart(cartType);
|
|
const existing = items.find((i) => i.productId === productId);
|
|
if (existing) {
|
|
existing.quantity += quantity;
|
|
if (slotId) existing.slotId = slotId;
|
|
if (deliveryDate) existing.deliveryDate = deliveryDate;
|
|
} else items.push({
|
|
id: Date.now(),
|
|
productId,
|
|
quantity,
|
|
storeId,
|
|
addedAt: Date.now(),
|
|
slotId: slotId ?? null,
|
|
deliveryDate: deliveryDate ?? null
|
|
});
|
|
writeCart(cartType, items);
|
|
},
|
|
onSuccess: () => {
|
|
queryClient.invalidateQueries({ queryKey: [getCartKey(cartType)] });
|
|
}
|
|
});
|
|
}
|
|
function useUpdateCartItem(cartType = "regular") {
|
|
const queryClient = useQueryClient();
|
|
return useMutation({
|
|
mutationFn: async ({ productId, quantity, slotId, deliveryDate }) => {
|
|
const items = readCart(cartType);
|
|
const existing = items.find((i) => i.productId === productId);
|
|
if (existing) {
|
|
existing.quantity = quantity;
|
|
if (slotId !== void 0) existing.slotId = slotId;
|
|
if (deliveryDate !== void 0) existing.deliveryDate = deliveryDate;
|
|
}
|
|
writeCart(cartType, items);
|
|
},
|
|
onSuccess: () => {
|
|
queryClient.invalidateQueries({ queryKey: [getCartKey(cartType)] });
|
|
}
|
|
});
|
|
}
|
|
function useRemoveFromCart(cartType = "regular") {
|
|
const queryClient = useQueryClient();
|
|
return useMutation({
|
|
mutationFn: async (productId) => {
|
|
let items = readCart(cartType);
|
|
items = items.filter((i) => i.productId !== productId);
|
|
writeCart(cartType, items);
|
|
},
|
|
onSuccess: () => {
|
|
queryClient.invalidateQueries({ queryKey: [getCartKey(cartType)] });
|
|
}
|
|
});
|
|
}
|
|
function clearLocalCart(cartType = "regular") {
|
|
localStorage.removeItem(getCartKey(cartType));
|
|
}
|
|
//#endregion
|
|
export { useUpdateCartItem as a, useRemoveFromCart as i, useAddToCart as n, useGetCart as r, clearLocalCart as t };
|