Skip to content

Commit

Permalink
Merge dd61e05 into 0e8b7b4
Browse files Browse the repository at this point in the history
  • Loading branch information
Fifciu committed Dec 22, 2020
2 parents 0e8b7b4 + dd61e05 commit c220aee
Show file tree
Hide file tree
Showing 2 changed files with 74 additions and 39 deletions.
112 changes: 73 additions & 39 deletions packages/core/core/src/factories/useCartFactory.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ export const useCartFactory = <CART, CART_ITEM, PRODUCT, COUPON>(
const loading: Ref<boolean> = sharedRef(false, 'useCart-loading');
const cart: Ref<CART> = sharedRef(null, 'useCart-cart');
const context = generateContext(factoryParams);
const error: Ref<Record<string, Error>> = sharedRef({}, 'useCart-error');

const setCart = (newCart: CART) => {
cart.value = newCart;
Expand All @@ -44,50 +45,68 @@ export const useCartFactory = <CART, CART_ITEM, PRODUCT, COUPON>(
Logger.debug('useCart.addItem', { product, quantity });

loading.value = true;
const updatedCart = await factoryParams.addItem(
context,
{
currentCart: cart.value,
product,
quantity,
customQuery
}
);
cart.value = updatedCart;
try {
error.value.addItem = null;
const updatedCart = await factoryParams.addItem(
context,
{
currentCart: cart.value,
product,
quantity,
customQuery
}
);
cart.value = updatedCart;
} catch (err) {
error.value.addItem = err;
Logger.error('useCart/addToCart', err);
}
loading.value = false;
};

const removeItem = async ({ product, customQuery }) => {
Logger.debug('useCart.removeItem', { product });

loading.value = true;
const updatedCart = await factoryParams.removeItem(
context,
{
currentCart: cart.value,
product,
customQuery
}
);
cart.value = updatedCart;
loading.value = false;
};

const updateItemQty = async ({ product, quantity, customQuery }) => {
Logger.debug('useCart.updateItemQty', { product, quantity });

if (quantity && quantity > 0) {
loading.value = true;
const updatedCart = await factoryParams.updateItemQty(
try {
error.value.removeItem = null;
const updatedCart = await factoryParams.removeItem(
context,
{
currentCart: cart.value,
product,
quantity,
customQuery
}
);
cart.value = updatedCart;
} catch (err) {
error.value.removeItem = err;
Logger.error('useCart/removeItem', err);
}
loading.value = false;
};

const updateItemQty = async ({ product, quantity, customQuery }) => {
Logger.debug('useCart.updateItemQty', { product, quantity });

if (quantity && quantity > 0) {
loading.value = true;
try {
error.value.updateItemQty = null;
const updatedCart = await factoryParams.updateItemQty(
context,
{
currentCart: cart.value,
product,
quantity,
customQuery
}
);
cart.value = updatedCart;
} catch (err) {
error.value.updateItemQty = err;
Logger.error('useCart/updateItemQty', err);
}
loading.value = false;
}
};
Expand All @@ -106,16 +125,28 @@ export const useCartFactory = <CART, CART_ITEM, PRODUCT, COUPON>(
return;
}
loading.value = true;
cart.value = await factoryParams.load(context, { customQuery });
try {
error.value.load = null;
cart.value = await factoryParams.load(context, { customQuery });
} catch (err) {
error.value.load = err;
Logger.error('useCart/load', err);
}
loading.value = false;
};

const clear = async () => {
Logger.debug('useCart.clear');

loading.value = true;
const updatedCart = await factoryParams.clear(context, { currentCart: cart.value });
cart.value = updatedCart;
try {
error.value.clear = null;
const updatedCart = await factoryParams.clear(context, { currentCart: cart.value });
cart.value = updatedCart;
} catch (err) {
error.value.clear = err;
Logger.error('useCart/clear', err);
}
loading.value = false;
};

Expand All @@ -131,15 +162,16 @@ export const useCartFactory = <CART, CART_ITEM, PRODUCT, COUPON>(

try {
loading.value = true;
error.value.applyCoupon = null;
const { updatedCart } = await factoryParams.applyCoupon(context, {
currentCart: cart.value,
couponCode,
customQuery
});
cart.value = updatedCart;
} catch (e) {
Logger.error('useCart.applyCoupon', e);
throw e;
} catch (err) {
error.value.applyCoupon = err;
Logger.error('useCart/applyCoupon', err);
} finally {
loading.value = false;
}
Expand All @@ -150,6 +182,7 @@ export const useCartFactory = <CART, CART_ITEM, PRODUCT, COUPON>(

try {
loading.value = true;
error.value.removeCoupon = null;
const { updatedCart } = await factoryParams.removeCoupon(
context,
{
Expand All @@ -160,9 +193,9 @@ export const useCartFactory = <CART, CART_ITEM, PRODUCT, COUPON>(
);
cart.value = updatedCart;
loading.value = false;
} catch (e) {
Logger.error('useCart.applyCoupon', e);
throw e;
} catch (err) {
error.value.removeCoupon = err;
Logger.error('useCart/removeCoupon', err);
} finally {
loading.value = false;
}
Expand All @@ -179,7 +212,8 @@ export const useCartFactory = <CART, CART_ITEM, PRODUCT, COUPON>(
updateItemQty,
applyCoupon,
removeCoupon,
loading: computed(() => loading.value)
loading: computed(() => loading.value),
error: computed(() => error.value)
};
};
};
1 change: 1 addition & 0 deletions packages/core/core/src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -167,6 +167,7 @@ export interface UseCart
removeCoupon(params: { coupon: COUPON; customQuery?: CustomQuery }): Promise<void>;
load(): Promise<void>;
load(params: { customQuery?: CustomQuery }): Promise<void>;
error: ComputedProperty<Record<string, Error>>;
loading: ComputedProperty<boolean>;
}

Expand Down

0 comments on commit c220aee

Please sign in to comment.