diff --git a/framework/vendure/schema.d.ts b/framework/vendure/schema.d.ts index cef42ff5d..baf37c7f3 100644 --- a/framework/vendure/schema.d.ts +++ b/framework/vendure/schema.d.ts @@ -306,9 +306,52 @@ export type MutationResetPasswordArgs = { password: Scalars['String'] } +export type ActiveOrderCustomerFragment = Pick & { + customer?: Maybe>; + lines: Array>; +}; + +export type SetCustomerForOrderMutationVariables = Exact<{ + input: CreateCustomerInput; +}>; + +export type SetCustomerForOrderMutation = { __typename?: 'Mutation' } & { + setCustomerForOrder: + | ({ __typename: 'ActiveOrderCustomerFragment' } & Pick) + | ({ __typename: 'AlreadyLoggedInError' } & Pick< + AlreadyLoggedInError, + 'errorCode' | 'message' + >) + | ({ __typename: 'EmailAddressConflictError' } & Pick< + EmailAddressConflictError, + 'errorCode' | 'message' + >) + | ({ __typename: 'NoActiveOrderError' } & Pick< + NoActiveOrderError, + 'errorCode' | 'message' + >) +} + +export type SetCustomerForOrderMutation = { __typename?: 'Mutation' } & { + setCustomerForOrder: + | ({ __typename: 'ActiveOrderCustomerFragment' } & Pick) + | ({ __typename: 'AlreadyLoggedInError' } & Pick< + AlreadyLoggedInError, + 'errorCode' | 'message' + >) + | ({ __typename: 'EmailAddressConflictError' } & Pick< + EmailAddressConflictError, + 'errorCode' | 'message' + >) + | ({ __typename: 'NoActiveOrderError' } & Pick< + NoActiveOrderError, + 'errorCode' | 'message' + >) +} + export type Address = Node & { updateCustomerAddress: - | { + | { __typename?: 'Address' id: Scalars['ID'] } @@ -1471,7 +1514,7 @@ export type CustomerListOptions = { export type Customer = Node & { updateCustomer: - | { + | { __typename?: 'Customer' id: Scalars['ID'] } @@ -1482,7 +1525,7 @@ export type Customer = Node & { title?: Maybe firstName: Scalars['String'] lastName: Scalars['String'] - phoneNumber?: Maybe + phoneNumber?: Maybe emailAddress: Scalars['String'] addresses?: Maybe> orders: OrderList @@ -3017,56 +3060,56 @@ export type CartFragment = { __typename?: 'Order' } & Pick< | 'totalWithTax' | 'currencyCode' > & { - customer?: Maybe<{ __typename?: 'Customer' } & Pick> - lines: Array< - { __typename?: 'OrderLine' } & Pick< - OrderLine, + customer?: Maybe<{ __typename?: 'Customer' } & Pick> + lines: Array< + { __typename?: 'OrderLine' } & Pick< + OrderLine, + | 'id' + | 'quantity' + | 'linePriceWithTax' + | 'discountedLinePriceWithTax' + | 'unitPriceWithTax' + | 'discountedUnitPriceWithTax' + > & { + featuredAsset?: Maybe< + { __typename?: 'Asset' } & Pick + > + discounts: Array< + { __typename?: 'Discount' } & Pick< + Discount, + 'description' | 'amount' + > + > + productVariant: { __typename?: 'ProductVariant' } & Pick< + ProductVariant, | 'id' - | 'quantity' - | 'linePriceWithTax' - | 'discountedLinePriceWithTax' - | 'unitPriceWithTax' - | 'discountedUnitPriceWithTax' - > & { - featuredAsset?: Maybe< - { __typename?: 'Asset' } & Pick - > - discounts: Array< - { __typename?: 'Discount' } & Pick< - Discount, - 'description' | 'amount' - > - > - productVariant: { __typename?: 'ProductVariant' } & Pick< - ProductVariant, - | 'id' - | 'name' - | 'sku' - | 'price' - | 'priceWithTax' - | 'stockLevel' - | 'productId' - > & { product: { __typename?: 'Product' } & Pick } - } - > - } + | 'name' + | 'sku' + | 'price' + | 'priceWithTax' + | 'stockLevel' + | 'productId' + > & { product: { __typename?: 'Product' } & Pick } + } + > +} export type SearchResultFragment = { __typename?: 'SearchResult' } & Pick< SearchResult, 'productId' | 'sku' | 'productName' | 'description' | 'slug' | 'sku' | 'currencyCode' - | 'productAsset' | 'price' | 'priceWithTax' | 'currencyCode' + | 'productAsset' | 'price' | 'priceWithTax' | 'currencyCode' | 'collectionIds' | 'productVariantId' | 'facetValueIds' | "productVariantName" > & { - productAsset?: Maybe< - { __typename?: 'SearchResultAsset' } & Pick< - SearchResultAsset, - 'id' | 'preview' - > + productAsset?: Maybe< + { __typename?: 'SearchResultAsset' } & Pick< + SearchResultAsset, + 'id' | 'preview' > - priceWithTax: - | ({ __typename?: 'PriceRange' } & Pick) - | ({ __typename?: 'SinglePrice' } & Pick) - } + > + priceWithTax: + | ({ __typename?: 'PriceRange' } & Pick) + | ({ __typename?: 'SinglePrice' } & Pick) +} export type AddItemToOrderMutationVariables = Exact<{ variantId: Scalars['ID'] @@ -3075,23 +3118,23 @@ export type AddItemToOrderMutationVariables = Exact<{ export type AddItemToOrderMutation = { __typename?: 'Mutation' } & { addItemToOrder: - | ({ __typename: 'Order' } & CartFragment) - | ({ __typename: 'OrderModificationError' } & Pick< - OrderModificationError, - 'errorCode' | 'message' - >) - | ({ __typename: 'OrderLimitError' } & Pick< - OrderLimitError, - 'errorCode' | 'message' - >) - | ({ __typename: 'NegativeQuantityError' } & Pick< - NegativeQuantityError, - 'errorCode' | 'message' - >) - | ({ __typename: 'InsufficientStockError' } & Pick< - InsufficientStockError, - 'errorCode' | 'message' - >) + | ({ __typename: 'Order' } & CartFragment) + | ({ __typename: 'OrderModificationError' } & Pick< + OrderModificationError, + 'errorCode' | 'message' + >) + | ({ __typename: 'OrderLimitError' } & Pick< + OrderLimitError, + 'errorCode' | 'message' + >) + | ({ __typename: 'NegativeQuantityError' } & Pick< + NegativeQuantityError, + 'errorCode' | 'message' + >) + | ({ __typename: 'InsufficientStockError' } & Pick< + InsufficientStockError, + 'errorCode' | 'message' + >) } export type AdjustOrderLineMutationVariables = Exact<{ @@ -3101,23 +3144,23 @@ export type AdjustOrderLineMutationVariables = Exact<{ export type AdjustOrderLineMutation = { __typename?: 'Mutation' } & { adjustOrderLine: - | ({ __typename: 'Order' } & CartFragment) - | ({ __typename: 'OrderModificationError' } & Pick< - OrderModificationError, - 'errorCode' | 'message' - >) - | ({ __typename: 'OrderLimitError' } & Pick< - OrderLimitError, - 'errorCode' | 'message' - >) - | ({ __typename: 'NegativeQuantityError' } & Pick< - NegativeQuantityError, - 'errorCode' | 'message' - >) - | ({ __typename: 'InsufficientStockError' } & Pick< - InsufficientStockError, - 'errorCode' | 'message' - >) + | ({ __typename: 'Order' } & CartFragment) + | ({ __typename: 'OrderModificationError' } & Pick< + OrderModificationError, + 'errorCode' | 'message' + >) + | ({ __typename: 'OrderLimitError' } & Pick< + OrderLimitError, + 'errorCode' | 'message' + >) + | ({ __typename: 'NegativeQuantityError' } & Pick< + NegativeQuantityError, + 'errorCode' | 'message' + >) + | ({ __typename: 'InsufficientStockError' } & Pick< + InsufficientStockError, + 'errorCode' | 'message' + >) } export type LoginMutationVariables = Exact<{ @@ -3127,49 +3170,49 @@ export type LoginMutationVariables = Exact<{ export type LoginMutation = { __typename?: 'Mutation' } & { login: - | ({ __typename: 'CurrentUser' } & Pick) - | ({ __typename: 'InvalidCredentialsError' } & Pick< - InvalidCredentialsError, - 'errorCode' | 'message' - >) - | ({ __typename: 'NotVerifiedError' } & Pick< - NotVerifiedError, - 'errorCode' | 'message' - >) - | ({ __typename: 'NativeAuthStrategyError' } & Pick< - NativeAuthStrategyError, - 'errorCode' | 'message' - >) + | ({ __typename: 'CurrentUser' } & Pick) + | ({ __typename: 'InvalidCredentialsError' } & Pick< + InvalidCredentialsError, + 'errorCode' | 'message' + >) + | ({ __typename: 'NotVerifiedError' } & Pick< + NotVerifiedError, + 'errorCode' | 'message' + >) + | ({ __typename: 'NativeAuthStrategyError' } & Pick< + NativeAuthStrategyError, + 'errorCode' | 'message' + >) } export type ResetPasswordMutation = { __typename?: 'Mutation' } & { resetPassword: - | ({ __typename: 'CurrentUser' } & Pick) - | ({ __typename: 'PasswordResetTokenInvalidError' } & Pick< - PasswordResetTokenInvalidError, - 'errorCode' | 'message' - >) - | ({ __typename: 'PasswordResetTokenExpiredError' } & Pick< - PasswordResetTokenExpiredError, - 'errorCode' | 'message' - >) - | ({ __typename: 'NativeAuthStrategyError' } & Pick< - NativeAuthStrategyError, - 'errorCode' | 'message' - >) + | ({ __typename: 'CurrentUser' } & Pick) + | ({ __typename: 'PasswordResetTokenInvalidError' } & Pick< + PasswordResetTokenInvalidError, + 'errorCode' | 'message' + >) + | ({ __typename: 'PasswordResetTokenExpiredError' } & Pick< + PasswordResetTokenExpiredError, + 'errorCode' | 'message' + >) + | ({ __typename: 'NativeAuthStrategyError' } & Pick< + NativeAuthStrategyError, + 'errorCode' | 'message' + >) } export type SignupMutation = { __typename?: 'Mutation' } & { registerCustomerAccount: - | ({ __typename: 'Success' } & Pick) - | ({ __typename: 'MissingPasswordError' } & Pick< - MissingPasswordError, - 'errorCode' | 'message' - >) - | ({ __typename: 'NativeAuthStrategyError' } & Pick< - NativeAuthStrategyError, - 'errorCode' | 'message' - >) + | ({ __typename: 'Success' } & Pick) + | ({ __typename: 'MissingPasswordError' } & Pick< + MissingPasswordError, + 'errorCode' | 'message' + >) + | ({ __typename: 'NativeAuthStrategyError' } & Pick< + NativeAuthStrategyError, + 'errorCode' | 'message' + >) } export type VerifyCustomerAccountVariables = Exact<{ @@ -3179,27 +3222,27 @@ export type VerifyCustomerAccountVariables = Exact<{ export type VerifyCustomerAccountMutation = { __typename?: 'Mutation' } & { verifyCustomerAccount: - | ({ __typename: 'CurrentUser' } & Pick) - | ({ __typename: 'VerificationTokenInvalidError' } & Pick< - VerificationTokenInvalidError, - 'errorCode' | 'message' - >) - | ({ __typename: 'VerificationTokenExpiredError' } & Pick< - VerificationTokenExpiredError, - 'errorCode' | 'message' - >) - | ({ __typename: 'MissingPasswordError' } & Pick< - MissingPasswordError, - 'errorCode' | 'message' - >) - | ({ __typename: 'PasswordAlreadySetError' } & Pick< - PasswordAlreadySetError, - 'errorCode' | 'message' - >) - | ({ __typename: 'NativeAuthStrategyError' } & Pick< - NativeAuthStrategyError, - 'errorCode' | 'message' - >) + | ({ __typename: 'CurrentUser' } & Pick) + | ({ __typename: 'VerificationTokenInvalidError' } & Pick< + VerificationTokenInvalidError, + 'errorCode' | 'message' + >) + | ({ __typename: 'VerificationTokenExpiredError' } & Pick< + VerificationTokenExpiredError, + 'errorCode' | 'message' + >) + | ({ __typename: 'MissingPasswordError' } & Pick< + MissingPasswordError, + 'errorCode' | 'message' + >) + | ({ __typename: 'PasswordAlreadySetError' } & Pick< + PasswordAlreadySetError, + 'errorCode' | 'message' + >) + | ({ __typename: 'NativeAuthStrategyError' } & Pick< + NativeAuthStrategyError, + 'errorCode' | 'message' + >) } export type LogoutMutationVariables = Exact<{ [key: string]: never }> @@ -3214,11 +3257,11 @@ export type RemoveOrderLineMutationVariables = Exact<{ export type RemoveOrderLineMutation = { __typename?: 'Mutation' } & { removeOrderLine: - | ({ __typename: 'Order' } & CartFragment) - | ({ __typename: 'OrderModificationError' } & Pick< - OrderModificationError, - 'errorCode' | 'message' - >) + | ({ __typename: 'Order' } & CartFragment) + | ({ __typename: 'OrderModificationError' } & Pick< + OrderModificationError, + 'errorCode' | 'message' + >) } export type SignupMutationVariables = Exact<{ @@ -3228,15 +3271,15 @@ export type SignupMutationVariables = Exact<{ export type RequestPasswordReset = { __typename?: 'Mutation' } & { requestPasswordReset: - | ({ __typename: 'Success' } & Pick) - | ({ __typename: 'MissingPasswordError' } & Pick< - MissingPasswordError, - 'errorCode' | 'message' - >) - | ({ __typename: 'NativeAuthStrategyError' } & Pick< - NativeAuthStrategyError, - 'errorCode' | 'message' - >) + | ({ __typename: 'Success' } & Pick) + | ({ __typename: 'MissingPasswordError' } & Pick< + MissingPasswordError, + 'errorCode' | 'message' + >) + | ({ __typename: 'NativeAuthStrategyError' } & Pick< + NativeAuthStrategyError, + 'errorCode' | 'message' + >) } @@ -3248,7 +3291,7 @@ export type ActiveCustomerQuery = { __typename?: 'Query' } & { { __typename?: 'Customer' } & Pick< Customer, Favorite, - 'id' | 'firstName' | 'lastName' | 'emailAddress' | 'addresses' | 'phoneNumber'| 'orders' + 'id' | 'firstName' | 'lastName' | 'emailAddress' | 'addresses' | 'phoneNumber' | 'orders' > > } @@ -3267,7 +3310,7 @@ export type FavoriteList = PaginatedList & { totalItems: Int! } -type Favorite = Node & { +type Favorite = Node & { id: ID! createdAt: DateTime! updatedAt: DateTime! @@ -3277,7 +3320,7 @@ type Favorite = Node & { -type FavouriteOption = Customer & { +type FavouriteOption = Customer & { favorites(options: FavoriteListOptions): FavoriteList! } @@ -3308,13 +3351,13 @@ export type GetAllFacetsQuery = { __typename?: 'Query' } & { { __typename?: 'Facet' } & Pick< Facet, 'id' | 'name' | 'code' | 'values' - > + > & { - parent?: Maybe<{ __typename?: 'Facet' } & Pick> - children?: Maybe< - Array<{ __typename?: 'Facet' } & Pick> - > - } + parent?: Maybe<{ __typename?: 'Facet' } & Pick> + children?: Maybe< + Array<{ __typename?: 'Facet' } & Pick> + > + } >, 'totalItems' } @@ -3327,11 +3370,11 @@ export type GetAllCollectionsQuery = { __typename?: 'Query' } & { Collection, 'id' | 'name' | 'slug' > & { - parent?: Maybe<{ __typename?: 'Collection' } & Pick> - children?: Maybe< - Array<{ __typename?: 'Collection' } & Pick> - > - } + parent?: Maybe<{ __typename?: 'Collection' } & Pick> + children?: Maybe< + Array<{ __typename?: 'Collection' } & Pick> + > + } >, 'totalItems' } @@ -3352,15 +3395,15 @@ export type GetCollectionsQuery = { __typename?: 'Query' } & { Collection, 'id' | 'name' | 'description' | 'slug' > & { - productVariants: { __typename?: 'ProductVariantList' } & Pick< - ProductVariantList, - 'totalItems' - > - parent?: Maybe<{ __typename?: 'Collection' } & Pick> - children?: Maybe< - Array<{ __typename?: 'Collection' } & Pick> - > - } + productVariants: { __typename?: 'ProductVariantList' } & Pick< + ProductVariantList, + 'totalItems' + > + parent?: Maybe<{ __typename?: 'Collection' } & Pick> + children?: Maybe< + Array<{ __typename?: 'Collection' } & Pick> + > + } > } } @@ -3375,60 +3418,60 @@ export type GetProductQuery = { __typename?: 'Query' } & { Product, 'id' | 'name' | 'slug' | 'description' > & { - assets: Array< - { __typename?: 'Asset' } & Pick - > - variants: Array< - { __typename?: 'ProductVariant' } & Pick< - ProductVariant, - 'id' | 'priceWithTax' | 'currencyCode' | 'price' | "name" - > & { - options: Array< - { __typename?: 'ProductOption' } & Pick< - ProductOption, - 'id' | 'name' | 'code' | 'groupId' - > & { - group: { __typename?: 'ProductOptionGroup' } & Pick< - ProductOptionGroup, - 'id' - > & { - options: Array< - { __typename?: 'ProductOption' } & Pick< - ProductOption, - 'name' - > - > - } - } - > - } - > - optionGroups: Array< - { __typename?: 'ProductOptionGroup' } & Pick< - ProductOptionGroup, - 'id' | 'code' | 'name' - > & { - options: Array< - { __typename?: 'ProductOption' } & Pick< - ProductOption, - 'id' | 'name' + assets: Array< + { __typename?: 'Asset' } & Pick + > + variants: Array< + { __typename?: 'ProductVariant' } & Pick< + ProductVariant, + 'id' | 'priceWithTax' | 'currencyCode' | 'price' | "name" + > & { + options: Array< + { __typename?: 'ProductOption' } & Pick< + ProductOption, + 'id' | 'name' | 'code' | 'groupId' + > & { + group: { __typename?: 'ProductOptionGroup' } & Pick< + ProductOptionGroup, + 'id' + > & { + options: Array< + { __typename?: 'ProductOption' } & Pick< + ProductOption, + 'name' + > > - > + } } - > - facetValues: Array< - { __typename?: 'FacetValue' } & Pick< - FacetValue, - 'id' > - > - collections: Array< - { __typename?: 'Collection' } & Pick< - Collection, - 'id'|"name" + } + > + optionGroups: Array< + { __typename?: 'ProductOptionGroup' } & Pick< + ProductOptionGroup, + 'id' | 'code' | 'name' + > & { + options: Array< + { __typename?: 'ProductOption' } & Pick< + ProductOption, + 'id' | 'name' + > > + } + > + facetValues: Array< + { __typename?: 'FacetValue' } & Pick< + FacetValue, + 'id' > - } + > + collections: Array< + { __typename?: 'Collection' } & Pick< + Collection, + 'id' | "name" + > + > + } > } diff --git a/framework/vendure/utils/mutations/set-customer-order-mutation.ts b/framework/vendure/utils/mutations/set-customer-order-mutation.ts new file mode 100644 index 000000000..d4face1e9 --- /dev/null +++ b/framework/vendure/utils/mutations/set-customer-order-mutation.ts @@ -0,0 +1,24 @@ +export const setCustomerForOrderMutation = /* GraphQL */ ` +mutation setCustomerForOrder($input: CreateCustomerInput!) { + setCustomerForOrder(input: $input) { + __typename + ... on Order { + id + createdAt + updatedAt + code + customer { + id + firstName + lastName + emailAddress + phoneNumber + } + } + ... on ErrorResult { + errorCode + message + } + } +} +` diff --git a/package.json b/package.json index 8474be667..6db6e1de1 100644 --- a/package.json +++ b/package.json @@ -2,8 +2,9 @@ "name": "nextjs-commerce", "version": "1.0.0", "scripts": { - "dev": "NODE_OPTIONS='--inspect' PORT=3005 next dev", + "dev": "set NODE_OPTIONS='--inspect' && set PORT=3005 && next dev", "dev-windows": "set NODE_OPTIONS='--inspect' && set PORT=3005 && next dev", + "dev-macos": "set NODE_OPTIONS='--inspect' && set PORT=3005 && next dev", "build": "next build", "start": "PORT=3005 next start", "analyze": "BUNDLE_ANALYZE=both yarn build", diff --git a/pages/checkout.tsx b/pages/checkout.tsx index ae502f0e9..860f04bc1 100644 --- a/pages/checkout.tsx +++ b/pages/checkout.tsx @@ -4,7 +4,8 @@ import { CheckoutPage } from 'src/components/modules/checkout'; export default function Checkout() { return ( <> - + + ) } diff --git a/src/components/common/Layout/LayoutContent/LayoutContent.tsx b/src/components/common/Layout/LayoutContent/LayoutContent.tsx index 7bfddafe7..87a224366 100644 --- a/src/components/common/Layout/LayoutContent/LayoutContent.tsx +++ b/src/components/common/Layout/LayoutContent/LayoutContent.tsx @@ -1,7 +1,6 @@ import { useRouter } from 'next/router' import { FC } from 'react' import { useMessage } from 'src/components/contexts' -import { useModalCommon } from 'src/components/hooks' import { FILTER_PAGE, ROUTE } from 'src/utils/constanst.utils' import { CartDrawer, Footer, MessageCommon, ScrollToTop } from '../..' import Header from '../../Header/Header' diff --git a/src/components/common/LayoutCheckout/LayoutCheckout.tsx b/src/components/common/LayoutCheckout/LayoutCheckout.tsx index 06c632418..68490c87a 100644 --- a/src/components/common/LayoutCheckout/LayoutCheckout.tsx +++ b/src/components/common/LayoutCheckout/LayoutCheckout.tsx @@ -1,3 +1,4 @@ +import { MessageProvider } from 'src/components/contexts' import s from './LayoutCheckout.module.scss' interface Props { @@ -6,14 +7,18 @@ interface Props { const LayoutCheckout = ({ children }: Props) => { return ( -
-
{children}
-
-
- © 2021 Online Grocery + <> + +
+
{children}
+
+
+ © 2021 Online Grocery +
+
-
-
+ + ) } diff --git a/src/components/common/MessageCommon/MessageCommon.tsx b/src/components/common/MessageCommon/MessageCommon.tsx index f15f8f443..16040d963 100644 --- a/src/components/common/MessageCommon/MessageCommon.tsx +++ b/src/components/common/MessageCommon/MessageCommon.tsx @@ -1,4 +1,4 @@ -import React, { memo, useEffect } from 'react' +import React, { memo } from 'react' import s from './MessageCommon.module.scss' import MessageItem, { MessageItemProps } from './MessageItem/MessageItem' diff --git a/src/components/contexts/Message/MessageContext.tsx b/src/components/contexts/Message/MessageContext.tsx index f9399498e..fef8497c0 100644 --- a/src/components/contexts/Message/MessageContext.tsx +++ b/src/components/contexts/Message/MessageContext.tsx @@ -6,7 +6,7 @@ export type MessageContextType = { removeMessage: (id: number) => void showMessageSuccess: (content: string, timeout?: number) => void showMessageInfo: (content: string, timeout?: number) => void - showMessageError: (content: string, timeout?: number) => void + showMessageError: (content?: string, timeout?: number) => void showMessageWarning: (content: string, timeout?: number) => void } export const DEFAULT_MESSAGE_CONTEXT: MessageContextType = { diff --git a/src/components/contexts/Message/MessageProvider.tsx b/src/components/contexts/Message/MessageProvider.tsx index 0ccde8609..bf2706f5e 100644 --- a/src/components/contexts/Message/MessageProvider.tsx +++ b/src/components/contexts/Message/MessageProvider.tsx @@ -1,5 +1,6 @@ -import { ReactNode, useCallback, useState } from 'react' +import { ReactNode, useState } from 'react' import { MessageItemProps } from 'src/components/common/MessageCommon/MessageItem/MessageItem' +import { LANGUAGE } from 'src/utils/language.utils' import { MessageContext } from './MessageContext' type Props = { @@ -33,8 +34,8 @@ export function MessageProvider({ children }: Props) { createNewMessage(content, timeout, 'info') } - const showMessageError = (content: string, timeout?: number) => { - createNewMessage(content, timeout, 'error') + const showMessageError = (content?: string, timeout?: number) => { + createNewMessage(content || LANGUAGE.MESSAGE.ERROR, timeout, 'error') } const showMessageWarning = (content: string, timeout?: number) => { diff --git a/src/components/hooks/cart/useGetActiveOrder.tsx b/src/components/hooks/cart/useGetActiveOrder.tsx index 4c26a1786..c8898c222 100644 --- a/src/components/hooks/cart/useGetActiveOrder.tsx +++ b/src/components/hooks/cart/useGetActiveOrder.tsx @@ -1,4 +1,3 @@ -import { Cart } from '@commerce/types/cart' import { ActiveOrderQuery } from '@framework/schema' import { cartFragment } from '@framework/utils/fragments/cart-fragment' import { normalizeCart } from '@framework/utils/normalize' diff --git a/src/components/hooks/order/index.ts b/src/components/hooks/order/index.ts new file mode 100644 index 000000000..f644f7917 --- /dev/null +++ b/src/components/hooks/order/index.ts @@ -0,0 +1,2 @@ +export { default as useSetCustomerForOrder } from './useSetCustomerForOrder' + diff --git a/src/components/hooks/order/useSetCustomerForOrder.tsx b/src/components/hooks/order/useSetCustomerForOrder.tsx new file mode 100644 index 000000000..521c72be2 --- /dev/null +++ b/src/components/hooks/order/useSetCustomerForOrder.tsx @@ -0,0 +1,47 @@ +import { CreateCustomerInput, SetCustomerForOrderMutation } from '@framework/schema' +import { setCustomerForOrderMutation } from '@framework/utils/mutations/set-customer-order-mutation' +import { useState } from 'react' +import { CommonError } from 'src/domains/interfaces/CommonError' +import rawFetcher from 'src/utils/rawFetcher' +import { useGetActiveOrder } from '../cart' + + +const useSetCustomerForOrder = () => { + const [loading, setLoading] = useState(false) + const [error, setError] = useState(null) + const { mutate } = useGetActiveOrder() + + const setCustomerForOrder = (input: CreateCustomerInput, + fCallBack: (isSuccess: boolean, message?: string) => void + ) => { + setError(null) + setLoading(true) + rawFetcher({ + query: setCustomerForOrderMutation, + variables: {input}, + }) + .then(({ data, headers }) => { + console.log("data here: ", data) + if (data.setCustomerForOrder.__typename === 'ActiveOrderCustomerFragment') { + console.log("success: ") + + fCallBack(true) + mutate() + } else { + console.log("fail ") + + fCallBack(false, data.setCustomerForOrder.message) + } + + }) + .catch((error) => { + setError(error) + fCallBack(false, error.message) + }) + .finally(() => setLoading(false)) + } + + return { loading, setCustomerForOrder, error } +} + +export default useSetCustomerForOrder diff --git a/src/components/modules/checkout/CheckoutInfo/components/CustomerInfoForm/CustomerInfoForm.tsx b/src/components/modules/checkout/CheckoutInfo/components/CustomerInfoForm/CustomerInfoForm.tsx index 7e4715986..50c19fa30 100644 --- a/src/components/modules/checkout/CheckoutInfo/components/CustomerInfoForm/CustomerInfoForm.tsx +++ b/src/components/modules/checkout/CheckoutInfo/components/CustomerInfoForm/CustomerInfoForm.tsx @@ -2,6 +2,8 @@ import Link from 'next/link' import React, { useRef } from 'react' import { ButtonCommon, Inputcommon } from 'src/components/common' import InputCommon from 'src/components/common/InputCommon/InputCommon' +import { useMessage } from 'src/components/contexts' +import { useSetCustomerForOrder } from 'src/components/hooks/order' import { ROUTE } from 'src/utils/constanst.utils' import { CheckOutForm } from 'src/utils/types.utils' import s from './CustomerInfoForm.module.scss' @@ -13,13 +15,26 @@ interface CustomerInfoFormProps { const CustomerInfoForm = ({ id, onConfirm }: CustomerInfoFormProps) => { const nameRef = useRef>(null) const emailRef = useRef>(null) + const { setCustomerForOrder, loading } = useSetCustomerForOrder() + const { showMessageError } = useMessage() const handleConfirmClick = () => { - onConfirm && - onConfirm(id, { - name: nameRef?.current?.getValue().toString(), - email: emailRef.current?.getValue().toString(), - }) + setCustomerForOrder({ firstName: 'Ly', lastName: 'Tran', emailAddress: 'test7@gmail.com' }, onSubmitCalBack) + // onConfirm && + // onConfirm(id, { + // name: nameRef?.current?.getValue().toString(), + // email: emailRef.current?.getValue().toString(), + // }) + } + const onSubmitCalBack = (isSuccess: boolean, msg?: string) => { + // TODO: + if (isSuccess) { + + } else { + console.log("error here") + showMessageError(msg) + } + } return ( diff --git a/src/components/modules/checkout/CheckoutPage/CheckoutPage.tsx b/src/components/modules/checkout/CheckoutPage/CheckoutPage.tsx index 8cfcc31f3..4755d329e 100644 --- a/src/components/modules/checkout/CheckoutPage/CheckoutPage.tsx +++ b/src/components/modules/checkout/CheckoutPage/CheckoutPage.tsx @@ -1,5 +1,7 @@ import classNames from 'classnames' import React, { useState } from 'react' +import { MessageCommon } from 'src/components/common' +import { useMessage } from 'src/components/contexts' import IconHide from 'src/components/icons/IconHide' import { CHECKOUT_BILL_DATA } from 'src/utils/demo-data' import { CheckoutBill, CheckoutInfo } from '..' @@ -8,7 +10,9 @@ interface CheckoutPageProps { } const CheckoutPage = ({}: CheckoutPageProps) => { + const { messages, removeMessage } = useMessage() const [isShow, setIsShow] = useState(false) + const onClose = () => { setIsShow(false) } @@ -17,6 +21,7 @@ const CheckoutPage = ({}: CheckoutPageProps) => { } return (
+