Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Spree Commerce Provider #484

Merged
merged 132 commits into from
Dec 13, 2021
Merged

Spree Commerce Provider #484

merged 132 commits into from
Dec 13, 2021

Conversation

tniezg
Copy link
Contributor

@tniezg tniezg commented Sep 13, 2021

Demo (uses this PR): https://spree.vercel.app/

Status

  • CommerceProvider
  • Schema & TS types
  • API Operations - Get all collections
  • API Operations - Get all pages
  • API Operations - Get all products
  • API Operations - Get page
  • API Operations - Get product
  • API Operations - Get Shop Info (categories and vendors working — vendors query still a WIP PR on Reaction)
  • Hook - Add Item
  • Hook - Remove Item
  • Hook - Update Item
  • Hook - Get Cart
  • Auth
  • Customer information
  • Product attributes - Size, Colors
  • Custom checkout
  • Typing
  • Tests

tniezg added 30 commits July 23, 2021 11:21
Copy link
Contributor

@goncy goncy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We reached to an end! If you can resolve those last comments we can merge and I will set up the deploy for spree.vercel.store 🙌

@tniezg
Copy link
Contributor Author

tniezg commented Dec 13, 2021

@goncy Links updated. Thanks for CRs.

Copy link
Contributor

@goncy goncy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey @tniezg ! I was trying all other deploys and I found out that you are importing from framework in some files, I left a comment in every file to replace framework alias imports with relative paths to avoid breaking other providers, just let me know!

framework/spree/api/operations/get-all-pages.ts Outdated Show resolved Hide resolved
framework/spree/api/operations/get-all-products.ts Outdated Show resolved Hide resolved
framework/spree/api/operations/get-page.ts Outdated Show resolved Hide resolved
framework/spree/api/utils/create-api-fetch.ts Outdated Show resolved Hide resolved
framework/spree/auth/use-signup.tsx Outdated Show resolved Hide resolved
framework/spree/utils/tokens/revoke-user-tokens.ts Outdated Show resolved Hide resolved
framework/spree/utils/tokens/user-token-response.ts Outdated Show resolved Hide resolved
framework/spree/wishlist/use-add-item.tsx Outdated Show resolved Hide resolved
framework/spree/wishlist/use-remove-item.tsx Outdated Show resolved Hide resolved
framework/spree/wishlist/use-wishlist.tsx Outdated Show resolved Hide resolved
@tniezg
Copy link
Contributor Author

tniezg commented Dec 13, 2021

Hi @goncy,
Thanks for reporting. We replaced @framework with relative imports.

For future reference: Use "typescript.preferences.importModuleSpecifier": "relative" in VSCode. Otherwise, VSCode uses whatever is shorter 🙂

@goncy goncy merged commit d77d000 into vercel:main Dec 13, 2021
@tniezg
Copy link
Contributor Author

tniezg commented Dec 13, 2021

🎉 🕺

loan-laux pushed a commit to TrellisCommerce/next-commerce-bigcommerce that referenced this pull request May 11, 2023
* Include @spree/storefront-api-v2-sdk

* Add basic Spree framework structure

* Add Spree as allowed Framework

* Fetch product images, standardize API fetch using Spree SDK

* Include slug and path in products

* Fetch single product during build time

* PLP with searching by category

* Fetch Spree Categories and Brands

* Sort PLP

* Search products by name

* Fix option values collection

* Fix hasNonMasterVariants

* Sort Categories and Brands

* Add configuration to show product options when there's one variant available

* Enable text search for the Spree Framework

* Allow removing line items

* Allow updating line item quantity

* Add __typename to variant options to allow adding the selected variant to the cart

* Use fetch and Request from node-fetch in Spree SDK

* Update Spree SDK fetcher

* Show placeholder message for /chechout and adjust api fetcher type

* Use kebab case instead of camel case

* Remove outdated comments

* Remove outdated comment

* Resolve isColorProductOption duplication

* Type Spree variants and line items and temporarily remove height, width and depth

* Remove outdated comment

* Update comments about cart discounts

* Remove 'spree' prefix from isomorphicConfig and add lastUpdatedProductsPrerenderCount

* Implement getAllProductPaths to prerender some products during build time

* Adjust fetchers to the latest Spree SDK interface

* Add types to Spree taxons mapping

* Revert port change in package.json scripts

* Add basic README describing Spree installation

* Expand README's installation section

* Upgrade Spree SDK to 4.7.0 and add node-fetch to dependencies

* Order providers alphanumerically

