freshyo/apps/web-ui/.output/server/_ssr/cart-query-hooks-Bz8ID9jY.mjs
2026-05-10 16:45:39 +05:30

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 };