Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

Context implementation #5218

Merged
merged 17 commits into from Nov 25, 2020
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
3 changes: 3 additions & 0 deletions packages/commercetools/api-client/src/api/addToCart/index.ts
Expand Up @@ -2,14 +2,17 @@ import updateCart from './../updateCart';
import { CartResponse, CustomQueryFn } from './../../types/Api';
import { Cart, ProductVariant } from './../../types/GraphQL';
import { createAddLineItemAction } from './../../helpers/cart/actions';
import { Config } from './../../types/setup';

const addToCart = async (
settings: Config,
{ id, version }: Cart,
product: ProductVariant,
quantity: number,
customQuery?: CustomQueryFn
): Promise<CartResponse> => {
return await updateCart(
settings,
{
id,
version,
Expand Down
Expand Up @@ -2,13 +2,15 @@ import updateCart from '../updateCart';
import { CartResponse, CustomQueryFn } from '../../types/Api';
import { Cart } from '../../types/GraphQL';
import { addDiscountCodeAction } from '../../helpers/cart/actions';
import { Config } from './../../types/setup';

const applyCartCoupon = async (
settings: Config,
cart: Cart,
discountCode: string,
customQuery?: CustomQueryFn
): Promise<CartResponse> => {
return await updateCart({
return await updateCart(settings, {
id: cart.id,
version: cart.version,
actions: [addDiscountCodeAction(discountCode)]
Expand Down
7 changes: 4 additions & 3 deletions packages/commercetools/api-client/src/api/createCart/index.ts
@@ -1,15 +1,16 @@
import { CartDraft } from '../../types/GraphQL';
import { CustomQueryFn, getSettings } from '../../index';
import { CustomQueryFn } from '../../index';
import { getCustomQuery } from '../../helpers/queries';
import defaultQuery from './defaultMutation';
import gql from 'graphql-tag';
import { Config } from './../../types/setup';

interface CartData extends Omit<CartDraft, 'currency'> {
currency?: string;
}

const createCart = async (cartDraft: CartData = {}, customQueryFn?: CustomQueryFn) => {
const { locale, acceptLanguage, currency, client } = getSettings();
const createCart = async (settings: Config, cartDraft: CartData = {}, customQueryFn?: CustomQueryFn) => {
const { locale, acceptLanguage, currency, client } = settings;

const defaultVariables = {
acceptLanguage,
Expand Down
@@ -1,11 +1,12 @@
import { OrderMyCartCommand } from '../../types/GraphQL';
import { getCustomQuery, CustomQueryFn, getSettings } from '../../index';
import { getCustomQuery, CustomQueryFn } from '../../index';
import CreateMyOrderFromCartMutation from './defaultMutation';
import { OrderMutationResponse } from '../../types/Api';
import gql from 'graphql-tag';
import { Config } from './../../types/setup';

const createMyOrderFromCart = async (draft: OrderMyCartCommand, customQueryFn?: CustomQueryFn): Promise<OrderMutationResponse> => {
const { locale, acceptLanguage, client } = getSettings();
const createMyOrderFromCart = async (settings: Config, draft: OrderMyCartCommand, customQueryFn?: CustomQueryFn): Promise<OrderMutationResponse> => {
const { locale, acceptLanguage, client } = settings;
const defaultVariables = { locale,
acceptLanguage,
draft
Expand Down
@@ -1,9 +1,9 @@
import { getSettings } from '../../index';
import CustomerChangeMyPassword from './defaultMutation';
import { ChangeMyPasswordResponse } from '../../types/Api';
import { Config } from './../../types/setup';

const customerChangeMyPassword = async (version: any, currentPassword: string, newPassword: string): Promise<ChangeMyPasswordResponse> => {
const { client } = getSettings();
const customerChangeMyPassword = async (settings: Config, version: any, currentPassword: string, newPassword: string): Promise<ChangeMyPasswordResponse> => {
const { client } = settings;
return await client.mutate({
mutation: CustomerChangeMyPassword,
variables: {
Expand Down
@@ -1,19 +1,19 @@
import { CustomerSignMeInDraft } from '../../types/GraphQL';
import { getSettings } from '../../index';
import CustomerSignMeInMutation from './defaultMutation';
import { SignInResponse } from './../../types/Api';
import createAccessToken from './../../helpers/createAccessToken';
import { Config } from './../../types/setup';

const customerSignMeIn = async (draft: CustomerSignMeInDraft): Promise<SignInResponse> => {
const { locale, acceptLanguage, currentToken, auth, client } = getSettings();
const customerSignMeIn = async (settings: Config, draft: CustomerSignMeInDraft): Promise<SignInResponse> => {
const { locale, acceptLanguage, currentToken, auth, client } = settings;
const loginResponse = await client.mutate({
mutation: CustomerSignMeInMutation,
variables: { draft, locale, acceptLanguage },
fetchPolicy: 'no-cache'
}) as SignInResponse;

const customerCredentials = { username: draft.email, password: draft.password };
const token = await createAccessToken({ currentToken, customerCredentials });
const token = await createAccessToken(settings, { currentToken, customerCredentials });
auth.onTokenChange(token);

return loginResponse;
Expand Down
@@ -1,19 +1,19 @@
import { CustomerSignMeUpDraft } from '../../types/GraphQL';
import { getSettings } from '../../index';
import CustomerSignMeUpMutation from './defaultMutation';
import { SignInResponse } from '../../types/Api';
import createAccessToken from '../../helpers/createAccessToken';
import { Config } from './../../types/setup';

const customerSignMeUp = async (draft: CustomerSignMeUpDraft): Promise<SignInResponse> => {
const { locale, acceptLanguage, currentToken, auth, client } = getSettings();
const customerSignMeUp = async (settings: Config, draft: CustomerSignMeUpDraft): Promise<SignInResponse> => {
const { locale, acceptLanguage, currentToken, auth, client } = settings;
const registerResponse = await client.mutate({
mutation: CustomerSignMeUpMutation,
variables: { draft, locale, acceptLanguage },
fetchPolicy: 'no-cache'
}) as SignInResponse;

const customerCredentials = { username: draft.email, password: draft.password };
const token = await createAccessToken({ currentToken, customerCredentials });
const token = await createAccessToken(settings, { currentToken, customerCredentials });
auth.onTokenChange(token);

return registerResponse;
Expand Down
@@ -1,7 +1,7 @@
import { getSettings } from './../../index';
import { Config } from './../../types/setup';

const customerSignOut = async (): Promise<void> => {
const { auth } = getSettings();
const customerSignOut = async (settings: Config): Promise<void> => {
const { auth } = settings;
auth.onTokenRemove();
};

Expand Down
@@ -1,9 +1,9 @@
import { changeCustomerEmailAction, setCustomerFirstNameAction, setCustomerLastNameAction } from '../../helpers/customer';
import { getSettings } from '../../index';
import CustomerUpdateMeMutation from './defaultMutation';
import { Config } from './../../types/setup';

const customerUpdateMe = async (currentUser, updatedUserData) => {
const { client } = getSettings();
const customerUpdateMe = async (settings: Config, currentUser, updatedUserData) => {
const { client } = settings;
const updateResponse = await client.mutate({
mutation: CustomerUpdateMeMutation,
variables: {
Expand Down
6 changes: 3 additions & 3 deletions packages/commercetools/api-client/src/api/getCart/index.ts
@@ -1,9 +1,9 @@
import { getSettings } from '../../index';
import { CartQueryResponse } from '../../types/Api';
import defaultQuery from './defaultQuery';
import { Config } from './../../types/setup';

const getCart = async (cartId: string): Promise<CartQueryResponse> => {
const { locale, acceptLanguage, client } = getSettings();
const getCart = async (settings: Config, cartId: string): Promise<CartQueryResponse> => {
const { locale, acceptLanguage, client } = settings;
return await client.query({
query: defaultQuery,
variables: { cartId,
Expand Down
@@ -1,18 +1,19 @@
import gql from 'graphql-tag';
import defaultQuery from './defaultQuery';
import { CategoryQueryResult } from '../../types/GraphQL';
import { CustomQueryFn, getSettings } from '../../index';
import { CustomQueryFn } from '../../index';
import { buildCategoryWhere } from '../../helpers/search';
import { getCustomQuery } from '../../helpers/queries';
import { Config } from './../../types/setup';

interface CategoryData {
categories: CategoryQueryResult;
}

const getCategory = async (params, customQueryFn?: CustomQueryFn) => {
const { acceptLanguage, client } = getSettings();
const getCategory = async (settings: Config, params, customQueryFn?: CustomQueryFn) => {
const { acceptLanguage, client } = settings;
const defaultVariables = params ? {
where: buildCategoryWhere(params),
where: buildCategoryWhere(settings, params),
limit: params.limit,
offset: params.offset,
acceptLanguage
Expand Down
7 changes: 4 additions & 3 deletions packages/commercetools/api-client/src/api/getMe/index.ts
@@ -1,7 +1,8 @@
import { CustomQueryFn, getSettings } from '../../index';
import { CustomQueryFn } from '../../index';
import { basicProfile, fullProfile } from './defaultQuery';
import gql from 'graphql-tag';
import { getCustomQuery } from '../../helpers/queries';
import { Config } from './../../types/setup';

interface Options {
customer?: boolean;
Expand All @@ -12,8 +13,8 @@ interface OrdersData {
me: any;
}

const getMe = async (params: Options = {}, customQueryFn?: CustomQueryFn) => {
const { locale, acceptLanguage, client } = getSettings();
const getMe = async (settings: Config, params: Options = {}, customQueryFn?: CustomQueryFn) => {
const { locale, acceptLanguage, client } = settings;

const { customer }: Options = params;
const defaultQuery = customer ? fullProfile : basicProfile;
Expand Down
@@ -1,15 +1,16 @@
import { CustomQueryFn, getSettings, MeQueryInterface } from '../../index';
import { CustomQueryFn, MeQueryInterface } from '../../index';
import defaultQuery from './defaultQuery';
import { buildOrderWhere } from '../../helpers/search';
import gql from 'graphql-tag';
import { getCustomQuery } from '../../helpers/queries';
import { Config } from './../../types/setup';

interface OrdersData {
me: Pick<MeQueryInterface, 'orders'>;
}

const getOrders = async (params, customQueryFn?: CustomQueryFn) => {
const { locale, acceptLanguage, client } = getSettings();
const getOrders = async (settings: Config, params, customQueryFn?: CustomQueryFn) => {
const { locale, acceptLanguage, client } = settings;
const defaultVariables = {
where: buildOrderWhere(params),
sort: params.sort,
Expand Down
9 changes: 5 additions & 4 deletions packages/commercetools/api-client/src/api/getProduct/index.ts
@@ -1,18 +1,19 @@
import gql from 'graphql-tag';
import { CustomQueryFn, getSettings } from '../../index';
import { CustomQueryFn } from '../../index';
import { ProductQueryResult } from '../../types/GraphQL';
import defaultQuery from './defaultQuery';
import { buildProductWhere } from '../../helpers/search';
import { getCustomQuery } from '../../helpers/queries';
import { Config } from './../../types/setup';

export interface ProductData {
products: ProductQueryResult;
}

const getProduct = async (params, customQueryFn?: CustomQueryFn) => {
const { locale, acceptLanguage, currency, country, client } = getSettings();
const getProduct = async (settings: Config, params, customQueryFn?: CustomQueryFn) => {
const { locale, acceptLanguage, currency, country, client } = settings;
const defaultVariables = {
where: buildProductWhere(params),
where: buildProductWhere(settings, params),
skus: params.skus,
limit: params.limit,
offset: params.offset,
Expand Down
@@ -1,14 +1,15 @@
import { CustomQueryFn, getCustomQuery, getSettings } from '../../index';
import { CustomQueryFn, getCustomQuery } from '../../index';
import defaultQuery from './defaultQuery';
import { ShippingMethod } from '../../types/GraphQL';
import gql from 'graphql-tag';
import { Config } from './../../types/setup';

interface ShippingMethodData {
shippingMethods: ShippingMethod[];
}

const getShippingMethods = async (cartId?: string, customQueryFn?: CustomQueryFn) => {
const { acceptLanguage, client } = getSettings();
const getShippingMethods = async (settings: Config, cartId?: string, customQueryFn?: CustomQueryFn) => {
const { acceptLanguage, client } = settings;
const defaultVariables = {
acceptLanguage, cartId
};
Expand Down
Expand Up @@ -2,13 +2,15 @@ import updateCart from '../updateCart';
import { CartResponse, CustomQueryFn } from '../../types/Api';
import { Cart, ReferenceInput } from '../../types/GraphQL';
import { removeDiscountCodeAction } from '../../helpers/cart/actions';
import { Config } from './../../types/setup';

const removeCartCoupon = async (
settings: Config,
cart: Cart,
discountCode: ReferenceInput,
customQuery?: CustomQueryFn
): Promise<CartResponse> => {
return await updateCart({
return await updateCart(settings, {
id: cart.id,
version: cart.version,
actions: [removeDiscountCodeAction(discountCode)]
Expand Down
Expand Up @@ -2,9 +2,11 @@ import updateCart from './../updateCart';
import { CartResponse, CustomQueryFn } from './../../types/Api';
import { Cart, LineItem } from './../../types/GraphQL';
import { createRemoveLineItemAction } from './../../helpers/cart/actions';
import { Config } from './../../types/setup';

const removeFromCart = async (cart: Cart, product: LineItem, customQuery?: CustomQueryFn): Promise<CartResponse> => {
const removeFromCart = async (settings: Config, cart: Cart, product: LineItem, customQuery?: CustomQueryFn): Promise<CartResponse> => {
return await updateCart(
settings,
{
id: cart.id,
version: cart.version,
Expand Down
6 changes: 3 additions & 3 deletions packages/commercetools/api-client/src/api/updateCart/index.ts
@@ -1,18 +1,18 @@
import { CartUpdateAction, MyCartUpdateAction } from '../../types/GraphQL';
import { getSettings } from '../../index';
import { CustomQueryFn } from './../../types/Api';
import defaultQuery from './defaultMutation';
import gql from 'graphql-tag';
import { getCustomQuery } from './../../helpers/queries';
import { Config } from './../../types/setup';

interface UpdateCart {
id: string;
version: number;
actions: CartUpdateAction[] | MyCartUpdateAction[];
}

const updateCart = async (params: UpdateCart, customQueryFn?: CustomQueryFn) => {
const { locale, acceptLanguage, client } = getSettings();
const updateCart = async (settings: Config, params: UpdateCart, customQueryFn?: CustomQueryFn) => {
const { locale, acceptLanguage, client } = settings;
const defaultVariables = params
? {
locale,
Expand Down
Expand Up @@ -2,13 +2,16 @@ import updateCart from '../updateCart';
import { CartResponse, CustomQueryFn } from '../../types/Api';
import { Cart, LineItem } from '../../types/GraphQL';
import { createChangeLineItemQuantityAction } from '../../helpers/cart/actions';
import { Config } from './../../types/setup';

const updateCartQuantity = async (
settings: Config,
cart: Cart,
product: LineItem,
customQuery?: CustomQueryFn
): Promise<CartResponse> => {
return await updateCart(
settings,
{
id: cart.id,
version: cart.version,
Expand Down
Expand Up @@ -2,9 +2,10 @@ import updateCart from '../updateCart';
import { CartResponse, CustomQueryFn } from '../../types/Api';
import { Cart, Address } from '../../types/GraphQL';
import { setShippingAddressAction } from '../../helpers/cart/actions';
import { Config } from './../../types/setup';

const updateShippingDetails = async (cart: Cart, shippingDetails: Address, customQueryFn?: CustomQueryFn): Promise<CartResponse> => {
const cartResponse = await updateCart({
const updateShippingDetails = async (settings: Config, cart: Cart, shippingDetails: Address, customQueryFn?: CustomQueryFn): Promise<CartResponse> => {
const cartResponse = await updateCart(settings, {
id: cart.id,
version: cart.version,
actions: [setShippingAddressAction(shippingDetails)]
Expand Down