Skip to content

Commit

Permalink
feat: add function to consume graphql bc through an proxy endpoint
Browse files Browse the repository at this point in the history
  • Loading branch information
bc-marco authored and CarlLiu2023 committed Jul 28, 2023
1 parent 884edd7 commit ba7e3bb
Show file tree
Hide file tree
Showing 12 changed files with 64 additions and 38 deletions.
2 changes: 2 additions & 0 deletions apps/storefront/src/components/HeadlessController.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import { createShoppingList } from '@/pages/orderDetail/components/CreateShoppin
import { addProductsToShoppingList } from '@/pages/pdp/PDP'
import { GlobaledContext } from '@/shared/global'
import { superAdminCompanies } from '@/shared/service/b2b'
import B3Request from '@/shared/service/request/b3Fetch'
import {
B3SStorage,
endMasquerade,
Expand Down Expand Up @@ -151,6 +152,7 @@ export default function HeadlessController({
}),
logInWithStorefrontToken: (customerJWTToken: string) =>
getCurrentCustomerInfo(dispatch, customerJWTToken),
graphqlBCProxy: B3Request.graphqlBCProxy,
},
shoppingList: {
addProductFromPage: () => {
Expand Down
1 change: 1 addition & 0 deletions apps/storefront/src/index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ declare interface Window {
logInWithStorefrontToken: (
customerJWTToken: string
) => Promise<{ role: number; userType: string } | undefined>
graphqlBCProxy: typeof import('@/shared/service/request/b3Fetch').default.graphqlBCProxy
}
shoppingList: {
addProductFromPage: () => void
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ export const updateB2BAccountSettings = (
export const updateBCAccountSettings = (
data: CustomFieldItems
): CustomFieldItems =>
B3Request.graphqlProxyBC({
B3Request.graphqlB2BWithBCCustomerToken({
query: updateCustomerAccountSettings(data),
})

Expand All @@ -74,6 +74,6 @@ export const getB2BAccountSettings = (
})

export const getBCAccountSettings = (): CustomFieldItems =>
B3Request.graphqlProxyBC({
B3Request.graphqlB2BWithBCCustomerToken({
query: customerAccountSettings(),
})
8 changes: 4 additions & 4 deletions apps/storefront/src/shared/service/b2b/graphql/address.ts
Original file line number Diff line number Diff line change
Expand Up @@ -269,7 +269,7 @@ export const getB2BAddressConfig = (): CustomFieldItems =>
export const getBCCustomerAddress = (
data: CustomFieldItems = {}
): CustomFieldItems =>
B3Request.graphqlProxyBC({
B3Request.graphqlB2BWithBCCustomerToken({
query: getCustomerAddress(data),
})

Expand All @@ -283,7 +283,7 @@ export const deleteB2BAddress = (
export const deleteBCCustomerAddress = (
data: CustomFieldItems = {}
): CustomFieldItems =>
B3Request.graphqlProxyBC({
B3Request.graphqlB2BWithBCCustomerToken({
query: deleteCustomerAddress(data),
})

Expand All @@ -304,12 +304,12 @@ export const createB2BAddress = (
export const createBcAddress = (
data: CustomFieldItems = {}
): CustomFieldItems =>
B3Request.graphqlProxyBC({
B3Request.graphqlB2BWithBCCustomerToken({
query: createCustomerAddress(data),
})
export const updateBcAddress = (
data: CustomFieldItems = {}
): CustomFieldItems =>
B3Request.graphqlProxyBC({
B3Request.graphqlB2BWithBCCustomerToken({
query: updateCustomerAddress(data),
})
2 changes: 1 addition & 1 deletion apps/storefront/src/shared/service/b2b/graphql/global.ts
Original file line number Diff line number Diff line change
Expand Up @@ -232,7 +232,7 @@ export const getCurrencies = (channelId: string | number): CustomFieldItems =>
query: currencies(channelId),
})
export const getBcCurrencies = (channelId: string): CustomFieldItems =>
B3Request.graphqlProxyBC({
B3Request.graphqlB2BWithBCCustomerToken({
query: currencies(channelId),
})

Expand Down
6 changes: 3 additions & 3 deletions apps/storefront/src/shared/service/b2b/graphql/orders.ts
Original file line number Diff line number Diff line change
Expand Up @@ -198,7 +198,7 @@ export const getB2BAllOrders = (data: CustomFieldItems): CustomFieldItems =>
})

export const getBCAllOrders = (data: CustomFieldItems): CustomFieldItems =>
B3Request.graphqlProxyBC({
B3Request.graphqlB2BWithBCCustomerToken({
query: allOrders(data, 'customerOrders'),
})

Expand All @@ -208,7 +208,7 @@ export const getB2BOrderDetails = (id: number): CustomFieldItems =>
})

export const getBCOrderDetails = (id: number): CustomFieldItems =>
B3Request.graphqlProxyBC({
B3Request.graphqlB2BWithBCCustomerToken({
query: orderDetail(id, 'customerOrder'),
})

Expand All @@ -218,7 +218,7 @@ export const getOrderStatusType = (): CustomFieldItems =>
})

export const getBcOrderStatusType = (): CustomFieldItems =>
B3Request.graphqlProxyBC({
B3Request.graphqlB2BWithBCCustomerToken({
query: getOrderStatusTypeQl('bcOrderStatuses'),
})

Expand Down
6 changes: 3 additions & 3 deletions apps/storefront/src/shared/service/b2b/graphql/product.ts
Original file line number Diff line number Diff line change
Expand Up @@ -134,14 +134,14 @@ export const searchB2BProducts = (
export const searchBcProducts = (
data: CustomFieldItems = {}
): CustomFieldItems =>
B3Request.graphqlProxyBC({
B3Request.graphqlB2BWithBCCustomerToken({
query: searchProducts(data),
})

export const getBcVariantInfoBySkus = (
data: CustomFieldItems = {}
): CustomFieldItems =>
B3Request.graphqlProxyBC({
B3Request.graphqlB2BWithBCCustomerToken({
query: getVariantInfoBySkus(data),
})

Expand All @@ -155,7 +155,7 @@ export const B2BProductsBulkUploadCSV = (
export const BcProductsBulkUploadCSV = (
data: CustomFieldItems = {}
): CustomFieldItems =>
B3Request.graphqlProxyBC({
B3Request.graphqlB2BWithBCCustomerToken({
query: productsBulkUploadCSV(data),
})

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,6 @@ export const getOrderedProducts = (data: CustomFieldItems): CustomFieldItems =>
export const getBcOrderedProducts = (
data: CustomFieldItems
): CustomFieldItems =>
B3Request.graphqlProxyBC({
B3Request.graphqlB2BWithBCCustomerToken({
query: orderedProducts(data),
})
18 changes: 9 additions & 9 deletions apps/storefront/src/shared/service/b2b/graphql/quote.ts
Original file line number Diff line number Diff line change
Expand Up @@ -345,7 +345,7 @@ const getCreatedByUser = (companyId: number, module: number, fn: string) => `{
}`

export const getBCCustomerAddresses = (): CustomFieldItems =>
B3Request.graphqlProxyBC({
B3Request.graphqlB2BWithBCCustomerToken({
query: getCustomerAddresses(),
})

Expand All @@ -360,7 +360,7 @@ export const getB2BQuotesList = (data: CustomFieldItems): CustomFieldItems =>
})

export const getBCQuotesList = (data: CustomFieldItems): CustomFieldItems =>
B3Request.graphqlProxyBC({
B3Request.graphqlB2BWithBCCustomerToken({
query: getQuotesList(data, 'bc'),
})

Expand All @@ -373,7 +373,7 @@ export const createQuote = (data: CustomFieldItems): CustomFieldItems =>
)

export const createBCQuote = (data: CustomFieldItems): CustomFieldItems =>
B3Request.graphqlProxyBC(
B3Request.graphqlB2BWithBCCustomerToken(
{
query: quoteCreate(data),
},
Expand All @@ -386,7 +386,7 @@ export const updateB2BQuote = (data: CustomFieldItems): CustomFieldItems =>
})

export const updateBCQuote = (data: CustomFieldItems): CustomFieldItems =>
B3Request.graphqlProxyBC({
B3Request.graphqlB2BWithBCCustomerToken({
query: quoteUpdate(data),
})

Expand All @@ -402,7 +402,7 @@ export const getBcQuoteDetail = (data: {
id: number
date: string
}): CustomFieldItems =>
B3Request.graphqlProxyBC({
B3Request.graphqlB2BWithBCCustomerToken({
query: getQuoteInfo(data),
})

Expand All @@ -418,7 +418,7 @@ export const exportBcQuotePdf = (data: {
quoteId: number
currency: object
}): CustomFieldItems =>
B3Request.graphqlProxyBC({
B3Request.graphqlB2BWithBCCustomerToken({
query: exportQuotePdf(data),
})

Expand All @@ -428,21 +428,21 @@ export const b2bQuoteCheckout = (data: { id: number }): CustomFieldItems =>
})

export const bcQuoteCheckout = (data: { id: number }): CustomFieldItems =>
B3Request.graphqlProxyBC({
B3Request.graphqlB2BWithBCCustomerToken({
query: quoteCheckout(data),
})

export const quoteDetailAttachFileCreate = (
data: CustomFieldItems
): CustomFieldItems =>
B3Request.graphqlProxyBC({
B3Request.graphqlB2BWithBCCustomerToken({
query: quoteAttachFileCreate(data),
})

export const quoteDetailAttachFileDelete = (
data: CustomFieldItems
): CustomFieldItems =>
B3Request.graphqlProxyBC({
B3Request.graphqlB2BWithBCCustomerToken({
query: quoteAttachFileDelete(data),
})

Expand Down
18 changes: 9 additions & 9 deletions apps/storefront/src/shared/service/b2b/graphql/shoppingList.ts
Original file line number Diff line number Diff line change
Expand Up @@ -481,14 +481,14 @@ export const deleteB2BShoppingListItem = (
export const getBcShoppingList = (
data: CustomFieldItems = {}
): CustomFieldItems =>
B3Request.graphqlProxyBC({
B3Request.graphqlB2BWithBCCustomerToken({
query: getCustomerShoppingLists(data),
})

export const createBcShoppingList = (
data: CustomFieldItems = {}
): CustomFieldItems =>
B3Request.graphqlProxyBC({
B3Request.graphqlB2BWithBCCustomerToken({
query: createOrUpdateCustomerShoppingList(
'customerShoppingListsCreate',
data
Expand All @@ -498,7 +498,7 @@ export const createBcShoppingList = (
export const updateBcShoppingList = (
data: CustomFieldItems = {}
): CustomFieldItems =>
B3Request.graphqlProxyBC({
B3Request.graphqlB2BWithBCCustomerToken({
query: createOrUpdateCustomerShoppingList(
'customerShoppingListsUpdate',
data
Expand All @@ -508,43 +508,43 @@ export const updateBcShoppingList = (
export const duplicateBcShoppingList = (
data: CustomFieldItems = {}
): CustomFieldItems =>
B3Request.graphqlProxyBC({
B3Request.graphqlB2BWithBCCustomerToken({
query: createOrUpdateCustomerShoppingList(
'customerShoppingListsDuplicate',
data
),
})

export const deleteBcShoppingList = (id: number): CustomFieldItems =>
B3Request.graphqlProxyBC({
B3Request.graphqlB2BWithBCCustomerToken({
query: deleteCustomerShoppingList(id),
})

export const getBcShoppingListDetails = (
data: CustomFieldItems = {}
): CustomFieldItems =>
B3Request.graphqlProxyBC({
B3Request.graphqlB2BWithBCCustomerToken({
query: getCustomerShoppingListDetails(data),
})

export const addProductToBcShoppingList = (
data: CustomFieldItems = {}
): CustomFieldItems =>
B3Request.graphqlProxyBC({
B3Request.graphqlB2BWithBCCustomerToken({
query: addItemsToBcShoppingList(data),
})

export const updateBcShoppingListsItem = (
data: CustomFieldItems = {}
): CustomFieldItems =>
B3Request.graphqlProxyBC({
B3Request.graphqlB2BWithBCCustomerToken({
query: updateCustomerShoppingListsItem(data),
})

export const deleteBcShoppingListItem = (
data: CustomFieldItems = {}
): CustomFieldItems =>
B3Request.graphqlProxyBC({
B3Request.graphqlB2BWithBCCustomerToken({
query: deleteCustomerShoppingListItem(data),
})

Expand Down
34 changes: 28 additions & 6 deletions apps/storefront/src/shared/service/request/b3Fetch.ts
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,12 @@ interface Config {
}
}

const GraphqlEndpoints = {
B2BGraphql: `${B2B_BASIC_URL}/graphql`,
BCGraphql: `${bcBaseUrl}/graphql`,
BCProxyGraphql: `${B2B_BASIC_URL}/api/v3/proxy/bc-storefront/graphql`,
} as const

function request<T>(path: string, config?: T & Config, type?: string) {
const url = RequestType.B2BRest === type ? `${B2B_BASIC_URL}${path}` : path
const getToken =
Expand Down Expand Up @@ -69,7 +75,7 @@ function request<T>(path: string, config?: T & Config, type?: string) {
}

function graphqlRequest<T, Y>(
type: string,
type: keyof typeof GraphqlEndpoints,
data: T,
config?: Y,
customMessage = false
Expand All @@ -83,21 +89,24 @@ function graphqlRequest<T, Y>(
body: JSON.stringify(data),
}

const graphqlB2BUrl = `${B2B_BASIC_URL}/graphql`

const url =
type === RequestType.B2BGraphql ? graphqlB2BUrl : `${bcBaseUrl}/graphql`
const url = GraphqlEndpoints[type]
return b3Fetch(url, init, type, customMessage)
}

const B3Request = {
/**
* Request to B2B graphql API using B2B token
*/
graphqlB2B: function post<T>(data: T, customMessage = false): Promise<any> {
const config = {
Authorization: `Bearer ${B3SStorage.get('B3B2BToken') || ''}`,
}
return graphqlRequest(RequestType.B2BGraphql, data, config, customMessage)
},
graphqlProxyBC: function post<T>(
/**
* Request to B2B graphql API using BC customer token
*/
graphqlB2BWithBCCustomerToken: function post<T>(
data: T,
customMessage = false
): Promise<any> {
Expand All @@ -108,12 +117,25 @@ const B3Request = {
}
return graphqlRequest(RequestType.B2BGraphql, data, config, customMessage)
},
/**
* @deprecated use {@link B3Request.graphqlBCProxy} instead
* Request to BC graphql API using BC graphql token
*/
graphqlBC: function post<T>(data: T): Promise<any> {
const config = {
Authorization: `Bearer ${B3SStorage.get('bcGraphqlToken') || ''}`,
}
return graphqlRequest(RequestType.BCGraphql, data, config)
},
/**
* Request to BC graphql API using B2B token
*/
graphqlBCProxy: function post<T>(data: T): Promise<any> {
const config = {
Authorization: `Bearer ${B3SStorage.get('B3B2BToken') || ''}`,
}
return graphqlRequest(RequestType.BCProxyGraphql, data, config)
},
get: function get<T, Y>(
url: string,
type: string,
Expand Down
1 change: 1 addition & 0 deletions apps/storefront/src/shared/service/request/base.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ const B2B_BASIC_URL = VITE_B2B_URL
enum RequestType {
B2BGraphql = 'B2BGraphql',
BCGraphql = 'BCGraphql',
BCProxyGraphql = 'BCProxyGraphql',
B2BRest = 'B2BRest',
BCRest = 'BCRest',
}
Expand Down

0 comments on commit ba7e3bb

Please sign in to comment.