4
0
forked from crowetic/commerce

Use CommerceError for hooks

This commit is contained in:
Luis Alvarez 2020-10-22 16:37:06 -05:00
parent 2eebfcbf3b
commit 3941b90b0f
4 changed files with 17 additions and 11 deletions

View File

@ -1,5 +1,6 @@
import { useCallback } from 'react' import { useCallback } from 'react'
import { HookFetcher } from '@lib/commerce/utils/types' import type { HookFetcher } from '@lib/commerce/utils/types'
import { CommerceError } from '@lib/commerce/utils/errors'
import useCartAddItem from '@lib/commerce/cart/use-add-item' import useCartAddItem from '@lib/commerce/cart/use-add-item'
import type { ItemBody, AddItemBody } from '../api/cart' import type { ItemBody, AddItemBody } from '../api/cart'
import useCart, { Cart } from './use-cart' import useCart, { Cart } from './use-cart'
@ -20,9 +21,9 @@ export const fetcher: HookFetcher<Cart, AddItemBody> = (
item.quantity && item.quantity &&
(!Number.isInteger(item.quantity) || item.quantity! < 1) (!Number.isInteger(item.quantity) || item.quantity! < 1)
) { ) {
throw new Error( throw new CommerceError({
'The item quantity has to be a valid integer greater than 0' message: 'The item quantity has to be a valid integer greater than 0',
) })
} }
return fetch({ return fetch({

View File

@ -1,6 +1,7 @@
import { useCallback } from 'react' import { useCallback } from 'react'
import debounce from 'lodash.debounce' import debounce from 'lodash.debounce'
import { HookFetcher } from '@lib/commerce/utils/types' import type { HookFetcher } from '@lib/commerce/utils/types'
import { CommerceError } from '@lib/commerce/utils/errors'
import useCartUpdateItem from '@lib/commerce/cart/use-update-item' import useCartUpdateItem from '@lib/commerce/cart/use-update-item'
import type { ItemBody, UpdateItemBody } from '../api/cart' import type { ItemBody, UpdateItemBody } from '../api/cart'
import { fetcher as removeFetcher } from './use-remove-item' import { fetcher as removeFetcher } from './use-remove-item'
@ -24,7 +25,9 @@ export const fetcher: HookFetcher<Cart | null, UpdateItemBody> = (
return removeFetcher(null, { itemId }, fetch) return removeFetcher(null, { itemId }, fetch)
} }
} else if (item.quantity) { } else if (item.quantity) {
throw new Error('The item quantity has to be a valid integer') throw new CommerceError({
message: 'The item quantity has to be a valid integer',
})
} }
return fetch({ return fetch({

View File

@ -1,5 +1,6 @@
import { useCallback } from 'react' import { useCallback } from 'react'
import { HookFetcher } from '@lib/commerce/utils/types' import type { HookFetcher } from '@lib/commerce/utils/types'
import { CommerceError } from '@lib/commerce/utils/errors'
import useCommerceLogin from '@lib/commerce/use-login' import useCommerceLogin from '@lib/commerce/use-login'
import type { LoginBody } from './api/customers/login' import type { LoginBody } from './api/customers/login'
@ -16,9 +17,10 @@ export const fetcher: HookFetcher<null, LoginBody> = (
fetch fetch
) => { ) => {
if (!(email && password)) { if (!(email && password)) {
throw new Error( throw new CommerceError({
'A first name, last name, email and password are required to login' message:
) 'A first name, last name, email and password are required to login',
})
} }
return fetch({ return fetch({

View File

@ -1,6 +1,6 @@
import { useCallback } from 'react' import { useCallback } from 'react'
import { CommerceError } from '@lib/commerce/utils/errors'
import type { HookFetcher } from '@lib/commerce/utils/types' import type { HookFetcher } from '@lib/commerce/utils/types'
import { CommerceError } from '@lib/commerce/utils/errors'
import useCommerceSignup from '@lib/commerce/use-signup' import useCommerceSignup from '@lib/commerce/use-signup'
import type { SignupBody } from './api/customers/signup' import type { SignupBody } from './api/customers/signup'