From dedecd04decfde0dcbf5d60757df5f5e69b7e829 Mon Sep 17 00:00:00 2001 From: Geoffrey K Taylor Date: Mon, 31 Jul 2023 15:28:39 -0400 Subject: [PATCH] docs: More docs drafted. (#774) * docs: Pro docs drafted. * feat: billingEmail added to OrderConnectionWhereArgs * feat: More drafts added. * docs: More documentation introduced. * docs: page meta added to each new section * chore: Linter compliance met * docs: page meta added to each new section * docs: Some revision and screenshots added. * docs: More revisions * feat: more revisions and images added. * updated docs after proofreading * chore: HPOS compatibility declared. * docs: Some word consistency issues fixed. * docs: Introductions and conclusions added. * chore: Linter compliance met --------- Co-authored-by: Craig Wilcox --- ...iguring-graphql-client-for-user-session.md | 35 +- docs/handling-user-authentication.md | 38 +- ...g-user-session-and-using-cart-mutations.md | 192 +++++++- docs/harmonizing-with-wordpress.md | 14 +- docs/images/account-address-screenshot.png | Bin 0 -> 53306 bytes docs/images/account-dashboard-to-orders.gif | Bin 0 -> 130984 bytes docs/images/account-details-screenshot.png | Bin 0 -> 25168 bytes docs/images/login-to-account-dashboard.gif | Bin 0 -> 70054 bytes docs/images/order-status-page-states.gif | Bin 0 -> 50816 bytes docs/installation.md | 2 +- docs/routing-by-uri.md | 8 +- docs/settings.md | 10 +- docs/using-cart-data.md | 14 +- ...g-checkout-mutation-and-order-mutations.md | 97 ++++ ...ng-composite-product-data-and-mutations.md | 264 +++++++++++ docs/using-customer-data-and-mutations.md | 427 ++++++++++++++++++ docs/using-order-data.md | 139 ++++++ ...using-product-addons-data-and-mutations.md | 6 + ...using-product-bundle-data-and-mutations.md | 97 ++++ docs/using-product-data.md | 16 +- docs/using-subscription-data-and-mutations.md | 138 ++++++ includes/connection/class-orders.php | 14 +- .../class-order-connection-resolver.php | 6 + tests/wpunit/OrderQueriesTest.php | 38 +- wp-graphql-woocommerce.php | 12 +- 25 files changed, 1470 insertions(+), 97 deletions(-) create mode 100644 docs/images/account-address-screenshot.png create mode 100644 docs/images/account-dashboard-to-orders.gif create mode 100644 docs/images/account-details-screenshot.png create mode 100644 docs/images/login-to-account-dashboard.gif create mode 100644 docs/images/order-status-page-states.gif diff --git a/docs/configuring-graphql-client-for-user-session.md b/docs/configuring-graphql-client-for-user-session.md index 6437cdad..c5f851cb 100644 --- a/docs/configuring-graphql-client-for-user-session.md +++ b/docs/configuring-graphql-client-for-user-session.md @@ -7,9 +7,9 @@ author: "Geoff Taylor" # Configuring a GraphQL Client for WooCommerce User Session Management -In this comprehensive guide, we'll walk you through the process of configuring a GraphQL client to manage user sessions and credentials when working with WooGraphQL. By following the steps outlined in this tutorial, you'll learn how to create a GraphQL client that maintains a valid WooCommerce session in the `woocommerce_sessions` DB table. This knowledge will enable you to build robust applications that interact smoothly with WooCommerce while providing a seamless experience for your users and shortening development time. +In this section, we'll walk you through the process of configuring a GraphQL client to manage user sessions and credentials when working with WooGraphQL. By following the steps outlined in this tutorial, you'll learn how to create a GraphQL client that maintains a valid WooCommerce session in the `woocommerce_sessions` DB table. This knowledge will enable you to build robust applications that interact smoothly with WooCommerce while providing a seamless experience for your users and shortening development time. -By properly handling the session token, you can implement session pass-off functionality, allowing you to fallback on the cart page, my-account page, or any other page living in WordPress that relies on user sessions. Note that implementing the session pass-off functionality is out of the scope of this guide. So, let's dive in and explore the intricacies of setting up a GraphQL client that effectively manages user sessions for your e-commerce store! +By properly handling the session token, you can implement session pass-off functionality, allowing you to fallback on the cart page, my-account page, or any other page living in WordPress that relies on user sessions. (Note that implementing the session pass-off functionality is out of the scope of this section.) So, let's dive in and explore the intricacies of setting up a GraphQL client that effectively manages user sessions for your e-commerce store! ## Sending the `woocommerce-session` HTTP request header @@ -52,7 +52,7 @@ fetch(endpoint, { This works for simple streamlined applications that don't rely heavily on cart functionality. Note that this example also does not retrieve the updated token from the `woocommerce-session` HTTP response header. -And if you're using a library or framework like Apollo, configuring middleware and afterware layers are required, which makes things more confusing if not explained or demonstrated effectively. In this guide, we'll walk you through setting up the Apollo Client and its middleware/afterware to work with WooGraphQL. +And if you're using a library or framework like Apollo, configuring middleware and afterware layers are required. In this section, we'll walk you through setting up the Apollo Client and its middleware/afterware to work with WooGraphQL. ## Creating the Apollo Client instance @@ -74,7 +74,7 @@ const client = new ApolloClient({ }); ``` -In the example you see the creation of our `client`. It include middleware/afterware callbacks managed by the `ApolloLink` class. For those not familiar with it, the `ApolloLink` class is allowed you to customize the flow of data by defining you networks behavior as a chain of link object. I'm stating this so you know the order of the callbacks is also important and it will be understood why as we define this callbacks themselves. +In the example you see the creation of our `client`. It include middleware/afterware callbacks managed by the `ApolloLink` class. For those not familiar with it, the `ApolloLink` class allows you to customize the flow of data by defining your network's behavior as a chain of link objects. I'm stating this so you know the order of the callbacks is also important and it will be understood why as we define these callbacks themselves. ## Defining the `createSessionLink` function @@ -104,18 +104,18 @@ function createSessionLink() { And that's our callback for applying the our session token to each request made through our client. Note that I am using the shorthand method of importing the `setContext` function, however most examples you will find will use the `ApolloLink` class directly to define the link object. ```javascript -mport { ApolloLink } from '@apollo/client'; +import { ApolloLink } from '@apollo/client'; const consoleLink = new ApolloLink((operation, forward) => { return operation.setContext(/* our callback */); }); ``` -And this works fine too, but is more verbose and kinda overkill if your just make a stateless link like we are here. `Stateless` links are middleware callbacks that don't care to know anything about the context of the operation and just does it own thing regardless of what operation Apollo is about to execute. +And this works fine too, but it's more verbose and kinda overkill if you're just making a stateless link like we are here. `Stateless` links are middleware callbacks that don't care to know anything about the context of the operation and just does it own thing regardless of what operation Apollo is about to execute. ## About the environment variables -Before we dive into the guide, it's important to note that the `process.env.*` variables used throughout the tutorial are simply string values stored in an `.env` file and loaded using the [**dotenv**](https://www.npmjs.com/package/dotenv) package. As a reader, you can replace these variables with any values that suit your needs. +Before we dive into the section, it's important to note that the `process.env.*` variables used throughout the tutorial are simply string values stored in an `.env` file and loaded using the [**dotenv**](https://www.npmjs.com/package/dotenv) package. As a reader, you can replace these variables with any values that suit your needs. Here's a sample .env file to help you get started: @@ -141,7 +141,7 @@ export async function getSessionToken(forceFetch = false) { } ``` -The function is rather simple. It attempt to retrieve the `sessionToken` from `localStorage`, and if that fails or `forceFetch` is passed it fetches a new one using `fetchSessionToken()`. And `fetchSessionToken` is defined. +The function is rather simple. It attempt to retrieve the `sessionToken` from `localStorage`, and if that fails or `forceFetch` is passed it fetches a new one using `fetchSessionToken()`. And now `fetchSessionToken` is defined. ```javascript import { GraphQLClient } from 'graphql-request'; @@ -172,7 +172,7 @@ async function fetchSessionToken() { ``` -For this example this works for most case but typically you want the obscure the retrieval of the token and the endpoint from the end-user, especially if dealing with authenticated users. There are a number of a ways to do this like serverless functions or Next.js API routes and they should be doing exactly what is done here retrieve the sessionToken and/or user authentication tokens and nothing else. See the `GetCartDocument` below in `./graphql`. +This works for most cases but typically you want the obscure the retrieval of the token and the endpoint from the end-user, especially if dealing with authenticated users. There are a number of a ways to do this like serverless functions or Next.js API routes and they should be doing exactly what is done here: retrieve the sessionToken and/or user authentication tokens and nothing else. See the `GetCartDocument` below in `./graphql`. ```javascript import { gql } from '@apollo/client'; @@ -255,7 +255,7 @@ const targetErrors = [ ]; ``` -This our the error messages we are targeting. Each are exclusively results of an invalid tokens. +These are the error messages we are targeting. Each are exclusively results of an invalid tokens. ```javascript let observable; @@ -281,10 +281,11 @@ let observable; }) ``` -This is the scary looking part if you are not familar with observables, but don't be. Observables are similar to Promises, but instead of handling a single asynchronous event, they handle multiple events over time. While Promises resolve only once and return a single value, Observables emit multiple values and can be canceled, providing greater control over asynchronous data streams. -Our usage here is to tell Apollo to retry the last operation after we have retrieved a new token with `getSessionToken` if the current `graphQLError` matches any of our targetted errors, otherwise `observable` is left as a `undefined` value and Apollo continues as normal. +This is the scary looking part if you are not familar with observables, so let me explain it briefly. Observables are similar to Promises, but instead of handling a single asynchronous event, they handle multiple events over time. While Promises resolve only once and return a single value, Observables emit multiple values and can be canceled, providing greater control over asynchronous data streams. -Next is the `createUpdateLink` callback, responsible for retrieving an updated `sessionToken` from the `woocommerce-session` HTTP response token. The reason for this is the session token generated by WooGraphQL is self-managing and a new token with an updated expiration time of 14 days from the last action is generated on each request that a `woocommerce-session` HTTP request header is sent. To retrieve a store this updated token we use Apollo afterware. +Our usage here is to tell Apollo to retry the last operation after we have retrieved a new token with `getSessionToken` if the current `graphQLError` matches any of our targetted errors, otherwise `observable` is left as an `undefined` value and Apollo continues as normal. + +Next is the `createUpdateLink` callback, responsible for retrieving an updated `sessionToken` from the `woocommerce-session` HTTP response token. The reason for this is the session token generated by WooGraphQL is self-managing and a new token with an updated expiration time of 14 days from the last action is generated on each request that a `woocommerce-session` HTTP request header is sent. To retrieve and store this updated token we use Apollo afterware. ## Defining the `createUpdateLink` function @@ -313,16 +314,16 @@ function createUpdateLink(operation, forward) => { } ``` -This is an our Apollo afterware callback, and if you are wondering how does this differ from Apollo middleware look at the following. +This is an our Apollo afterware callback, and if you are wondering how does this differ from Apollo middleware, look at the following. ```javascript return forward(operation).map((response) => { ``` -By calling `.map()` on the result of `forward()`, we're telling Apollo to execute this after operation completion, you can even take it a further by modifying the `response` object if necessary. It is not here, but I figured I should at least state that fact. +By calling `.map()` on the result of `forward()`, we're telling Apollo to execute this after operation completion, you can even take it a further by modifying the `response` object if necessary. It is not necessary here, but I figured I should at least state that fact. -We also put after the `createErrorLink` callback in our `from()` call when defining the `ApolloClient` to ensure it's never executed on a request failed due to an invalid token. +We can also put the `createErrorLink` callback in our `from()` call when defining the `ApolloClient` to ensure it's never executed on a request failed due to an invalid token. -And with the creation of the `createUpdateLink` link, we now have an Apollo Client that completely manages the WooCommerce session. Note that this doesn't account for all use cases, specifically dealing with registered WooCommerce customers. In such cases, you'll need to use a second JWT for identifying their WordPress account, called an Authentication Token or auth token for short. For handling user authentication, auth tokens, and refresh tokens, refer to the next guide. +And with the creation of the `createUpdateLink` link, we now have an Apollo Client that completely manages the WooCommerce session. Note that this doesn't account for all use cases, specifically dealing with registered WooCommerce customers. In such cases, you'll need to use a second JWT for identifying their WordPress account, called an Authentication Token or auth token for short. For handling user authentication, auth tokens, and refresh tokens, refer to the next section. This should provide you with a solid foundation for setting up a GraphQL client that effectively manages user sessions in your e-commerce application. By following the steps outlined, you'll be able to create a seamless experience for your users when interacting with both WooCommerce, ultimately saving development time and effort. diff --git a/docs/handling-user-authentication.md b/docs/handling-user-authentication.md index 1466c09a..16f965da 100644 --- a/docs/handling-user-authentication.md +++ b/docs/handling-user-authentication.md @@ -7,9 +7,9 @@ author: "Geoff Taylor" # Handling User Authentication -In this guide, we'll pick where the last one stopped and focus on handling user authentication, auth tokens, and refresh tokens. This will allow your application to not only manage WooCommerce sessions effectively but also handle WordPress authentication, providing a seamless experience for your users. +In this section, we'll pick up where the last one stopped and focus on handling user authentication, auth tokens, and refresh tokens. This will allow your application to not only manage WooCommerce sessions effectively but also handle WordPress authentication, providing a seamless experience for your users. -The execution of this part of the guide should be similar to the first part, with some additional steps to account for the different behavior around validation and renewal of auth tokens. We'll walk you through modifying the `createSessionLink`, `fetchSessionToken`, +The execution of this section of the documentation should be similar to the [previous section](configuring-graphql-client-for-user-session.md), with some additional steps to account for the different behavior around validation and renewal of auth tokens. We'll walk you through modifying the `createSessionLink`, `fetchSessionToken`, and `createErrorLink` functions, creating the `getAuthToken` function, and implementing the necessary steps to manage auth token renewal. ## Updating the `createSessionLink` function @@ -40,11 +40,11 @@ function createSessionLink() { } ``` -Not too much changing here it's still as simple as it was before except now we're set an `Authorization` header too. +Not too much changing here - it's still as simple as it was before except now we're setting an `Authorization` header too. ## Creating the `getAuthToken` and `fetchAuthToken` functions. -Next, we'll create a new function called getAuthToken. This function is similar to the getSessionToken function but has some key differences due to the way session tokens and auth tokens handle renewal. Starting with the following mutation. +Next, we'll create a new function called `getAuthToken`. This function is similar to the `getSessionToken` function but has some key differences due to the way session tokens and auth tokens handle renewal. Start with the following mutation. ```javascript import { gql } from '@apollo/client'; @@ -58,13 +58,13 @@ const RefreshAuthTokenDocument = gql` `; ``` -To help you understand the differences, let's briefly discuss how the session token and auth token handle renewal. As stated in the previous guide session tokens are self-managed and renewed automatically by WooGraphQL when sent within the 14 day limit, and an updated session token is generated on every request. All you have to do is retrieve it. Auth tokens, on the other hand, require you to use the mutation above and the refresh token that's distributed with the auth token to get a new auth token before the auth token expires, which is approximately 15 minutes after creation 😅. +To help you understand the differences, let's briefly discuss how the session token and auth token handle renewal. As stated in the previous section session tokens are self-managed and renewed automatically by WooGraphQL when sent within the 14 day limit, and an updated session token is generated on every request. All you have to do is retrieve it. Auth tokens, on the other hand, require you to use the mutation above and the refresh token that's distributed with the auth token to get a new auth token before the auth token expires, which is approximately 15 minutes after creation 😅. ```javascript export function hasCredentials() { - const authToken = sessionStorage.getItem(process.env.AUTH_TOKEN_LS_KEY); + const authToken = sessionStorage.getItem(process.env.AUTH_TOKEN_SS_KEY); const refreshToken = localStorage.getItem(process.env.REFRESH_TOKEN_LS_KEY); if (!!authToken && !!refreshToken) { @@ -75,11 +75,11 @@ export function hasCredentials() { } ``` -As the name states it all it confirms the existence of the auth and refresh tokens. +As the name states, this confirms the existence of the auth and refresh tokens. ```javascript export async function getAuthToken() { - let authToken = sessionStorage.getItem(process.env.AUTH_TOKEN_LS_KEY ); + let authToken = sessionStorage.getItem(process.env.AUTH_TOKEN_SS_KEY ); if (!authToken || !tokenSetter) { authToken = await fetchAuthToken(); } @@ -87,7 +87,7 @@ export async function getAuthToken() { } ``` -This should look familiar if you read the previous guide, as it's almost identical `getSessionToken()`, only difference is there is no `forceFetch` option because it's simply not needed. +This should look familiar if you read the previous section, as it's almost identical `getSessionToken()`, only difference is there is no `forceFetch` option because it's simply not needed. ```javascript let tokenSetter; @@ -112,7 +112,7 @@ async function fetchAuthToken() { } // Save token. - sessionStorage.setItem(process.env.AUTH_TOKEN_LS_KEY, authToken); + sessionStorage.setItem(process.env.AUTH_TOKEN_SS_KEY, authToken); if (tokenSetter) { clearInterval(tokenSetter); } @@ -131,14 +131,14 @@ async function fetchAuthToken() { } ``` -There is a lot going on here, but it's very similar to our `fetchSessionToken()` from the previous guide the different here is the auth token in sessionStorage instead of localStorage, which means it will be deleted when the user closes the browser. A new auth token will be needed every time the user opens the page after closing the browser. To better breakdown the function let's step through the possible outcomes. +There is a lot going on here, but it's very similar to our `fetchSessionToken()` from the previous section. The difference here is the auth token is in `sessionStorage` instead of `localStorage`, which means it will be deleted when the user closes the browser. A new auth token will be needed every time the user opens the page after closing the browser. To better breakdown the function, let's step through the possible outcomes. -1. The first being the quiet exit if no `refreshToken` is found. This is the scenario of an unauthenticated user. This is pretty much any new user that show up to your application. -2. The next one is the error thrown if no `authToken` is returned. This is the scenario of an user with a invalid/expired refresh token, at which case you meant just want to delete the stored refresh token and quietly exit the function. -3. The error handler is incase anything goes wrong during the `GraphQLClient.query()` call. -4. And last if nothing goes wrong `tokenSetter` is assigned with a new recurring fetcher set for 5 minute interval and the `authToken` is returned. +1. A quiet exit if no `refreshToken` is found. This is the scenario of an unauthenticated user. This is pretty much any new user that shows up to your application. +2. An error thrown if no `authToken` is returned. This is the scenario of an user with a invalid/expired refresh token, in which case you may just want to delete the stored refresh token and quietly exit the function. +3. The error handler is in case anything goes wrong during the `GraphQLClient.query()` call. +4. Finally, if nothing goes wrong, `tokenSetter` is assigned with a new recurring fetcher set for 5 minute interval and the `authToken` is returned. -The purpose of the `tokenSetter` fetcher is to address the short lifespan of the `authToken`. This also ensures that a invalid `authToken` is never sent, and because of this we don't have update the `createErrorLink` or `createUpdateLink` callbacks from the previous guide, but we do have to update our `fetchSessionToken()` function. +The purpose of the `tokenSetter` fetcher is to address the short lifespan of the `authToken`. This also ensures that a invalid `authToken` is never sent, and because of this we don't have update the `createErrorLink` or `createUpdateLink` callbacks from the previous section, but we do have to update our `fetchSessionToken()` function. ## Updating the `fetchSessionToken()` function @@ -196,7 +196,7 @@ We'll start by making a quick helper that'll sort our newly obtained credentials ```javascript function saveCredentials(authToken, sessionToken, refreshToken = null) { - sessionStorage.setItem(process.env.AUTH_TOKEN_LS_KEY, authToken); + sessionStorage.setItem(process.env.AUTH_TOKEN_SS_KEY, authToken); sessionStorage.setItem(process.env.SESSION_TOKEN_LS_KEY, sessionToken); if (refreshToken) { localStorage.setItem(process.env.REFRESH_TOKEN_LS_KEY, refreshToken); @@ -245,10 +245,10 @@ export async function login(username, password) { } ``` -Just like with `fetchSessionToken()` is highly recommend the you obscure the API calls here by deferring the logic to something like a serverless function or Next.js API route. Note, we are also return the `customer` object here which could potentially be problematic if sensitive information like the user's email or phone number is being pulled. +Just like with `fetchSessionToken()`, it is highly recommended that you obscure the API calls here by deferring the logic to something like a serverless function or Next.js API route. Note, we are also return the `customer` object here which could potentially be problematic if sensitive information like the user's email or phone number is being pulled. ## Conclusion In summary, we demonstrated how to configure a GraphQL client to work with WooGraphQL, manage WooCommerce sessions, and handle WordPress authentication. With this setup, you should be able to create a robust and secure client that manages user authentication efficiently and seamlessly. -The next guide will begin teaching how you best utilize the data received from WooGraphQL to create showstopping components. +The next section will begin teaching how you best utilize the data received from WooGraphQL to create showstopping components. diff --git a/docs/handling-user-session-and-using-cart-mutations.md b/docs/handling-user-session-and-using-cart-mutations.md index f7509111..9ca63f7e 100644 --- a/docs/handling-user-session-and-using-cart-mutations.md +++ b/docs/handling-user-session-and-using-cart-mutations.md @@ -7,27 +7,20 @@ author: "Geoff Taylor" # Handling User Session and Using Cart Mutations -In this guide, we will demonstrate how to implement cart controls on the single product page, which will take into account the state of the cart stored in the user session. This guide builds upon the app created in the previous guides, so use the code samples from them as a starting point. The guide is broken down into three parts: The implementation and use of `UserSessionProvider.jsx`, `useCartMutations.js`, and `CartOptions.jsx`. +In this section, we will demonstrate how to implement cart controls on the single product page, which will take into account the state of the cart stored in the user session. This section builds upon the app created in the previous sections, so use the code samples from those as a starting point. The section is broken down into three parts: The implementation and use of `UserSessionProvider.jsx`, `useCartMutations.js`, and `CartOptions.jsx`. ## Prerequisites - Basic knowledge of React and React Router. - Familiarity with GraphQL and WPGraphQL. -- A setup WPGraphQL/WooGraphQL backend. -- Read previous guides on [Routing By URI](routing-by-uri.md) and [Using Product Data](using-product.data.md) +- A WPGraphQL/WooGraphQL backend. +- Read previous sections on [Routing By URI](routing-by-uri.md) and [Using Product Data](using-product.data.md) ## Step 0: Create our `graphql.js` file ```javascript import { gql } from '@apollo/client'; -export const CustomerContent = gql` - fragment CustomerContent on Customer { - id - sessionToken - } -`; - export const ProductContentSlice = gql` fragment ProductContentSlice on Product { id @@ -197,6 +190,8 @@ export const CartItemContent = gql` value } } + ${ProductContentSlice} + ${ProductVariationContentSlice} `; export const CartContent = gql` @@ -235,14 +230,111 @@ export const CartContent = gql` discountTax discountTotal } + ${CartItemContent} `; +export const AddressFields = gql` + fragment AddressFields on CustomerAddress { + firstName + lastName + company + address1 + address2 + city + state + country + postcode + phone + } +`; + +export const LineItemFields = gql` + fragment LineItemFields on LineItem { + databaseId + product { + node { + ...ProductContentSlice + } + } + orderId + quantity + subtotal + total + totalTax + } + ${ProductContentSlice} +`; + +export const OrderFields = gql` + fragment OrderFields on Order { + id + databaseId + orderNumber + orderVersion + status + needsProcessing + subtotal + paymentMethodTitle + total + totalTax + date + dateCompleted + datePaid + billing { + ...AddressFields + } + shipping { + ...AddressFields + } + lineItems(first: 100) { + nodes { + ...LineItemFields + } + } + } + ${AddressFields} + ${LineItemFields} +`; + +export const CustomerFields = gql` + fragment CustomerFields on Customer { + id + databaseId + firstName + lastName + displayName + billing { + ...AddressFields + } + shipping { + ...AddressFields + } + orders(first: 100) { + nodes { + ...OrderFields + } + } + } + ${AddressFields} + ${OrderFields} +`; + +export const CustomerContent = gql` + fragment CustomerContent on Customer { + id + sessionToken + } +`; + + + export const GetProduct = gql` query GetProduct($id: ID!, $idType: ProductIdTypeEnum) { product(id: $id, idType: $idType) { ...ProductContentFull } } + ${ProductContentFull} `; export const GetProductVariation = gql` @@ -251,6 +343,7 @@ export const GetProductVariation = gql` ...VariationContent } } + ${VariationContent} `; export const GetCart = gql` @@ -262,6 +355,8 @@ export const GetCart = gql` ...CustomerContent } } + ${CartContent} + ${CustomerContent} `; export const AddToCart = gql` @@ -277,6 +372,8 @@ export const AddToCart = gql` } } } + ${CartContent} + ${CartItemContent} `; export const UpdateCartItemQuantities = gql` @@ -290,6 +387,8 @@ export const UpdateCartItemQuantities = gql` } } } + ${CartContent} + ${CartItemContent} `; export const RemoveItemsFromCart = gql` @@ -303,23 +402,47 @@ export const RemoveItemsFromCart = gql` } } } + ${CartContent} + ${CartItemContent} +`; +export const Login = gql` + mutation Login($username: String!, $password: String!) { + login(input: { username: $username, password: $password }) { + authToken + refreshToken + customer { + ...CustomerFields + } + } + } + ${CustomerFields} `; +export const UpdateCustomer = gql` + mutation UpdateCustomer($input: UpdateCustomerInput!) { + updateCustomer(input: $input) { + customer { + ...CustomerFields + } + } + } + ${CustomerFields} +`; ``` -We've included all the queries will be using going forward and leveraging some fragments here and there. Now we can move onto implementing the components sourcing these queries and mutations. +We've included all the queries we'll be using going forward and leveraging some fragments here and there. Now we can move onto implementing the components sourcing these queries and mutations. We won't go over them into much detail here but you can learn more about them in the [schema](/schema) docs. ## Step 1: UserSessionProvider.jsx -`UserSessionProvider.jsx` is a state manager that queries and maintains the app's copy of the end-user's session state from WooCommerce on the backend. We'll also be implementing a helper hook called `useSession()` that will provide the user session state to components nested within the provider. In order for the `UserSessionProvider` code in our samples to work properly, the end user will have to implement an ApolloClient with a middleware layer configured to manage the WooCommerce session token, like the one demonstrated in our [**Configuring GraphQL Client for User Session**](configuring-graphql-client-for-user-session.md) guide. +`UserSessionProvider.jsx` is a state manager that queries and maintains the app's copy of the end-user's session state from WooCommerce on the backend. We'll also be implementing a helper hook called `useSession()` that will provide the user session state to components nested within the provider. In order for the `UserSessionProvider` code in our samples to work properly, the end user will have to implement an ApolloClient with a middleware layer configured to manage the WooCommerce session token, like the one demonstrated in our [**Configuring GraphQL Client for User Session**](configuring-graphql-client-for-user-session.md) section. Here is the code for `UserSessionProvider.jsx`: ```jsx import { createContext, useContext, useEffect, useReducer } from 'react'; -import { useQuery } from '@apollo/client'; -import { GetCart } from './graphql'; +import { useQuery, useMutation } from '@apollo/client'; +import { GetCart, Login, UpdateCustomer } from './graphql'; const initialSession = { cart: null, @@ -351,6 +474,8 @@ export function SessionProvider({ children }) { const [state, dispatch] = useReducer(reducer, initialSession); const { data, loading: fetching } = useQuery(GetCart); + const [executeLogin, { data: loginData, errors: loginErrors }] = useMutation(Login); + const [executeUpdateCustomer, { data: updateCustomerData, errors: updateCustomerErrors }] = useMutation(UpdateCustomer); useEffect(() => { if (data?.cart) { @@ -378,11 +503,44 @@ export function SessionProvider({ children }) { payload: customer, }); + useEffect(() => { + if (loginData.login) { + const { + authToken, + refreshToken, + customer + } = loginData.login; + + sessionStorage.getItem(process.env.AUTH_TOKEN_SS_KEY, authToken); + localStorage.getItem(process.env.REFRESH_TOKEN_LS_KEY, refreshToken); + + setCustomer(customer); + } + }, [loginData]); + + useEffect(() => { + if (updateCustomerData.updateCustomer) { + const { customer } = updateCustomerData.updateCustomer; + + setCustomer(customer); + } + }, [updateCustomerData]); + + const login = (username, password) => { + return executeLogin({ username, password }); + } + + const updateCustomer = (input) => { + return executeUpdateCustomer({ input }); + } + const store = { ...state, fetching, setCart, setCustomer, + login, + updateCustomer, }; return ( {children} @@ -392,7 +550,7 @@ export function SessionProvider({ children }) { export const useSession = () => useContext(SessionContext); ``` -To use the `SessionProvider`, you should wrap your root app component with it and wrap the `SessionProvider` with an ApolloProvider set with our session token managing ApolloClient. Make sure to demonstrate this for the reader against our previous code samples from previous posts. +To use the `SessionProvider`, you should wrap your root app component with it and wrap the `SessionProvider` with an ApolloProvider set with our session token managing ApolloClient. ## Step 2: useCartMutations.js @@ -536,7 +694,7 @@ With the `useCartMutations` hook implemented, you can use it within your compone You can now use this hook to create and manage cart interactions in your components. For instance, you can create an "Add to Cart" button that adds items to the cart, updates the quantity of an existing item, or removes an item from the cart. -Here's an example of how you could use the useCartMutations hook within a React component use our SingleProduct component from the previous guide: +Here's an example of how you could use the useCartMutations hook within a React component using our SingleProduct component from the previous section: ```jsx import React, { useEffect, useState } from 'react'; @@ -622,7 +780,7 @@ In this example, we have our `SingleProduct` component that receives a `productI The `handleAddOrUpdateAction` and `handleRemoveAction` functions call the `mutate` function returned by the `useCartMutations`. The `loading` flag is used to disable the buttons while any cart mutations are in progress. -This is just an example of how you could use the `useCartMutations` hook and only using simple products, but as I'm sure you noticed it support a `variationId` as the second parameter. Implementing Variable product support in our `SingleProduct` component is out of the scope this guide, but with what has been provided you should have no problem implementing variable product support. +This is just an example of how you could use the `useCartMutations` hook using simple products, but as I'm sure you noticed, it support a `variationId` as the second parameter. Implementing Variable product support in our `SingleProduct` component is out of the scope this section, but with what has been provided you should have no problem implementing variable product support. ## Conclusion diff --git a/docs/harmonizing-with-wordpress.md b/docs/harmonizing-with-wordpress.md index 2e7d093f..8a50e75d 100644 --- a/docs/harmonizing-with-wordpress.md +++ b/docs/harmonizing-with-wordpress.md @@ -7,7 +7,7 @@ author: "Geoff Taylor" # Harmonizing with WordPress -In our [previous guide](using-cart-data.md), we created a cart page for our WooCommerce store. Now, we are going to add a "Checkout" button to this page and discuss how to ensure the security of the process. +In our [previous section](using-cart-data.md), we created a cart page for our WooCommerce store. Now, we are going to add a "Checkout" button to this page and discuss how to ensure the security of the process. Our checkout button's `href` attribute will be a nonced URL that directs the user to a particular endpoint on the WP backend. The endpoint performs a set of operations such as validating the URL, loading the WooCommerce session, authenticating the registered user, and redirecting to the checkout page. If the URL validation fails, the user will be redirected to the WP homepage. @@ -33,7 +33,7 @@ To create a checkout button in our CartPage component, we can use the `checkoutU ## Understanding URL Validation and Security -Although our checkout button is now functional, it's important to note that the default URL validation process can be improved in terms of security. In the next part of this guide, we will discuss the security measures and how to enhance them. +Although our checkout button is now functional, it's important to note that the default URL validation process can be improved in terms of security. In the next part of this section, we will discuss the security measures and how to enhance them. ### Improving Security with Client Session ID @@ -72,11 +72,11 @@ const input = { } ``` -When the `client_session_id` or `client_session_id_expiration` values become invalid or expired, WooGraphQL generates new values with an expiration time of one hour. To avoid this, we recommend you to periodically update these values from the client side and retrieve a new `checkoutUrl` each time. +When the `client_session_id` or `client_session_id_expiration` values become invalid or expired, WooGraphQL generates new values with an expiration time of one hour. To avoid this, we recommend that you periodically update these values from the client side and retrieve a new `checkoutUrl` each time. ## Reinventing Security: The Client-Side Nonce -Next we're going to explore an advanced approach to enhance the security of our checkout procedure by generating a nonce on the client side. By doing this, and not pulling the Nonces or Auth URLs from WooGraphQL we remove any risk of leakage thru GraphQL request and further protect the end-user's data and the WordPress backend. This process will involve recreating some of PHP and WordPress core functions in JavaScript. +Next we're going to explore an advanced approach to enhance the security of our checkout procedure by generating a nonce on the client side. By doing this, and not pulling the Nonces or Auth URLs from WooGraphQL we remove any risk of leakage thru GraphQL request and further protect the end-user's data and the WordPress backend. This process will involve recreating some PHP and WordPress core functions in JavaScript. 1. **PHP `time` Function in JavaScript** @@ -105,7 +105,7 @@ Next we're going to explore an advanced approach to enhance the security of our 3. **WordPress `wp_hash` Function in JavaScript** - The `wp_hash` function, another WordPress core function, will be adapted to JavaScript as well. This function uses the `wp_salt` function to retrieve the salt from WordPress Salt constants, usually defined in the `wp-config.php` file. In our context, we only need the `nonce` salt. Therefore, it's crucial to ensure the `NONCE_KEY` and `NONCE_SALT` constants are set on the WordPress installation, and their values are accessible in our front-end application. + The `wp_hash` function, another WordPress core function, will be adapted to JavaScript as well. This function uses the `wp_salt` function to retrieve the salt from WordPress Salt constants, usually defined in the `wp-config.php` file. In our context, we only need the `nonce` salt. Therefore, it's crucial to ensure the `NONCE_KEY` and `NONCE_SALT` constants are set on the WordPress installation and their values are accessible in our front-end application. `wp_hash` also uses `hash_hmac` and `md5` encryption to create the hash. For this, we'll utilize `crypto-js`, which you can install with `npm` using the command `npm install crypto-js`. Here's how to write `wp_hash` in JavaScript: @@ -134,7 +134,7 @@ export function createNonce(action, uId, token) { In the function above: - The `action` parameter represents the nonce action name. -- The `uId` parameter represents the end-user's session ID, either their WP User Database ID (if they are authenticated) or a random string (if they are a guest). To retrieve this value, we'll have to decode the WooCommerce Session Token used by ApolloClient. +- The `uId` parameter represents the end-user's session ID - either their WP User Database ID (if they are authenticated) or a random string (if they are a guest). To retrieve this value, we'll have to decode the WooCommerce Session Token used by ApolloClient. - The `token` is our Client Session ID mentioned earlier. 4. **Generating the URLs** @@ -218,4 +218,4 @@ To confirm the validity of your URL, compare it with the Auth URLs generated by ## Conclusion -With this guide, you should now be able to add a secure checkout button to your WooCommerce cart page using WooGraphQL. Keep in mind that even though we've improved security by setting a client-side session ID and expiration, these measures should be part of a broader security strategy. Always ensure to follow best practices to keep your application and user data safe. +With this section, you should now be able to add a secure checkout button to your WooCommerce cart page using WooGraphQL. Keep in mind that even though we've improved security by setting a client-side session ID and expiration, these measures should be part of a broader security strategy. Always ensure to follow best practices to keep your application and user data safe. diff --git a/docs/images/account-address-screenshot.png b/docs/images/account-address-screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..52380261d81364bf53ba8cc8c0d0f6bcc4393fa7 GIT binary patch literal 53306 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 A%>V!Z literal 0 HcmV?d00001 diff --git a/docs/images/account-dashboard-to-orders.gif b/docs/images/account-dashboard-to-orders.gif new file mode 100644 index 0000000000000000000000000000000000000000..20f256fb37b7eee78b9ed2170b27377becd3b1e8 GIT binary patch literal 130984 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 P?+2W@@Q=oCuKe`hXoY!g literal 0 HcmV?d00001 diff --git a/docs/images/login-to-account-dashboard.gif b/docs/images/login-to-account-dashboard.gif new file mode 100644 index 0000000000000000000000000000000000000000..6e4ff7fdc36640c0261900c5aa06ad23a9578006 GIT binary patch literal 70054 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 L3;%zsB=~;-?ji0{ literal 0 HcmV?d00001 diff --git a/docs/images/order-status-page-states.gif b/docs/images/order-status-page-states.gif new file mode 100644 index 0000000000000000000000000000000000000000..d90197073a8523e682b578689dd9e45a153d9f09 GIT binary patch literal 50816 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 literal 0 HcmV?d00001 diff --git a/docs/installation.md b/docs/installation.md index 45b80a32..41d2b2c5 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -7,7 +7,7 @@ keywords: "WooGraphQL, WPGraphQL, WooCommerce, GraphQL, installation, setup, hea # Installation -This guide will walk you through the process of installing and configuring WooGraphQL for your WordPress website. +This section will walk you through the process of installing and configuring WooGraphQL for your WordPress website. ## Prerequisites diff --git a/docs/routing-by-uri.md b/docs/routing-by-uri.md index e16757cc..32518682 100644 --- a/docs/routing-by-uri.md +++ b/docs/routing-by-uri.md @@ -7,7 +7,7 @@ author: "Geoff Taylor" # Routing By URI -In this guide, we will create a simple app that demonstrates routing with WPGraphQL's `nodeByUri` query. We will use this query to fetch data for a shop page that displays a list of products with their "name", "shortDescription", "price", and "image". The shop page will use the uri parameter to fetch the data and render the page accordingly. +In this section, we will create a simple app that demonstrates routing with WPGraphQL's `nodeByUri` query. We will use this query to fetch data for a shop page that displays a list of products with their "name", "shortDescription", "price", and "image". The shop page will use the uri parameter to fetch the data and render the page accordingly. ## Prerequisites @@ -120,7 +120,7 @@ The `ShopPage` component fetches the data using the `nodeByUri` query and update The `ProductListing` component takes the products data and renders a list of products. -_Notice that we are not checking to see if the fields that are nullable aren't empty values before rendering them and remember you should always do so, we just skipped it here to for readability._ +_Notice that we are not checking to see if the fields that are nullable aren't empty values before rendering them. You should always do so, but we skip it here for readability._ ```jsx import React from 'react'; @@ -148,7 +148,7 @@ export default ProductListing; With the `ProductListing` component, we can display the product listing for both collection and single data object. This approach can also be applied to other pages such as `/product-category/*` or `/product-tag/*` pages, with the ability to change there slug names as well in the WP Dashboard. -In the next section, we will focused further on rendering a product listing using the `nodeByUri` query by exploring adding features like pagination, sorting, and filtering to our shop page. +In the next section, we will focus further on rendering a product listing using the `nodeByUri` query by exploring adding features like pagination, sorting, and filtering to our shop page. ## Pagination @@ -486,7 +486,7 @@ const ShopPage = () => { export default ShopPage; ``` -With these changes, you can now search for products by typing in the search input, and the products will be fetched and displayed based on the search query. This is far from complete it needs many more things, like CSS styling, field validation, and error handling to name few. +With these changes, you can now search for products by typing in the search input, and the products will be fetched and displayed based on the search query. This is far from complete. It needs many more things, like CSS styling, field validation, and error handling to name a few. ## Conclusion diff --git a/docs/settings.md b/docs/settings.md index af6beff6..84bab0c6 100644 --- a/docs/settings.md +++ b/docs/settings.md @@ -23,13 +23,15 @@ The default WooCommerce User Session Handler is responsible for capturing cart a ## Enable Unsupported types -The settings is simple to understand and likely to be enabled if your using a WC extension that uses a product type that isn't support by WooGraphQL out-of-box. When enabled it will substitute the missing type with the SimpleProduct type. This way you can still you the product type and possibly pull what extra data you need from the `Product`'s `metaData` field. +The settings is simple to understand and likely to be enabled if you're using a WC extension that uses a product type that isn't support by WooGraphQL out-of-box. When enabled it will substitute the missing type with the SimpleProduct type. This way you can still use the product type and possibly pull what extra data you need from the `Product`'s `metaData` field. ![Authorizing URL Settings Screenshot](images/authorizing-url-settings.png) ## Enable User Session transferring URLs -This settings when enabled activated the WooCommerce Session-backed nonce generator and transfer session endpoint for passing a user's session from a client to the WordPress installation, the primary use of these nonces are to create authorizing URLs that enable the user to travel to the backend as if it were a part of the front-end application. This setting is disabled if the QL Session Handler is disabled as it required for nonce generation to work. The next four settings are all about customizing the names of different parts of the authorizing URL.. +This setting, when activated, enables WooCommerce Session-backed nonce generator and transfer session endpoint for passing a user's session from a client to the WordPress installation. The primary use of these nonces is to create authorizing URLs that enable the user to travel to the backend as if it were a part of the front-end application. This setting is disabled if the QL Session Handler is disabled as it required for nonce generation to work. + +The next four settings are all about customizing the names of different parts of the authorizing URL.. ### Endpoint for Authorizing URLs @@ -37,9 +39,9 @@ The endpoint (path) for transferring user sessions on the site. Defaults to `tra ### Cart URL nonce name, Checkout URL nonce name, and Add Payment Method URL nonce name -The name of the nonce param for each respective URLs. They have to be unique and cannot be identical. +The name of the nonce param for each respective URL. They have to be unique and cannot be identical. -Uses these settings alone is very insecure. It's highly recommended that specific measures be taken on the client to further secure the WP backend and end-user's data. +Using these settings alone is very insecure. It's highly recommended that specific measures be taken on the client to further secure the WP backend and end-user's data. ## WooGraphQL Pro Settings These settings allow you to enable or disable the GraphQL schema types, queries, and mutations for various WooCommerce extensions supported by WooGraphQL Pro. This is useful if you have one of the supported extensions installed and activated but don't need it exposed to the GraphQL API, keeping the schema lightweight. diff --git a/docs/using-cart-data.md b/docs/using-cart-data.md index b55308fd..11d610b0 100644 --- a/docs/using-cart-data.md +++ b/docs/using-cart-data.md @@ -7,14 +7,14 @@ author: "Geoff Taylor" # Using Cart Data -In this guide, we will create a "/cart" page that displays a table of the items in the cart. We will use the `UserSessionProvider` created in the last guide to pull the cart data using `useSession()`. The table will have four columns: `Product`, `Price`, `Quantity`, and `Total`. We will also create a cart totals table that displays the shipping totals, applied coupons, and the final total. Let's start by implementing the changes to the `useCartMutations` hook also created in the previous guide. +In this section, we will create a "/cart" page that displays a table of the items in the cart. We will use the `UserSessionProvider` created in the last section to pull the cart data using `useSession()`. The table will have four columns: `Product`, `Price`, `Quantity`, and `Total`. We will also create a cart totals table that displays the shipping totals, applied coupons, and the final total. Let's start by implementing the changes to the `useCartMutations` hook also created in the previous section. ## Prerequisites - Basic knowledge of React and React Router. - Familiarity with GraphQL and WPGraphQL. - A setup WPGraphQL/WooGraphQL backend. -- Read previous guides on [Routing By URI](routing-by-uri.md), [Using Product Data](using-product-data.md), and [Handling User Session and Using Cart Mutations](handing-user-session-and-using-cart-mutations). +- Read previous sections on [Routing By URI](routing-by-uri.md), [Using Product Data](using-product-data.md), and [Handling User Session and Using Cart Mutations](handing-user-session-and-using-cart-mutations). ## Step 0: Create `graphql.js` file @@ -510,7 +510,7 @@ export const useOtherCartMutations = () => { }; ``` -This hook provides the helper callbacks for the other cart mutations. These mutations are the ones that affect the cart and not cart items, at least not directly, like `applyCoupon`. +This hook provides the helper callbacks for the other cart mutations. These mutations are the ones that effect the cart and not the cart items, at least not directly, like `applyCoupon`. ## Step 2: Create the `/cart` page @@ -524,7 +524,7 @@ import { ShippingInfo } from './ShippingInfo'; import { ApplyCouponForm } from './ApplyCouponForm'; ``` -You should see two import that don't exist yet, let's create them. `ShippingInfo.js` and `ApplyCouponForm.js` are components that will be used in the `CartPage` component to handle two particular actions: +You should see two imports that don't exist yet. Let's create them. `ShippingInfo.js` and `ApplyCouponForm.js` are components that will be used in the `CartPage` component to handle two particular actions: First the `ShippingLocaleForm.js`. @@ -619,7 +619,7 @@ const ShippingInfo = () => { export default ShippingInfo; ``` -This component works by confirming the session shipping requirements and status before return the proper output. If shipping is needed and a shipping address is set for the customer, the shipping rates are displayed for selection. If shipping is needed and no address is set, then a shipping address form is displayed to set the customer shipping address. If no shipping is needed `null` is returned. +This component works by confirming the session shipping requirements and status before returning the proper output. If shipping is needed and a shipping address is set for the customer, the shipping rates are displayed for selection. If shipping is needed and no address is set, then a shipping address form is displayed to set the customer shipping address. If no shipping is needed, `null` is returned. Simple enough, now the `ApplyCoupon.js` @@ -745,10 +745,10 @@ export default CartPage; In the `CartPage` component, we first fetch the `cart` from the `SessionProvider`. If the cart is not available, we show a loading message. Once the cart is loaded, we display the cart items in a table format, allowing users to remove items or update the quantity. -Lastly, we display the cart's subtotal, applied coupons with their respective discounts and removal buttons, and follow that up the cart's total. +Lastly, we display the cart's subtotal, applied coupons with their respective discounts and removal buttons, and follow that up with the cart's total. Now, you can use the `CartPage` component in your app, allowing users to interact with the cart, apply coupons, and manage shipping options. ## Conclusion -With this you're essentially ready to develop a complete application. In the next couple guides we'll be exploring taking the user through checkout by passing the session back to WordPress. +With this you're essentially ready to develop a complete application. In the next couple sections we'll be exploring taking the user through checkout. diff --git a/docs/using-checkout-mutation-and-order-mutations.md b/docs/using-checkout-mutation-and-order-mutations.md index e69de29b..63bdbc29 100644 --- a/docs/using-checkout-mutation-and-order-mutations.md +++ b/docs/using-checkout-mutation-and-order-mutations.md @@ -0,0 +1,97 @@ +--- +title: "Using Checkout Mutation + Order Mutations with WooGraphQL" +description: "Learn how to handle repeat shoppers with existing payment methods using the `checkout` mutation, and side-stepping WooCommerce's management of the session completely by using the `createOrder` mutation." +keywords: "WooGraphQL, WPGraphQL, WooCommerce, GraphQL, checkout mutation, createOrder mutation, session management" +author: "Geoff Taylor" +--- + +# Using Checkout Mutation and Order Mutations + +In this section of the documentation, we will be building upon the knowledge gained from previous sections to explore more advanced functionalities provided by WooGraphQL. Specifically, we will delve into the `checkout` mutation and `createOrder` mutation, and how they can be used to handle repeat shoppers with existing payment methods and manage WooCommerce's session respectively. + +The `checkout` mutation allows us to handle repeat shoppers who have existing payment methods. This is particularly useful in creating a seamless shopping experience for your customers, as they do not have to re-enter their payment details every time they shop. + +On the other hand, the `createOrder` mutation allows us to bypass WooCommerce's session management completely. This is especially useful in scenarios where you want to have more control over the session management in your application. + +In this section, we will provide detailed examples and code snippets to demonstrate how these mutations can be used in a real-world application. We will also discuss potential use cases and best practices for using these mutations. + +Before proceeding, it is recommended that you have a good understanding of the basics of WooGraphQL and have gone through the previous sections of this documentation. This will ensure that you have the necessary background knowledge to fully understand the concepts and examples presented in this section. + +Let's get started! + +## Scenario 1: Handling Checkout for an Existing User + +In this scenario, we are dealing with a returning user who has previously made a purchase on our application and has a payment method already stored. The `checkout` mutation will be used to handle this process. + +### Using the `checkout` Mutation + +The `checkout` mutation allows us to process the checkout for a user with an existing payment method. This mutation takes the `input` argument which should contain the `paymentMethod` field. The `paymentMethod` field should be the ID of the payment method the customer wishes to use. + +Here is an example of how to use the `checkout` mutation: + +```graphql +mutation { + checkout(input: { paymentMethod: "stripe" }) { + clientMutationId + order { + id + orderId + total + } + } +} +``` + +In the case where the user wishes to use a new payment method, we have two options: + +1. Redirect them to the traditional checkout page. +2. Redirect them to the "add new payment method" page. + +The `addPaymentMethodUrl` field, which can be retrieved from the `customer` query, provides the URL to the "add new payment method" page. Here is an example of how to retrieve this URL: + +```graphql +query { + customer { + addPaymentMethodUrl + } +} +``` + +## Scenario 2: Handling Checkout for a New or Existing User with Client-Side Session Management + +In this scenario, we are dealing with a new or existing user of our application, but we are not relying on WooCommerce to manage the session. Instead, all things pertaining to the cart are handled client-side until checkout. At this point, we use the `createOrder` mutation to generate the order on the backend. + +### Using the `createOrder` Mutation + +The `createOrder` mutation allows us to create an order on the backend without relying on WooCommerce's session management. This mutation takes the `input` argument which should contain the `paymentMethod` field and the `lineItems` field. The `lineItems` field should be an array of `LineItemInput` objects, each representing a product in the cart. + +Here is an example of how to use the `createOrder` mutation: + +```graphql +mutation { + createOrder(input: { + paymentMethod: "stripe", + lineItems: [ + { + productId: 1, + quantity: 2 + }, + { + productId: 3, + quantity: 1 + } + ] + }) { + clientMutationId + order { + id + orderId + total + } + } +} +``` + +This scenario is most common for clients that use a payment processor external to WooCommerce. By handling the cart client-side and only using WooCommerce for product data and order management, we can provide a seamless checkout experience for our users. + +In the next sections, we will delve deeper into how to utilize order data, customer data, and various product data types to further enhance our application. diff --git a/docs/using-composite-product-data-and-mutations.md b/docs/using-composite-product-data-and-mutations.md index e69de29b..47e90de6 100644 --- a/docs/using-composite-product-data-and-mutations.md +++ b/docs/using-composite-product-data-and-mutations.md @@ -0,0 +1,264 @@ +--- +title: "Using Composite Product Data + Mutations with WooGraphQL" +description: "Learn how to use the Composite Product functionality with WooGraphQL by building upon the code from `Using Product Data` and `Creating Session Provider and using Cart Mutations`." +keywords: "WooGraphQL, WPGraphQL, WooCommerce, GraphQL, Composite Product functionality, Product Data, Session Provider, Cart Mutations" +author: "Geoff Taylor" +--- + +# Using Composite Product Data + Mutations + +In this section, we will be discussing how to use composite product data and mutations. We will be building on the code written in previous sections of the documentation, specifically the sections on [using product data](https://woographql.com/docs/using-product-data) and [handling user session and using cart mutations](https://woographql.com/docs/handling-user-session-and-using-cart-mutations). + +Composite products are a unique type of product in WooCommerce that allow store owners to build complex products by combining simple products. These products are designed to manage and provide a lot of visual context data, like the behavior for displaying certain parts of components or totals. It's up to the demands of the store and client application how much of this context should be used. + +When adding a composite product to the cart, all components must be provided to the `AddCompositeToCart`'s `configuration` field, even optional components. + +Here's the component we'll be using in the examples ahead. + +```jsx +import React from 'react'; +import { useQuery } from '@apollo/client'; +import { GetProduct } from './graphql'; +import useCartMutations from './useCartMutations'; + +const CompositeProduct = ({ productId }) => { + const [quantity, setQuantity] = React.useState(1); + const { data, loading, error } = useQuery(GetProduct, { + variables: { id: productId, idType: 'DATABASE_ID' }, + }); + + const { quantityInCart: inCart, mutate, loading: cartLoading } = useCartMutations(productId); + + React.useEffect(() => { + if (inCart) { + setQuantity(inCart); + } + }, [inCart]); + + if (loading) return

Loading...

; + if (error) return

Error: {error.message}

; + + const product = data.product; + + const handleAddOrUpdateAction = async () => { + mutate({ quantity }); + }; + + const handleRemoveAction = async () => { + mutate({ mutation: 'remove', quantity: 0 }); + }; + + const buttonText = inCart ? 'Update' : 'Add To Cart'; + + return ( +
+

{product.name}

+
+

+ {product.onSale && {product.regularPrice}} + {product.price} +

+ +
+ {product.attributes.nodes.map((attr) => ( +
+ {attr.name}: {attr.options.join(', ')} +
+ ))} +
+ +
+ {!product.soldIndividually && ( +
+ + setQuantity(Number.parseInt(event.target.value))} + /> +
+ )} + {product.stockStatus === 'IN_STOCK' ? ( + <> + + {inCart && ( + + )} + + ) : ( +

Out of stock

+ )} +
+
+ ); +}; + +export default CompositeProduct; +``` + +This `CompositeProduct` component receives a `productId` as a prop. It uses the `useQuery` hook from Apollo Client to fetch the product data from the GraphQL API. The product data includes the product's name, description, price, and attributes. + +The `useCartMutations` hook is used to manage the cart actions. It returns the quantity of the item currently in the cart, a `mutate` function that can be used to add, update, or remove items, and a `loading` flag indicating whether any cart mutations are in progress. + +The `handleAddOrUpdateAction` and `handleRemoveAction` functions call the `mutate` function returned by `useCartMutations`. The `loading` flag is used to disable the buttons while any cart mutations are in progress. + +The component renders the product information and provides buttons to add, update, or remove the item from the cart. The "Add to Cart" button's text changes to "Update" if the item is already in the cart. If the product is out of stock, a message is displayed instead of the cart options. + +This component is a good starting point. You can further customize and extend it to suit your specific needs. + +Alright, let's start by updating the `SingleProduct` component to support composite products. We'll use the `CompositeCard` component code provided, but we'll rename it to `CompositeProduct` for consistency. + +Here's the updated `SingleProduct` component: + +```jsx +import React from 'react'; +import { CompositeProduct } from './CompositeProduct'; +import { Product as ProductType } from '@axis/graphql'; + +export const SingleProduct = ({ product }) => { + if (product.__typename === 'CompositeProduct') { + return ; + } + + // ...rest of the component +}; +``` + +In the code above, we're checking if the product type is `CompositeProduct`. If it is, we're rendering the `CompositeProduct` component. If it's not, we're rendering the rest of the `SingleProduct` component as usual. + +Next, let's update the `useCartMutations` hook to add support for `addCompositeToCart`. Here's the updated hook: + +```jsx +import { useEffect, useMemo, useState } from 'react'; + +import { useSession } from '@axis/components/SessionProvider'; +import { + useAddToCartMutation, + useAddCompositeToCartMutation, + useUpdateCartItemQuantitiesMutation, + useRemoveItemsFromCartMutation, + Cart, + GetCartDocument, + CartItem, +} from '@axis/graphql'; + +export interface CartMutationCompositeInput extends CartMutationInput { + configuration: { + componentId: string; + productId?: number; + hidden?: boolean; + quantity?: number; + variation?: { + attributeName: string; + attributeValue: string; + }[] + variationId?: number; + }[]; +} + +// ...rest of the hook + +const useCartMutations = ( + productId: number, + variationId?: number, + extraData?: string, +) => { + // ...rest of the hook + + const [addCompositeToCart, { loading: addingComposite }] = useAddCompositeToCartMutation({ + onCompleted({ addCompositeToCart: data }) { + if (data?.cart) { + setCart(data.cart as Cart); + } + }, + notifyOnNetworkStatusChange: true, + }); + + // ...rest of the hook + + async function mutate(values) { + const { + quantity = 1, + all = false, + mutation = 'update', + } = values; + + if (!cart) { + return; + } + + if (!productId) { + throw new Error('No item provided.'); + // TODO: Send error to Sentry.IO. + } + + let item: CartItem|undefined; + switch (mutation) { + // ...rest of the switch statement + + case 'addComposite': + if (!values.configuration) { + throw new Error('No component configurations provided'); + } + addCompositeToCart({ + variables: { + productId, + quantity, + configuration: values.configuration, + extraData, + }, + }); + break; + + // ...rest of the switch statement + } + } + + // ...rest of the hook + + return store; +}; + +export default useCartMutations; +``` + +In the updated hook, we've added a new mutation `addCompositeToCart` and a new case in the `mutate` function to handle adding composite products to the cart. + +Now before finishing up, let's revisit the facts touched upon at the started of section: + +1. Composite products are designed to manage and provide a lot of visual context data, like the behavior for displaying certain parts of components or totals. It's up to the demands of the store and client application how much of this context should be used. Some specific GraphQL fields that provide this optional context are the `CompositeProduct` type's `addToCartFormLocation` field, the `CompositeProductComponent` type's `optionsStyle` and `paginationStyle`. + +2. All components must be provided to the `AddCompositeToCart`'s `configuration` field, even optional components. Optional components should be set with a quantity of `0`. + +By following these steps and understanding these facts, you can effectively use composite products in your WooCommerce store with GraphQL. + +## Conclusion + +In this section, we have delved into the intricacies of working with Composite Product Data and Mutations. We have demonstrated how to adapt the code from the `Using Product Data` and `Creating Session Provider and using Cart Mutations` sections to handle the unique specifications of composite products. + +We've explored how to modify the `ProductListing` and `SingleProduct` components to support `CompositeProduct` types. We've also shown how to use the `addToCart` mutation to add composite products to the cart, taking into account the unique structure of these products. + +This exploration has highlighted the flexibility and power of WooGraphQL, demonstrating how it can be used to handle a wide range of product types in a WooCommerce store. + +As we wrap up this section, we hope that you now feel confident in your ability to work with composite product data and mutations. The skills and knowledge you've gained here will be invaluable as you continue to build and enhance your headless WooCommerce applications. + +In the upcoming sections, we will continue to explore other product types, including Product Bundles and Product Add-ons. Each of these product types presents its own unique challenges and opportunities, and we look forward to guiding you through them. + +As always, we encourage you to experiment with the concepts and code snippets provided in this section, applying them to your own projects. Happy coding! diff --git a/docs/using-customer-data-and-mutations.md b/docs/using-customer-data-and-mutations.md index e69de29b..8b2b9854 100644 --- a/docs/using-customer-data-and-mutations.md +++ b/docs/using-customer-data-and-mutations.md @@ -0,0 +1,427 @@ +--- +title: "Using Customer Data + Mutations with WooGraphQL" +description: "Learn how to utilize the `customer` query and mutations by building a clone of a WooCommerce's user account pages in React.js." +keywords: "WooGraphQL, WPGraphQL, WooCommerce, GraphQL, customer query, customer mutations, React.js, user account pages" +author: "Geoff Taylor" +--- + +# Using Customer Data + Mutations + +This section of the documentation will guide you through the process of creating a clone of WooCommerce's user account pages using React.js and the WooGraphQL API. This demonstration will provide a comprehensive understanding of how to use the `customer` query and `updateCustomer` mutation. + +Before proceeding, it is assumed that you have already gone through and studied the code samples of the following documentation: +- [Handling User Session and Using Cart Mutations](handling-user-session-and-using-cart-mutations.md) +- [Using Order Data](using-order-data.md) + +Code samples through this section with reference components/files defined in one of the those two sections. + +## Application Overview + +The application we're going to build will start with a login page. Upon successful login, the user will be directed to the account dashboard. The account page will consist of a navigation bar and main content area. The navigation bar will include links to the following sections: + +- Dashboard +- Orders +- Addresses +- Account Details +- Logout + +Let's go over what each of these sections will do: + +- **Dashboard**: This page will display a welcome message to the authenticated user. +- **Orders**: This page will display a list of the user's orders. When an order is selected, more details about the selected order will be displayed. +- **Addresses**: This page will display forms for editing the user's billing and shipping addresses. Upon form submission, the `updateCustomer` mutation will be executed to save the changes on the server. +- **Account Details**: This page will display a form for updating the user's `firstName`, `lastName`, `displayName`, `email`, and `password`. Upon form submission, the `updateCustomer` mutation will be executed to save the changes on the server. +- **Logout**: Clicking this link will delete the user's credentials and return them to the login page. + +The next section will just jump right into defining the individual components while never really turning upon the application root. This is because you, the developer, actually have a lot of wiggle room when it comes to routing and application structure. The only requirement is that all the component used are wrapped by the same `SessionProvider` instance. + +## Login Page + +Our login page will be a simple form with fields for an email address and password. When the form is submitted, we'll use the `login` mutation to authenticate the user. If the login is successful, we'll store the user's credentials and redirect them to the dashboard. + +Here's what the code for our login page might look like: + +```jsx +import React, { useState, useEffect } from 'react'; +import { useSession } from './SessionProvider'; + +function LoginPage() { + const [username, setUserName] = useState(''); + const [password, setPassword] = useState(''); + const { login, customer } = useSession(); + + const handleLogin = (event) => { + event.preventDefault(); + login(username, password); + } + + useEffect(() => { + if (customer?.id && customer.id !== 'guest') { + // Redirect to account page. + window.location.href = `${process.env.APP_URL}/account`; + } + }, [customer]) + + return ( +
+ setEmail(e.target.value)} + placeholder="Enter Username or Email" + required + /> + setPassword(e.target.value)} + placeholder="Enter Password" + required + /> + + {error &&

Error: {error.message}

} +
+ ); +} + +export default LoginPage; +``` + +In this code, we're using the `login` callback from the `SessionProvider` to execute our `login` mutation. When the form is submitted, we call the `login` function with our form values as variables. If the login is successful, we can save the user's credentials and redirect them to the dashboard. If there's an error, we display the error message. + +## Dashboard Page + +The dashboard page will display a welcome message to the authenticated user. We'll use the `customer` object, fetched in our `login` mutation and stored in the `SessionProvider`, to fetch the user's details. Here's what the code for our dashboard page might look like: + +```jsx +import React, { useEffect } from 'react'; +import { useSession } from './SessionProvider'; + +function DashboardPage() { + const { customer, logout, fetching } = useSession(); + useEffect(() => { + if (fetching) { + return; + } + + if (!customer?.id || customer.id === 'guest') { + // redirect to login + window.location.href = `${process.env.APP_URL}/login`; + } + }, [customer]); + + if (fetching) { + return

Loading...

; + } + + if (!customer) { + return null; + } + + const { + firstName, + displayName, + } = customer as Customer; + + const name = firstName || displayName; + + return ( + <> +

+ {`Hello ${name} (not ${name}? `} + + ) +

+

+ {"From your account dashboard you can view your "} + recent orders + {", manage your "} + shipping and billing addresses + {", and " } + edit your password and account details + . +

+ + ); +} + +export default DashboardPage; +``` + +![Login page to dashboard](images/login-to-account-dashboard.gif) + +This code is rather simple. We display a welcome message with links to the other account pages. If the user is not authenticated, they are redirected back to login. + +## Orders Page + +The orders page will display a list of the user's orders. When an order is selected, more details about the selected order will be displayed. We'll use the `orders` field on the `customer` type to fetch the user's orders. Here's what the code for our orders page might look like: + +```jsx +import React, { useState, useEffect } from 'react'; +import { useSession } from './SessionProvider'; + +function OrdersPage() { + const { customer, fetching } = useSession(); + const [selectedOrder, setSelectedOrder] = useState(null); + const orders = (customer?.orders?.nodes || []) as Order[]; + + useEffect(() => { + if (fetching) { + return; + } + if (!customer?.id || customer.id === 'guest') { + // redirect to login + window.location.href = `${process.env.APP_URL}/login`; + } + }, [customer]); + + if (fetching) { + return

Loading...

; + } + + if (!customer) { + return null; + } + + return ( +
+

Your Orders

+
    + {orders.map((order) => ( +
  • setSelectedOrder(order)} + > + Order #{order.databaseId} - {order.status} - {order.total} +
  • + ))} +
+
+ {selectedOrder && ( +
+

Order Details

+

Order ID: {selectedOrder.databaseId}

+

Status: {selectedOrder.status}

+

Total: {selectedOrder.total}

+

Date: {new Date(selectedOrder.date as string).toLocaleDateString()}

+
+ )} +
+ ); +} + +export default OrdersPage; +``` + +![Account dashboard to orders](images/account-dashboard-to-orders.gif) + +In this code, we're using the `customer` object again. We're displaying the customer's `orders` and if one is selected this order is highlighted and displayed in more detail below. + +## Addresses Page + +The addresses page will display forms for editing the user's billing and shipping addresses. Upon form submission, the `updateCustomer` mutation will be executed to save the changes on the server. Here's what the code for our addresses page might look like: + +```jsx +import React, { useState, useEffect } from 'react'; +import { useSession } from './SessionProvider'; + +function AddressesPage() { + const [billing, setBilling] = useState({}); + const [shipping, setShipping] = useState({}); + const { customer, updateCustomer, fetching } = useSession(); + + useEffect(() => { + if (!customer?.id || customer.id === 'guest') { + // redirect to login + window.location.href = `${process.env.APP_URL}/login`; + } + }); + + useEffect(() => { + customer?.billing && setBilling(customer.billing); + customer?.shipping && setShipping(customer.shipping); + }, [customer]); + + const handleBillingChange = (event) => { + setBilling({ ...billing, [event.target.name]: event.target.value }); + }; + + const handleShippingChange = (event) => { + setShipping({ ...shipping, [event.target.name]: event.target.value }); + }; + + const handleUpdateCustomer = async (event) => { + event.preventDefault(); + + updateCustomer({ billing, shipping }); + }; + + if (!customer) { + return null; + } + + return ( +
+

Billing Address

+ + + {/* Repeat for other billing fields */} + +

Shipping Address

+ + + {/* Repeat for other billing fields */} + + +
+ ); +} + +export default AddressesPage; +``` + +![Account address screenshot](images/account-address-screenshot.png) + +Forgive me for skipping the other form fields but they should be pretty obvious from this point if you use the fields I created as reference. This is the first page with a form and you'll note the use of an `useEffect` to update the `shipping`, and `billing` state after changes to the `customer` object. This `useEffect` should capture both the initial values on mount, although they may not get displayed until the second render, and the changes after `updateCustomer` has been run. + +## Account Details Page + +The account details page will display a form for updating the user's `firstName`, `lastName`, `displayName`, `email`, and `password`. Upon form submission, the `updateCustomer` mutation will be executed by our `updateCustomer` callback to save the changes on the server. Here's what the code for our account details page might look like: + +```jsx +import React, { useState, useEffect } from 'react'; +import { useSession } from './SessionProvider'; + +function AccountDetailsPage() { + const [details, setDetails] = useState({}); + const [confirmPassword, setConfirmPassword] = useState(''); + const { customer, updateCustomer, fetching } = useSession(); + + useEffect(() => { + if (fetching) { + return; + } + + if (!customer?.id || customer.id === 'guest') { + // redirect to login + window.location.href = `${process.env.APP_URL}/login`; + } + }); + + useEffect(() => { + setDetails({ ...customer }) + }, [customer]) + + const handleChange = (event) => { + setDetails({ ...details, [event.target.name]: event.target.value }); + }; + + const handleSubmit = async (event) => { + event.preventDefault(); + + if (!!details.password && details.password !== confirmPassword) { + alert('Passwords do not match'); + return; + } + + updateCustomer({ ...details }); + }; + + if (!customer) { + return null; + } + + return ( +
+ + {/* Repeat for other fields */} + + setConfirmPassword(event.target.value)} + placeholder="Confirm Password" + /> + + +
+ ); +} + +export default AccountDetailsPage + +; +``` + +![Account details screenshot](images/account-details-screenshot.png) + +In this code, we're using the `updateCustomer` to execute our `updateCustomer` mutation when the form is submitted again. The logic pattern here is pretty identical to the `Addresses` page. You'll notice the continued lack of sophistication, with no little to no error handling. This is done to keep noise out these code samples. You, the reader, should consider these samples incomplete until you've included proper error handling. + +## Where's the rest of the application? + +With this the account pages are feature-complete minus some error-handling. You'll note there is a lack of error handling in the `SessionProvider`, as well. Consider it homework. + +I'll also reiterate that I left out anything pertaining the application structure like navigation bars and the application root. That is because I wanted these code samples to be as framework-agnostic as possible. +This is also not quite a WooCommerce clone because it's missing the `Add Payment Methods` page. Implementing this page would be identical to the `orders` page, except the fields to be mapped to the listing are `customer.availablePaymentMethodsCC` or `customer.availablePaymentMethodsEC` instead of `customer.orders`. You'd also have to include a button to the `Add Payment Method` page on the WP Backend. See [Harmonizing With Wordpress](harmonizing-with-wordpress.md) for more details on how to get this URL. +You'll note these samples also don't take into account React server components. That is due to the common nature of most Account pages/components will have to be powered by client-side/runtime queries and not static generation/build-time queries - meaning they'll likely be executed after page load. + +## Conclusion + +In this guide, we've seen how to use the WooGraphQL API to create a clone of WooCommerce's user account pages. We've used the `customer` query to fetch the user's details, the `orders` field on the `customer` type to fetch the user's orders, and the `updateCustomer` mutation to update the user's details and addresses. We've also seen how to handle user authentication with the `login` mutation and how to log out the user. It should be noted that this was all made possible by proper usage our `SessionProvider`. + +With the completion of this section and all proceeding sections, you have been given an deep dive into the basic and intermediate usages of WooGraphQL. The following sections will be on WooGraphQL Pro functionality. diff --git a/docs/using-order-data.md b/docs/using-order-data.md index e69de29b..24300fa9 100644 --- a/docs/using-order-data.md +++ b/docs/using-order-data.md @@ -0,0 +1,139 @@ +--- +title: "Using Order Data with WooGraphQL" +description: "Learn how to utilize the Order queries and type by building a basic order status page in React.js that works by taking an `email` and returning a list of all the orders connected to that `email`." +keywords: "WooGraphQL, WPGraphQL, WooCommerce, GraphQL, Order queries, React.js, order status page" +author: "Geoff Taylor" +--- + +# Using Order Data + +In this section, we will delve into how to utilize the Order queries and types provided by WooGraphQL. This tutorial assumes that you have already gone through the previous documentation pages and have a basic understanding of how to use GraphQL with WooCommerce. + +Our objective here is to demonstrate how to build a basic order status page using React.js. This page will allow users to input an email address and, in return, receive a list of all orders associated with that email. This demonstration aims to highlight both the possible and recommended ways of retrieving and utilizing order data. + +Before we start, it's important to note that while we will first show you how to fetch orders directly from the client-side, this is not the recommended approach due to privacy concerns. Instead, we suggest using a serverless function, such as a Next API route, with admin access provided by a WordPress Application Password. This method allows for secure querying of orders using the root-level `orders` queries with the `where.billingEmail` argument set. + +With these prerequisites and objectives in mind, let's dive into creating our order status page. + +## Creating the Order Status Page + +First, let's create a simple form that takes an email as input. When the form is submitted, a list of orders associated with the entered email will be displayed. + +```jsx +import React, { useState } from 'react'; +import { useSession } from './SessionProvider'; + +function OrderStatusPage() { + const { customer, updateCustomer, fetching } = useSession(); + const [email, setEmail] = useState(''); + const [selectedOrder, setSelectedOrder] = useState(null); + + const handleSubmit = (event) => { + event.preventDefault(); + + updateCustomer({ + billing: { email } + }) + }; + + if (!customer) { + return null; + } + + if (!customer?.billing?.email) { + return ( +
+ + +
+ ); + } + + const orders = customer?.orders?.nodes || []; + + return ( +
+
    + {orders.map((order) => ( +
  • setSelectedOrder(order)} + > + Order #{order.databaseId} - {order.status} - {order.total} +
  • + ))} +
+
+ {selectedOrder && ( +
+

Order Details

+

Order ID: {selectedOrder.databaseId}

+

Status: {selectedOrder.status}

+

Total: {selectedOrder.total}

+

Date: {new Date(selectedOrder.date).toLocaleDateString()}

+
+ )} +
+ ); +} + +export default OrderStatusPage; +``` + +After the email has been submitted, we will use the `updateCustomer` callback from the `SessionProvider` to set the current viewer's `billingEmail` as the provided email address. Then, we will the `orders` field from the resulting `customer` object after it's saved in the `SessionProvider`. + +![Order status page states](images/order-status-page-states.gif) + +As mentioned above, this is not the ideal approach due to privacy concerns. + +Let's create a Next.js API route page that takes a billingEmail address and runs the query against the endpoint using `GraphQLClient` from the `graphql-request` library, and returns the orders. + +```jsx +import { GraphQLClient } from 'graphql-request'; + +export default async function handler(req, res) { + const { billingEmail } = req.body; + + const endpoint = 'YOUR_GRAPHQL_ENDPOINT'; + const graphQLClient = new GraphQLClient(endpoint, { + headers: { + authorization: 'Bearer YOUR_WORDPRESS_APPLICATION_PASSWORD', + }, + }); + + const query = ` + query ($billingEmail: String) { + orders(where: { billingEmail: $billingEmail }) { + nodes { + ... OrderFields + } + } + } + `; + + const variables = { + billingEmail, + }; + + const data = await graphQLClient.request(query, variables); + + res.status(200).json(data); +} +``` + +Replace `'YOUR_GRAPHQL_ENDPOINT'` with your GraphQL endpoint and `'Bearer YOUR_WORDPRESS_APPLICATION_PASSWORD'` with your WordPress Application Password. + +For more information on WordPress Application Passwords, refer to the [official WordPress Application Password documentation](https://developer.wordpress.org/rest-api/using-the-rest-api/authentication/application-passwords/). + +## Conclusion + +Well done! You've successfully navigated through the process of using order data in a WooGraphQL context. We've explored how to build a basic order status page in React.js, which takes an email address and returns a list of all the orders associated with that email. We've also discussed the recommended method of retrieving and utilizing order data, which involves using a serverless function like a Next API route. + +Remember, while the method we initially demonstrated works, it's not the most secure or efficient way to handle order data. We recommend using a serverless function with admin access, provided by a WordPress Application Password, to query for the orders. This method is more secure and efficient, and it allows for greater flexibility and control over the data. + +As you continue to build your headless WooCommerce application, keep these principles in mind. Understanding how to effectively and securely handle order data is crucial for providing a smooth and secure user experience. + +In the next sections, we will delve deeper into the capabilities of WooGraphQL, exploring topics like customer data and mutations, subscription data and mutations, and more. Stay tuned! diff --git a/docs/using-product-addons-data-and-mutations.md b/docs/using-product-addons-data-and-mutations.md index e69de29b..8ef37fae 100644 --- a/docs/using-product-addons-data-and-mutations.md +++ b/docs/using-product-addons-data-and-mutations.md @@ -0,0 +1,6 @@ +--- +title: "Using Product Add-ons Data + Mutations with WooGraphQL" +description: "Learn how to use the Product Add-on functionality with WooGraphQL by building upon the code from `Using Product Data` and `Creating Session Provider and using Cart Mutations`." +keywords: "WooGraphQL, WPGraphQL, WooCommerce, GraphQL, Product Add-on functionality, Product Data, Session Provider, Cart Mutations" +author: "Geoff Taylor" +--- diff --git a/docs/using-product-bundle-data-and-mutations.md b/docs/using-product-bundle-data-and-mutations.md index e69de29b..d385653f 100644 --- a/docs/using-product-bundle-data-and-mutations.md +++ b/docs/using-product-bundle-data-and-mutations.md @@ -0,0 +1,97 @@ +--- +title: "Using Product Bundle Data + Mutations with WooGraphQL" +description: "Learn how to use the Product Bundle functionality with WooGraphQL by building upon the code from `Using Product Data` and `Creating Session Provider and using Cart Mutations`." +keywords: "WooGraphQL, WPGraphQL, WooCommerce, GraphQL, Product Bundle functionality, Product Data, Session Provider, Cart Mutations" +author: "Geoff Taylor" +--- + +# Using Product Bundle Data + Mutations + +In the previous sections, we have explored various aspects of using WooGraphQL, from handling user sessions and cart mutations to working with different product types. Now, we are going to delve into the world of product bundles. Product bundles are a powerful feature in WooCommerce that allows merchants to sell multiple products together as a set, often at a discounted price. This can be a great way to increase average order value and move more inventory. + +In this section, we will demonstrate how to use the WooGraphQL API to work with product bundle data and mutations. We will build upon the code from the previous sections, specifically the ones on "Using Product Data" and "Creating Session Provider and using Cart Mutations". This will involve fetching product bundle data, adding product bundles to the cart, and handling the unique specifications of product bundles. + +We will be using the `BundleProduct` component and updating the `SingleProduct` and `useCartMutations` components to handle product bundles. We will be using the code samples from the [Using Product Data](https://woographql.com/docs/using-product-data) and [Handling User Session and Using Cart Mutations](https://woographql.com/docs/handling-user-session-and-using-cart-mutations) as a starting point. + +Let's start by looking at the `BundleProduct` component: + +```jsx +import React, { useState } from 'react'; +import useCartMutations from './useCartMutations'; +import { useSession } from './SessionProvider'; +import { LoadingSpinner } from './LoadingSpinner'; +import { CartCard } from './CartCard'; + +// ... rest of the code from the provided sample ... + +export function BundleCard({ product }) { + // ... rest of the code from the provided sample ... +} +``` + +Next, we will update the `SingleProduct` component to handle product bundles: + +```jsx +import React from 'react'; +import BundleCard from './BundleCard'; + +function SingleProduct({ product }) { + if (product.__typename === 'BundleProduct') { + return ; + } + + // ... rest of the code for handling other product types ... +} +``` + +Finally, we will update the `useCartMutations` hook to handle adding and removing product bundles from the cart: + +```jsx +import { useState } from 'react'; +import { useSession } from './SessionProvider'; +import { + useAddToCartMutation, + useAddBundleToCartMutation, + useUpdateCartItemQuantitiesMutation, + useRemoveItemsFromCartMutation, +} from '@axis/graphql'; + +export default function useCartMutations(productId) { + // ... rest of the code from the provided sample ... + + async function mutate(values) { + // ... rest of the code from the provided sample ... + + switch (mutation) { + // ... rest of the code from the provided sample ... + + case 'addBundle': + if (!values.bundleItems) { + throw new Error('No bundle items provided'); + } + addBundleToCart({ + variables: { + productId, + quantity, + bundleItems: values.bundleItems, + }, + }); + break; + + // ... rest of the code from the provided sample ... + } + } + + // ... rest of the code from the provided sample ... +} +``` + +Now we have updated the `SingleProduct` and `useCartMutations` components to handle product bundles, and we have created a new `BundleProduct` component for displaying product bundles. With these updates, your application should now be able to handle product bundles effectively. + +## Conclusion + +Congratulations! You have now learned how to work with product bundle data and mutations using the WooGraphQL API. This includes fetching product bundle data, adding product bundles to the cart, and handling the unique specifications of product bundles. + +Remember, while product bundles are similar to other product types in many ways, they have unique specifications that require special handling. Therefore, it's important to understand these differences and how to work with them when building your headless WooCommerce application. + +In the next sections, we will continue to explore more advanced features of WooGraphQL, including working with product add-ons. Stay tuned! diff --git a/docs/using-product-data.md b/docs/using-product-data.md index f59f8859..66220994 100644 --- a/docs/using-product-data.md +++ b/docs/using-product-data.md @@ -7,14 +7,14 @@ author: "Geoff Taylor" # Using Product Data -In this guide, we will implement the Single Product page using the provided GraphQL query and the JSON result. We will display the product's `name`, `description`, `price`, `regularPrice`, `attributes`, `width`, `height`, `length`, and `weight`. Additionally, we will prepare a section for cart options like desired quantity and an Add to Cart button. +In this section, we will implement the Single Product page using the provided GraphQL query and the JSON result. We will display the product's `name`, `description`, `price`, `regularPrice`, `attributes`, `width`, `height`, `length`, and `weight`. Additionally, we will prepare a section for cart options like desired quantity and an Add to Cart button. ## Prerequisites - Basic knowledge of React and React Router. - Familiarity with GraphQL and WPGraphQL. - A setup WPGraphQL/WooGraphQL backend. -- Read previous guides on [Routing By URI](routing-by-uri.md) +- Read previous sections on [Routing By URI](routing-by-uri.md) ## Step 0: Create our `graphql.js` file. @@ -191,7 +191,7 @@ dimensions { weight ``` -Inside the SingleProduct component, after rendering the attributes +Inside the SingleProduct component, render the attributes. ```jsx
@@ -204,7 +204,7 @@ Inside the SingleProduct component, after rendering the attributes ## Step 4: Add cart options section -Finally, add a section for cart options like desired quantity and the Add to Cart button. Use the `soldIndividually` and `stockStatus` fields to control the state of the cart controls. Add this inside the SingleProduct component, after rendering the weight information +Finally, add a section for cart options like desired quantity and the Add to Cart button. Use the `soldIndividually` and `stockStatus` fields to control the state of the cart controls. Add this inside the SingleProduct component after rendering the weight information. ```jsx
@@ -225,12 +225,12 @@ Finally, add a section for cart options like desired quantity and the Add to Car ); ``` -With this implementation, the Single Product page displays the product information, dimensions, and weight. Additionally, it includes a section for cart options, such as the desired quantity and an Add to Cart button. The availability of the cart options is dictated by the `soldIndividually` and `stockStatus` fields. If the product is not sold individually, the user can select a quantity. The Add to Cart button is only shown if the product is in stock; otherwise, an "Out of stock" message is displayed. We could also go a step further and use the product's `stockQuantity` to set a hard max quantity limit, but it's outta of the scope of this guide. +With this implementation, the Single Product page displays the product information, dimensions, and weight. Additionally, it includes a section for cart options, such as the desired quantity and an Add to Cart button. The availability of the cart options is dictated by the `soldIndividually` and `stockStatus` fields. If the product is not sold individually, the user can select a quantity. The Add to Cart button is only shown if the product is in stock; otherwise, an "Out of stock" message is displayed. We could also go a step further and use the product's `stockQuantity` to set a hard max quantity limit, but that's out of the scope of this section. ## Conclusion -In this guide, you learned how to implement a Single Product page using the provided GraphQL queries and the example JSON response. The Single Product page displays essential product information such as the name, description, price, attributes, dimensions, and weight. The Add to Cart controls are conditionally rendered based on the `soldIndividually` and `stockStatus` fields. +In this section, you learned how to implement a Single Product page using the provided GraphQL queries and the example JSON response. The Single Product page displays essential product information such as the name, description, price, attributes, dimensions, and weight. The Add to Cart controls are conditionally rendered based on the `soldIndividually` and `stockStatus` fields. -In the next guide, we will dive into implementing the functionality for adding a product to the cart and updating the cart's contents. We will explore how to manage the cart state and interact with the WooCommerce API to handle cart-related actions. +In the next section, we will dive into implementing the functionality for adding a product to the cart and updating the cart's contents. We will explore how to manage the cart state and interact with the WooCommerce API to handle cart-related actions. -By following these guides, you'll be well on your way to building a complete, functional e-commerce website using React and WooCommerce with GraphQL. +By continuing to follow the documentation, you'll be well on your way to building a complete, functional e-commerce website using React and WooCommerce with GraphQL. diff --git a/docs/using-subscription-data-and-mutations.md b/docs/using-subscription-data-and-mutations.md index e69de29b..2d1a2ccd 100644 --- a/docs/using-subscription-data-and-mutations.md +++ b/docs/using-subscription-data-and-mutations.md @@ -0,0 +1,138 @@ +--- +title: "Using Subscription Data + Mutations with WooGraphQL" +description: "Learn how to use the Subscription functionality provided by WooGraphQL Pro and build upon the code written in `Using Product Data` and `Routing by URI` by rewriting the `ProductListing` and `SingleProduct` components to support `SubscriptionProduct` types." +keywords: "WooGraphQL, WPGraphQL, WooCommerce, GraphQL, Subscription functionality, ProductListing, SingleProduct, SubscriptionProduct types" +author: "Geoff Taylor" +--- + +# Using Subscription Data + Mutations + +This section of the documentation will focus on how to use the Subscription functionality provided by WooGraphQL Pro. We will build upon the code written in `Using Product Data` and `Routing by URI` by rewriting the `ProductListing` and `SingleProduct` components to support `SubscriptionProduct` types. + +Before we start, ensure that the `changeSubPaymentMethodUrl`, `renewSubPaymentMethodUrl`, and `Enable Subscriptions` options from the WooGraphQL settings page are checked and enabled. These settings will allow us to handle subscription renewals, payment method changes, and enable subscription functionality respectively. + +## Understanding SubscriptionProduct Type + +The `SubscriptionProduct` type represents a product that can be purchased on a recurring basis. It includes fields for the subscription price, interval, length, and sign-up fee, among others. Here is an example of how to query for a subscription product: + +```javascript +const SUBSCRIPTION_PRODUCT_QUERY = gql` + query SubscriptionProduct($id: ID!) { + product(id: $id) { + ... on SubscriptionProduct { + id + name + price + subscriptionPrice + subscriptionPeriod + subscriptionPeriodInterval + subscriptionLength + subscriptionSignUpee + } + } + } +`; +``` + +## Modifying ProductListing and SingleProduct Components + +To support `SubscriptionProduct` types, we need to modify our `ProductListing` and `SingleProduct` components. These components should be able to display the subscription details and allow users to add subscription products to their cart. + +Here is an example of how to modify the `ProductListing` component: + +```javascript +function ProductListing({ product }) { + // ... other code + + return ( +
+

{product.name}

+

Price: {product.price}

+

Subscription Price: {product.subscriptionPrice}

+

Subscription Period: {product.subscriptionPeriod}

+ // ... other product details + +
+ ); +}; +``` + +The `SingleProduct` component can be modified in a similar way. + +## Adding a Subscriptions Page + +We can add a `Subscriptions` page to the account page clone made in `Using Customer Data + Mutations`. This page will utilize the `subscriptions` field on the `Customer` type that returns a list of `SubscriptionOrder`. + +Here is an example of how to query for a customer's subscriptions: + +```javascript +const CUSTOMER_SUBSCRIPTIONS_QUERY = gql` + query CustomerSubscriptions($id: ID!) { + customer(id: $id) { + subscriptions { + nodes { + id + status + total + lineItems { + nodes { + product { + ... on SubscriptionProduct { + name + subscriptionPrice + subscriptionPeriod + } + } + quantity + } + } + } + } + } + } +`; +``` + +And here is an example of how to display the subscriptions on the `Subscriptions` page: + +```javascript +function SubscriptionsPage({ customer }) { + return ( +
+

Your Subscriptions

+ {customer.subscriptions.nodes.map(subscription => ( +
+

{subscription.status}

+

Total: {subscription.total}

+ {subscription.lineItems.nodes.map(lineItem => ( +
+

{lineItem.product.name}

+

Price: {lineItem.product.subscriptionPrice}

+

Period: {lineItem.product.subscriptionPeriod}

+

Quantity: {lineItem.quantity}

+
+ ))} + + + + +
+ ))} +
+ ); +}; +``` + +In the `SubscriptionsPage` component, we have added `renew`, `change payment method`, `reactivate`, and `cancel` buttons. The `renew` and `change payment method` buttons use the `changeSubPaymentMethodUrl` and `renewSubPaymentMethodUrl` fields respectively. The `reactivate` and `cancel` buttons use the `reactivateSubscription` and `cancelSubscription` mutations respectively. The visibility of these buttons is controlled based on the status of the subscription. + +To learn more about the `changeSubPaymentMethodUrl` and `renewSubPaymentMethodUrl` URLs, please refer to the [Harmonizing with WordPress](https://woographql.com/docs/harmonizing-with-wordpress#harmonizing-with-wordpress) section of the WooGraphQL documentation. + +## Conclusion + +In this section, we have explored the Subscription functionality provided by WooGraphQL Pro. We have demonstrated how to rewrite the `ProductListing` and `SingleProduct` components to support `SubscriptionProduct` types. We also added a `Subscriptions` page to the account page clone, which utilizes the `subscriptions` field on the `Customer` type that returns a list of `SubscriptionOrder`. + +It's important to note that we did not discuss adding subscription products to the cart in this section. This is because the process of adding subscription products to the cart is no different than adding Simple products or variations, depending on whether you are utilizing simple subscription products or variable subscription products. + +However, this will not be the case in the upcoming sections on Composite Products and Product Bundles. These product types have unique specifications that require a different approach when adding them to the cart. We will delve into these specifics in the following sections, providing detailed examples and code snippets to guide you through the process. + +We hope this section has been informative and helpful in understanding how to use Subscription Data and Mutations with WooGraphQL Pro. As always, we encourage you to experiment with these concepts and apply them to your own projects. Happy coding! diff --git a/includes/connection/class-orders.php b/includes/connection/class-orders.php index 81ecde55..e039bcc8 100644 --- a/includes/connection/class-orders.php +++ b/includes/connection/class-orders.php @@ -253,26 +253,30 @@ class Orders { return array_merge( get_wc_cpt_connection_args(), [ - 'statuses' => [ + 'statuses' => [ 'type' => [ 'list_of' => 'OrderStatusEnum' ], 'description' => __( 'Limit result set to orders assigned a specific status.', 'wp-graphql-woocommerce' ), ], - 'customerId' => [ + 'customerId' => [ 'type' => 'Int', 'description' => __( 'Limit result set to orders assigned a specific customer.', 'wp-graphql-woocommerce' ), ], - 'customersIn' => [ + 'customersIn' => [ 'type' => [ 'list_of' => 'Int' ], 'description' => __( 'Limit result set to orders assigned a specific group of customers.', 'wp-graphql-woocommerce' ), ], - 'productId' => [ + 'productId' => [ 'type' => 'Int', 'description' => __( 'Limit result set to orders assigned a specific product.', 'wp-graphql-woocommerce' ), ], - 'orderby' => [ + 'orderby' => [ 'type' => [ 'list_of' => 'OrdersOrderbyInput' ], 'description' => __( 'What paramater to use to order the objects by.', 'wp-graphql-woocommerce' ), ], + 'billingEmail' => [ + 'type' => 'String', + 'description' => __( 'Limit result set to orders assigned a specific billing email.', 'wp-graphql-woocommerce' ), + ], ] ); diff --git a/includes/data/connection/class-order-connection-resolver.php b/includes/data/connection/class-order-connection-resolver.php index beadfa6d..bb07e06c 100644 --- a/includes/data/connection/class-order-connection-resolver.php +++ b/includes/data/connection/class-order-connection-resolver.php @@ -282,6 +282,12 @@ class Order_Connection_Resolver extends AbstractConnectionResolver { if ( ! empty( $where_args['customersIn'] ) ) { $args['customer'] = $where_args['customersIn']; } + if ( ! empty( $where_args['billingEmail'] ) ) { + $billing_email = $where_args['billingEmail']; + $args['customer'] = ! empty( $args['customer'] ) + ? array_merge( $args['customer'], [ $billing_email ] ) + : $billing_email; + } // Search by product. if ( ! empty( $where_args['productId'] ) ) { diff --git a/tests/wpunit/OrderQueriesTest.php b/tests/wpunit/OrderQueriesTest.php index 1040ceb8..4d619e92 100644 --- a/tests/wpunit/OrderQueriesTest.php +++ b/tests/wpunit/OrderQueriesTest.php @@ -283,7 +283,9 @@ class OrderQueriesTest extends \Tests\WPGraphQL\WooCommerce\TestCase\WooGraphQLT $product = $this->factory->product->createSimple(); $orders = [ $this->factory->order->createNew( - [], + [ + 'billing_email' => 'test@example.com' + ], [ 'line_items' => [ [ @@ -310,16 +312,20 @@ class OrderQueriesTest extends \Tests\WPGraphQL\WooCommerce\TestCase\WooGraphQLT ]; $query = ' - query ($statuses: [OrderStatusEnum], $customerId: Int, $customersIn: [Int] $productId: Int) { + query ($statuses: [OrderStatusEnum], $customerId: Int, $customersIn: [Int], $billingEmail: String, $productId: Int) { orders(where: { statuses: $statuses, customerId: $customerId, customersIn: $customersIn, + billingEmail: $billingEmail, productId: $productId, orderby: { field: MENU_ORDER, order: ASC } }) { nodes { id + billing { + email + } } } } @@ -345,9 +351,9 @@ class OrderQueriesTest extends \Tests\WPGraphQL\WooCommerce\TestCase\WooGraphQLT $this->loginAsShopManager(); $response = $this->graphql( compact( 'query' ) ); $expected = [ - $this->expectedNode( 'orders.nodes', [ 'id' => $this->toRelayId( 'order', $orders[0] ) ] ), - $this->expectedNode( 'orders.nodes', [ 'id' => $this->toRelayId( 'order', $orders[1] ) ] ), - $this->not()->expectedNode( 'orders.nodes', [ 'id' => $this->toRelayId( 'order', $old_orders[0] ) ] ), + $this->expectedField( 'orders.nodes.#.id', $this->toRelayId( 'order', $orders[0] ) ), + $this->expectedField( 'orders.nodes.#.id', $this->toRelayId( 'order', $orders[1] ) ), + $this->not()->expectedField( 'orders.nodes.#.id', $this->toRelayId( 'order', $old_orders[0]->get_id() ) ), ]; $this->assertQuerySuccessful( $response, $expected ); @@ -361,7 +367,7 @@ class OrderQueriesTest extends \Tests\WPGraphQL\WooCommerce\TestCase\WooGraphQLT $variables = [ 'statuses' => [ 'COMPLETED' ] ]; $response = $this->graphql( compact( 'query', 'variables' ) ); $expected = [ - $this->expectedNode( 'orders.nodes', [ 'id' => $this->toRelayId( 'order', $orders[1] ) ] ), + $this->expectedField( 'orders.nodes.#.id', $this->toRelayId( 'order', $orders[1] ) ), ]; $this->assertQuerySuccessful( $response, $expected ); @@ -392,6 +398,24 @@ class OrderQueriesTest extends \Tests\WPGraphQL\WooCommerce\TestCase\WooGraphQLT /** * Assertion Six * + * Tests "billingEmail" where argument + */ + $variables = [ 'billingEmail' => 'test@example.com' ]; + $response = $this->graphql( compact( 'query', 'variables' ) ); + + $this->assertQuerySuccessful( + $response, + [ + $this->expectedField( 'orders.nodes.#.id', $this->toRelayId( 'order', $orders[0] ) ), + $this->not()->expectedField( 'orders.nodes.#.id', $this->toRelayId( 'order', $orders[1] ) ), + $this->not()->expectedField( 'orders.nodes.#.id', $this->toRelayId( 'order', $old_orders[0] ) ), + ] + ); + $this->clearLoaderCache( 'wc_post' ); + + /** + * Assertion Seven + * * Tests "productId" where argument */ $variables = [ 'productId' => $product ]; @@ -401,7 +425,7 @@ class OrderQueriesTest extends \Tests\WPGraphQL\WooCommerce\TestCase\WooGraphQLT $this->clearLoaderCache( 'wc_post' ); /** - * Assertion Seven + * Assertion Eight * * Tests `orders` query as existing customer, should return customer's * orders only diff --git a/wp-graphql-woocommerce.php b/wp-graphql-woocommerce.php index 4dbe601d..3999b1e5 100644 --- a/wp-graphql-woocommerce.php +++ b/wp-graphql-woocommerce.php @@ -11,7 +11,7 @@ * License: GPL-3 * License URI: https://www.gnu.org/licenses/gpl-3.0.html * WC requires at least: 7.5.0 - * WC tested up to: 7.8.2 + * WC tested up to: 7.9.0 * WPGraphQL requires at least: 1.14.0+ * WPGraphQL-JWT-Authentication requires at least: 0.7.0+ * @@ -165,3 +165,13 @@ constants(); // Load access functions. require_once get_plugin_directory() . 'access-functions.php'; + +// Confirm WC HPOS compatibility. +add_action( + 'before_woocommerce_init', + static function () { + if ( class_exists( \Automattic\WooCommerce\Utilities\FeaturesUtil::class ) ) { + \Automattic\WooCommerce\Utilities\FeaturesUtil::declare_compatibility( 'custom_order_tables', __FILE__, true ); + } + } +);