From 8a8ef7dbba8a4aa53475379aaa01f30960ac0ca4 Mon Sep 17 00:00:00 2001 From: Greg Hoskin Date: Mon, 19 Apr 2021 20:37:33 -0500 Subject: [PATCH] setup swell checkout --- framework/swell/api/checkout/index.ts | 28 ++----------------- framework/swell/cart/use-cart.tsx | 10 +++---- framework/swell/cart/utils/checkout-create.ts | 20 ++++--------- framework/swell/const.ts | 2 +- framework/swell/provider.ts | 4 +-- next.config.js | 3 +- 6 files changed, 17 insertions(+), 50 deletions(-) diff --git a/framework/swell/api/checkout/index.ts b/framework/swell/api/checkout/index.ts index 244078466..03f166a1a 100644 --- a/framework/swell/api/checkout/index.ts +++ b/framework/swell/api/checkout/index.ts @@ -1,40 +1,16 @@ -import isAllowedMethod from '../utils/is-allowed-method' import createApiHandler, { ShopifyApiHandler, } from '../utils/create-api-handler' -import { - SHOPIFY_CHECKOUT_ID_COOKIE, - SHOPIFY_CHECKOUT_URL_COOKIE, - SHOPIFY_CUSTOMER_TOKEN_COOKIE, -} from '../../const' +import { SWELL_CHECKOUT_URL_COOKIE } from '../../const' import { getConfig } from '..' -import associateCustomerWithCheckoutMutation from '../../utils/mutations/associate-customer-with-checkout' - -const METHODS = ['GET'] const checkoutApi: ShopifyApiHandler = async (req, res, config) => { - if (!isAllowedMethod(req, res, METHODS)) return - config = getConfig() const { cookies } = req - const checkoutUrl = cookies[SHOPIFY_CHECKOUT_URL_COOKIE] - const customerCookie = cookies[SHOPIFY_CUSTOMER_TOKEN_COOKIE] - - if (customerCookie) { - try { - await config.fetch(associateCustomerWithCheckoutMutation, { - variables: { - checkoutId: cookies[SHOPIFY_CHECKOUT_ID_COOKIE], - customerAccessToken: cookies[SHOPIFY_CUSTOMER_TOKEN_COOKIE], - }, - }) - } catch (error) { - console.error(error) - } - } + const checkoutUrl = cookies[SWELL_CHECKOUT_URL_COOKIE] if (checkoutUrl) { res.redirect(checkoutUrl) diff --git a/framework/swell/cart/use-cart.tsx b/framework/swell/cart/use-cart.tsx index 183a9ad6d..04d07914d 100644 --- a/framework/swell/cart/use-cart.tsx +++ b/framework/swell/cart/use-cart.tsx @@ -2,7 +2,7 @@ import useCart, { UseCart } from '@commerce/cart/use-cart' import { Cart } from '@commerce/types' import { SWRHook } from '@commerce/utils/types' import { normalizeCart } from '../utils/normalize' -// import { getCustomerQuery, getCustomerToken } from '../utils' +import { checkoutCreate, checkoutToCart } from './utils' export default useCart as UseCart @@ -12,10 +12,10 @@ export const handler: SWRHook = { method: 'get', }, async fetcher({ options, fetch }) { - const data = await fetch({ - ...options, - }) - return data ? normalizeCart(data) : null + const cart = await checkoutCreate(fetch) + + return cart ? normalizeCart(cart) : null + // return checkoutToCart({ checkout } as any) }, useHook: ({ useData }) => (input) => { return useData({ diff --git a/framework/swell/cart/utils/checkout-create.ts b/framework/swell/cart/utils/checkout-create.ts index 73109baad..cc08007f4 100644 --- a/framework/swell/cart/utils/checkout-create.ts +++ b/framework/swell/cart/utils/checkout-create.ts @@ -1,10 +1,5 @@ -import { - SHOPIFY_CHECKOUT_ID_COOKIE, - SHOPIFY_CHECKOUT_URL_COOKIE, - SHOPIFY_COOKIE_EXPIRE, -} from '../../const' +import { SWELL_CHECKOUT_URL_COOKIE } from '../../const' -// import checkoutCreateMutation from '../../utils/mutations/checkout-create' import Cookies from 'js-cookie' export const checkoutCreate = async (fetch: any) => { @@ -13,16 +8,11 @@ export const checkoutCreate = async (fetch: any) => { method: 'get', }) - // const checkout = data.checkoutCreate?.checkout - const checkoutId = cart?.id + const checkoutUrl = cart?.checkout_url - // if (checkoutId) { - // const options = { - // expires: SHOPIFY_COOKIE_EXPIRE, - // } - // Cookies.set(SHOPIFY_CHECKOUT_ID_COOKIE, checkoutId, options) - // Cookies.set(SHOPIFY_CHECKOUT_URL_COOKIE, checkout?.webUrl, options) - // } + if (checkoutUrl) { + Cookies.set(SWELL_CHECKOUT_URL_COOKIE, checkoutUrl) + } return cart } diff --git a/framework/swell/const.ts b/framework/swell/const.ts index f2b0d5396..7226b19cb 100644 --- a/framework/swell/const.ts +++ b/framework/swell/const.ts @@ -1,6 +1,6 @@ export const SHOPIFY_CHECKOUT_ID_COOKIE = 'shopify_checkoutId' -export const SHOPIFY_CHECKOUT_URL_COOKIE = 'shopify_checkoutUrl' +export const SWELL_CHECKOUT_URL_COOKIE = 'swell_checkoutUrl' export const SHOPIFY_CUSTOMER_TOKEN_COOKIE = 'shopify_customerToken' diff --git a/framework/swell/provider.ts b/framework/swell/provider.ts index f8a4ac1d6..0bcbd7888 100644 --- a/framework/swell/provider.ts +++ b/framework/swell/provider.ts @@ -1,4 +1,4 @@ -import { SHOPIFY_CHECKOUT_ID_COOKIE, STORE_DOMAIN } from './const' +import { SWELL_CHECKOUT_URL_COOKIE, STORE_DOMAIN } from './const' import { handler as useCart } from './cart/use-cart' import { handler as useAddItem } from './cart/use-add-item' @@ -16,7 +16,7 @@ import fetcher from './fetcher' export const swellProvider = { locale: 'en-us', - cartCookie: SHOPIFY_CHECKOUT_ID_COOKIE, + cartCookie: SWELL_CHECKOUT_URL_COOKIE, storeDomain: STORE_DOMAIN, fetcher, cart: { useCart, useAddItem, useUpdateItem, useRemoveItem }, diff --git a/next.config.js b/next.config.js index 7e86695a0..3569eff26 100644 --- a/next.config.js +++ b/next.config.js @@ -3,6 +3,7 @@ const withCommerceConfig = require('./framework/commerce/with-config') const isBC = commerce.provider === 'bigcommerce' const isShopify = commerce.provider === 'shopify' +const isSwell = commerce.provider === 'swell' module.exports = withCommerceConfig({ commerce, @@ -12,7 +13,7 @@ module.exports = withCommerceConfig({ }, rewrites() { return [ - (isBC || isShopify) && { + (isBC || isShopify || isSwell) && { source: '/checkout', destination: '/api/bigcommerce/checkout', },