mirror of
https://github.com/vercel/commerce.git
synced 2025-05-17 23:16:59 +00:00
131 lines
3.3 KiB
TypeScript
131 lines
3.3 KiB
TypeScript
import useAddItem, { UseAddItem } from '@commerce/customer/address/use-add-item'
|
|
import { MutationHook } from '@commerce/utils/types'
|
|
import epClient from '../../utils/ep-client';
|
|
import { getCookies, setCookie, deleteCookie, getCookie } from 'cookies-next';
|
|
import useAddresses from './use-addresses';
|
|
import { useCallback } from 'react'
|
|
import { gateway as MoltinGateway} from '@moltin/sdk';
|
|
import { MoltinClient } from '@moltin/request';
|
|
import axios from "axios";
|
|
import useCart from '@framework/cart/use-cart';
|
|
import cart from 'pages/api/cart';
|
|
|
|
|
|
|
|
const Moltin = MoltinGateway({
|
|
client_id: process.env.NEXT_PUBLIC_ELASTICPATH_CLIENTID,
|
|
})
|
|
|
|
|
|
export default useAddItem as UseAddItem<typeof handler>
|
|
|
|
const customerCookies = getCookie('user_token') ;
|
|
const customer_token = customerCookies && JSON.parse(customerCookies.toString());
|
|
console.log("customer token in add address", customer_token);
|
|
const cartId = getCookie('cartId');
|
|
|
|
|
|
|
|
|
|
export const handler: MutationHook<any> = {
|
|
|
|
fetchOptions: {
|
|
query: '',
|
|
},
|
|
async fetcher({ input, options, fetch }) {
|
|
console.log(cartId , " for shipping and tax") ;
|
|
console.log("inside add address code " , input);
|
|
// console.log(address , "address for ep");
|
|
// Moltin.Addresses.Create({
|
|
// customer: customer_token.customer_id,
|
|
// body: {type : 'address' , ...address},
|
|
// token: customer_token.token
|
|
// }).then((address: any) => {
|
|
// console.log("address added in ep" , address );
|
|
// })
|
|
|
|
axios({
|
|
url: 'http://localhost:3000/events/store/get-tax',
|
|
method: 'POST',
|
|
data: {
|
|
payload:{
|
|
data:{
|
|
cartId:cartId?.toString(),
|
|
shipping_address: {
|
|
first_name: input.firstName,
|
|
last_name: input.lastName,
|
|
company_name: input.company,
|
|
phone_number: "(555) 555-1234",
|
|
line_1: input.apartments,
|
|
city: input.city,
|
|
postcode: input.zipCode,
|
|
county : "NJ",
|
|
country: "Us",
|
|
instructions: "Leave in porch"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
})
|
|
.then(function (response) {
|
|
console.log(response);
|
|
return response
|
|
})
|
|
.catch(function (error) {
|
|
console.log(error);
|
|
})
|
|
|
|
|
|
|
|
///shipping rates
|
|
|
|
axios({
|
|
url: 'http://localhost:3000/events/store/shipping-added',
|
|
method: 'POST',
|
|
data: {
|
|
payload:{
|
|
data:{
|
|
cartId:cartId?.toString(),
|
|
shipping_address: {
|
|
first_name: input.firstName,
|
|
last_name: input.lastName,
|
|
company_name: input.company,
|
|
phone_number: "(555) 555-1234",
|
|
line_1: input.apartments,
|
|
city: input.city,
|
|
postcode: input.zipCode,
|
|
county : "NJ",
|
|
country: "Us",
|
|
instructions: "Leave in porch"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
})
|
|
.then(function (response) {
|
|
console.log(response);
|
|
return response
|
|
})
|
|
.catch(function (error) {
|
|
console.log(error);
|
|
})
|
|
|
|
const data = input;
|
|
return data ;
|
|
|
|
},
|
|
useHook: ({ fetch }) => () => {
|
|
const { mutate } = useAddresses()
|
|
|
|
return useCallback(
|
|
async function addItem(input) {
|
|
|
|
const data = await fetch({ input })
|
|
const addressData = data ;
|
|
await mutate(addressData, true)
|
|
return addressData
|
|
},
|
|
[fetch, mutate]
|
|
)
|
|
},
|
|
} |