4
0
forked from crowetic/commerce
Files
.vscode
assets
components
config
framework
bigcommerce
commerce
commercejs
kibocommerce
local
ordercloud
saleor
shopify
api
auth
cart
checkout
customer
product
types
utils
wishlist
.env.template
README.md
codegen.json
commerce.config.json
const.ts
fetcher.ts
index.tsx
next.config.js
provider.ts
schema.d.ts
schema.graphql
spree
swell
vendure
lib
pages
public
.editorconfig
.env.template
.eslintrc
.gitignore
.prettierignore
.prettierrc
README.md
codegen.bigcommerce.json
codegen.json
commerce.config.json
global.d.ts
license.md
next-env.d.ts
next.config.js
package-lock.json
package.json
postcss.config.js
swell-js.d.ts
tailwind.config.js
tsconfig.json
commerce/framework/shopify
2021-11-25 09:17:13 -03:00
..
2021-11-25 09:17:13 -03:00
2021-11-25 09:17:13 -03:00
2021-11-25 09:17:13 -03:00
2021-09-22 19:20:58 -05:00
2021-03-04 07:57:25 -03:00
2021-06-29 13:46:29 -03:00
2021-09-22 20:54:17 -05:00
2021-08-30 22:32:20 -05:00
2021-03-04 07:57:25 -03:00

Shopify Provider

Demo: https://shopify.demo.vercel.store/

Before getting started, a Shopify account and store is required before using the provider.

Next, copy the .env.template file in this directory to .env.local in the main directory (which will be ignored by Git):

cp framework/shopify/.env.template .env.local

Then, set the environment variables in .env.local to match the ones from your store.

Contribute

Our commitment to Open Source can be found here.

If you find an issue with the provider or want a new feature, feel free to open a PR or create a new issue.

Modifications

These modifications are temporarily until contributions are made to remove them.

Adding item to Cart

// components/product/ProductView/ProductView.tsx
const ProductView: FC<Props> = ({ product }) => {
  const addToCart = async () => {
    setLoading(true)
    try {
      await addItem({
        productId: product.id,
        variantId: variant ? variant.id : product.variants[0].id,
      })
      openSidebar()
      setLoading(false)
    } catch (err) {
      setLoading(false)
    }
  }
}

Proceed to Checkout

// components/cart/CartSidebarView/CartSidebarView.tsx
import { useCommerce } from '@framework'

const CartSidebarView: FC = () => {
  const { checkout } = useCommerce()
  return (
    <Button href={checkout.webUrl} Component="a" width="100%">
      Proceed to Checkout
    </Button>
  )
}

APIs

Collections of APIs to fetch data from a Shopify store.

The data is fetched using the Shopify JavaScript Buy SDK. Read the Shopify Storefront API reference for more information.

getProduct

Get a single product by its handle.

import getProduct from '@framework/product/get-product'
import { getConfig } from '@framework/api'

const config = getConfig()

const product = await getProduct({
  variables: { slug },
  config,
})

getAllProducts

import getAllProducts from '@framework/product/get-all-products'
import { getConfig } from '@framework/api'

const config = getConfig()

const { products } = await getAllProducts({
  variables: { first: 12 },
  config,
})

getAllCollections

import getAllCollections from '@framework/product/get-all-collections'
import { getConfig } from '@framework/api'

const config = getConfig()

const collections = await getAllCollections({
  config,
})

getAllPages

import getAllPages from '@framework/common/get-all-pages'
import { getConfig } from '@framework/api'

const config = getConfig()

const pages = await getAllPages({
  variables: { first: 12 },
  config,
})

Code generation

This provider makes use of GraphQL code generation. The schema.graphql and schema.d.ts files contain the generated types & schema introspection results.

When developing the provider, changes to any GraphQL operations should be followed by re-generation of the types and schema files:

From the project root dir, run:

yarn generate:shopify