Co-authored-by: Damian Legawiec <[email protected]>

* Sort products by available_on when using the Trending sorting in useSearch

* Change the default Spree port to 4000 and update README in sync with Spree Starter changes

* Save primary variant's SKU when normalizing a product from Spree

* Create a new cart if Spree can't find the current using a token

* Add separator to README

* Add missing Error subclass

* Allow placeholder images for products and line items without images

* Add image

* Reset tsconfig.json paths to originla values

* Search taxonomies by permalinks instead of IDs

* Upgrade Spree SDK to version 4.7.1

* Remove references to @framework and use relative paths instead

* Generalize TypeScript and add typings to getPage

* Update fetcher to avoid parsing non-JSON responses

* Use original product image by default instead of resized

* Link to an online demo of the Spree integration in the README

* Flatten fetcher responses

* Include Spree in the list of supported ecommerce backends in README

* Update README.md

* Format Spree's README

* Add link to the Spree demo site in the main README

* Update README.md

* Update README.md

* Allow setting a taxon id for getAllProducts

* Use Spree SDK's JSON:API helpers

* Sort getAllProducts by -updated_at when using a taxonomy

* Remove slash '/' from line item's paths

* Allow filtering variant images by option type

* Upgrade checkout behavior in line with core NextJS Commerce changes

* Remove dummy submitCheckout function

* [NX-24] Display PDP option types sorted by position from Spree

* Supply Spree primary variant if a product has no option variants

* Do not throw an error if a product doesn't have NEXT_PUBLIC_SPREE_IMAGES_OPTION_FILTER

* [NX-43] Uses image transformations when fetching products images

* Use bind to properly call Spree SDK methods and update SDK fetcher in line with SDK 4.12.0

* Fix ESLint issues in useHook

* Support account sign up, login and logout

Also
- Converts the guest cart to a persisted cart tied to the logged in user after log in.
- Fixes issues with use-remove-item. The cart will now properly refresh after an item is removed.
- Uses the logged in user's token to adjust the cart and make other authenticated requests.
- Transparently refreshed the access token of the logged in user with a refresh token. Replays requests to Spree which fail with a 401 error after refreshing the access token.

* Fetch logged in user's cart after login or signup but associate guest cart only after signup

* Support Spree default wishlist show, add and remove wished items operations

* Fetch Spree CMS Pages

* Fix login, handle critical token errors and fix WishlistCard

Fix to WishlistCard changes its props to be consistent with WishlistButton when calling useRemoveItem

* Fix variable name (vercel#574)

Variable name should be `ChevronRight`

* Update get-cart.ts (vercel#474)

include digital items

Co-authored-by: Gonzalo Pozzo <[email protected]>

* Update normalize.ts (vercel#475)

add missing options property to `normalizeLineItem`

Co-authored-by: Gonzalo Pozzo <[email protected]>

* Update add-item.ts (vercel#473)

* Update add-item.ts

include digital items

* Update add-item.ts

include digital items

Co-authored-by: Gonzalo Pozzo <[email protected]>

* fix typo (vercel#572)

Co-authored-by: Gonzalo Pozzo <[email protected]>

* Fix authentication.refreshToken arguments

* Remove redundant comments and logs

* Fix createEmptyCart request to Spree and add option to disable auto login

* Fix formatting issues

* Apply image transformation when fetching images for products in cart

* Replace call to qs with Spree SDK built-in helper

* Upgrade Spree SDK to 5.0.1

* Rename zeitFetch import to vercelFetch

* Abstract fetcher JSON Content-Type checking into separate function

* Rename imageUrl to url

getMediaGallery already provides context for the constant

* Remove return type for getProductPath

The return type can be trivially determined from the returned value.

* Change URL to Spree demo store in root README

Co-authored-by: Gonzalo Pozzo <[email protected]>

* Change label for link to Spree demo store in Spree's README

Co-authored-by: Gonzalo Pozzo <[email protected]>

* Change URL to Spree demo store in Spree's README

Co-authored-by: Gonzalo Pozzo <[email protected]>

* Use only relative paths to /framework/spree from itself

Co-authored-by: tniezg <[email protected]>
Co-authored-by: Damian Legawiec <[email protected]>
Co-authored-by: Robert Nowakowski <[email protected]>
Co-authored-by: Grey <[email protected]>
Co-authored-by: pfcodes <[email protected]>
Co-authored-by: Gonzalo Pozzo <[email protected]>
Co-authored-by: Konrad Kruk <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants