fix/saleor: handle non-existing checkout

This commit is contained in:
Zaiste 2021-06-10 21:40:12 +02:00
parent 62f5dead0d
commit 4492f3051c
No known key found for this signature in database
GPG Key ID: 15DF7EBC7F2FFE35
3 changed files with 56 additions and 31 deletions

View File

@ -6,7 +6,7 @@ import useCart from './use-cart'
import * as mutation from '../utils/mutations'
import { getCheckoutId, checkoutToCart } from '../utils'
import { getCheckoutId, checkoutToCart, checkoutCreate } from '../utils'
import { Mutation, MutationCheckoutLinesAddArgs } from '../schema'
import { AddItemHook } from '@commerce/types/cart'
@ -35,6 +35,25 @@ export const handler: MutationHook<AddItemHook> = {
},
})
if (checkoutLinesAdd?.errors) {
await checkoutCreate(fetch)
const { checkoutLinesAdd } = await fetch<Mutation, MutationCheckoutLinesAddArgs>({
...options,
variables: {
checkoutId: getCheckoutId().checkoutId,
lineItems: [
{
variantId: item.variantId,
quantity: item.quantity ?? 1,
},
],
},
})
return checkoutToCart(checkoutLinesAdd)
}
return checkoutToCart(checkoutLinesAdd)
},
useHook:

View File

@ -16,12 +16,18 @@ export const handler: SWRHook<GetCartHook> = {
let checkout
if (checkoutId) {
const checkoutId = getCheckoutId().checkoutToken
const r = getCheckoutId()
const checkoutToken = r.checkoutToken
const data = await fetch({
...options,
variables: { checkoutId },
variables: { checkoutId: checkoutToken },
})
if (!data.checkout) {
checkout = await checkoutCreate(fetch)
}
checkout = data
}