Files
hms-licht-ton/frontend-nuxt-old/composables/useCart.ts
T

61 lines
1.4 KiB
TypeScript
Raw Normal View History

import { useCartStore } from "~/stores/cart";
import { storeToRefs } from "pinia";
import type { EquipmentItem } from "~/composables/useEquipment";
/**
* Cart composable wraps the Pinia cart store for convenient use in components.
* Provides reactive refs and action methods.
*/export function useCart() {
const store = useCartStore();
const { items, totalCount, isEmpty, hasItems, apiItems } = storeToRefs(store);
function addItem(equipment: EquipmentItem): void {
store.addItem(equipment);
}
function addItemByFields(item: {
equipment_id: number;
name: string;
rental_price: number | null;
image_url: string | null;
}): void {
store.addItemByFields(item);
}
function removeItem(equipmentId: number): void {
store.removeItem(equipmentId);
}
function updateQuantity(equipmentId: number, quantity: number): void {
store.updateQuantity(equipmentId, quantity);
}
function incrementQuantity(equipmentId: number): void {
store.incrementQuantity(equipmentId);
}
function decrementQuantity(equipmentId: number): void {
store.decrementQuantity(equipmentId);
}
function clearCart(): void {
store.clearCart();
}
return {
items,
totalCount,
isEmpty,
hasItems,
apiItems,
addItem,
addItemByFields,
removeItem,
updateQuantity,
incrementQuantity,
decrementQuantity,
clearCart,
};
}