add new swap url
This commit is contained in:
parent
ea8ab3bc0e
commit
bedc864717
|
@ -38,6 +38,7 @@ import useJupiterSwapData from './useJupiterSwapData'
|
||||||
// import { Transaction } from '@solana/web3.js'
|
// import { Transaction } from '@solana/web3.js'
|
||||||
import {
|
import {
|
||||||
JUPITER_V6_QUOTE_API_MAINNET,
|
JUPITER_V6_QUOTE_API_MAINNET,
|
||||||
|
MANGO_ROUTER_API_URL,
|
||||||
SOUND_SETTINGS_KEY,
|
SOUND_SETTINGS_KEY,
|
||||||
} from 'utils/constants'
|
} from 'utils/constants'
|
||||||
import useLocalStorageState from 'hooks/useLocalStorageState'
|
import useLocalStorageState from 'hooks/useLocalStorageState'
|
||||||
|
@ -216,23 +217,29 @@ export const fetchJupiterTransaction = async (
|
||||||
slippage: number,
|
slippage: number,
|
||||||
inputMint: PublicKey,
|
inputMint: PublicKey,
|
||||||
outputMint: PublicKey,
|
outputMint: PublicKey,
|
||||||
|
origin?: 'mango' | 'jupiter' | 'raydium',
|
||||||
): Promise<[TransactionInstruction[], AddressLookupTableAccount[]]> => {
|
): Promise<[TransactionInstruction[], AddressLookupTableAccount[]]> => {
|
||||||
// docs https://station.jup.ag/api-v6/post-swap
|
// docs https://station.jup.ag/api-v6/post-swap
|
||||||
const transactions = await (
|
const transactions = await (
|
||||||
await fetch(`${JUPITER_V6_QUOTE_API_MAINNET}/swap`, {
|
await fetch(
|
||||||
method: 'POST',
|
`${
|
||||||
headers: {
|
origin === 'mango' ? MANGO_ROUTER_API_URL : JUPITER_V6_QUOTE_API_MAINNET
|
||||||
'Content-Type': 'application/json',
|
}/swap`,
|
||||||
|
{
|
||||||
|
method: 'POST',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
},
|
||||||
|
body: JSON.stringify({
|
||||||
|
// response from /quote api
|
||||||
|
quoteResponse: selectedRoute,
|
||||||
|
// user public key to be used for the swap
|
||||||
|
userPublicKey,
|
||||||
|
slippageBps: Math.ceil(slippage * 100),
|
||||||
|
wrapAndUnwrapSol: false,
|
||||||
|
}),
|
||||||
},
|
},
|
||||||
body: JSON.stringify({
|
)
|
||||||
// response from /quote api
|
|
||||||
quoteResponse: selectedRoute,
|
|
||||||
// user public key to be used for the swap
|
|
||||||
userPublicKey,
|
|
||||||
slippageBps: Math.ceil(slippage * 100),
|
|
||||||
wrapAndUnwrapSol: false,
|
|
||||||
}),
|
|
||||||
})
|
|
||||||
).json()
|
).json()
|
||||||
|
|
||||||
const { swapTransaction } = transactions
|
const { swapTransaction } = transactions
|
||||||
|
@ -451,6 +458,7 @@ const SwapReviewRouteInfo = ({
|
||||||
slippage,
|
slippage,
|
||||||
inputBank.mint,
|
inputBank.mint,
|
||||||
outputBank.mint,
|
outputBank.mint,
|
||||||
|
selectedRoute.origin,
|
||||||
)
|
)
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -110,6 +110,7 @@ const fetchJupiterRoute = async (
|
||||||
slippage,
|
slippage,
|
||||||
new PublicKey(inputMint),
|
new PublicKey(inputMint),
|
||||||
new PublicKey(outputMint),
|
new PublicKey(outputMint),
|
||||||
|
'jupiter',
|
||||||
)
|
)
|
||||||
|
|
||||||
if (
|
if (
|
||||||
|
@ -236,9 +237,10 @@ const fetchMangoRoute = async (
|
||||||
throw 'No route found'
|
throw 'No route found'
|
||||||
}
|
}
|
||||||
const res = await response.json()
|
const res = await response.json()
|
||||||
|
|
||||||
if (res.outAmount) {
|
if (res.outAmount) {
|
||||||
resolve({
|
resolve({
|
||||||
bestRoute: res,
|
bestRoute: { ...res, origin: 'mango' },
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
reject('No route found')
|
reject('No route found')
|
||||||
|
@ -378,7 +380,6 @@ export async function handleGetRoutes(
|
||||||
wallet,
|
wallet,
|
||||||
sendAnalytics,
|
sendAnalytics,
|
||||||
)
|
)
|
||||||
|
|
||||||
routes.push(jupiterDirectRoute)
|
routes.push(jupiterDirectRoute)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -278,6 +278,7 @@ export default function SpotMarketOrderSwapForm() {
|
||||||
slippage,
|
slippage,
|
||||||
inputBank.mint,
|
inputBank.mint,
|
||||||
outputBank.mint,
|
outputBank.mint,
|
||||||
|
selectedRoute.origin,
|
||||||
)
|
)
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -2,21 +2,34 @@ import useMangoAccount from './useMangoAccount'
|
||||||
import { useWallet } from '@solana/wallet-adapter-react'
|
import { useWallet } from '@solana/wallet-adapter-react'
|
||||||
import { WHITE_LIST_API } from 'utils/constants'
|
import { WHITE_LIST_API } from 'utils/constants'
|
||||||
import useMangoGroup from './useMangoGroup'
|
import useMangoGroup from './useMangoGroup'
|
||||||
import { PublicKey } from '@metaplex-foundation/js'
|
import { useCallback, useMemo } from 'react'
|
||||||
import { useCallback } from 'react'
|
|
||||||
|
|
||||||
export default function useAnalytics() {
|
export default function useAnalytics() {
|
||||||
const { group } = useMangoGroup()
|
const { group } = useMangoGroup()
|
||||||
const { mangoAccountAddress, mangoAccount } = useMangoAccount()
|
const { mangoAccountAddress, mangoAccount } = useMangoAccount()
|
||||||
const { publicKey } = useWallet()
|
const { publicKey } = useWallet()
|
||||||
const analyticsTokenBank = group?.getFirstBankByMint(
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||||
new PublicKey('EKpQGSJtjMFqKZ9KQanSqYXRcF8fBopzLHYxdM65zcjm'),
|
const ignoredMints = [
|
||||||
)
|
'mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So',
|
||||||
const val =
|
'So11111111111111111111111111111111111111112',
|
||||||
mangoAccount && analyticsTokenBank
|
'J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn',
|
||||||
? mangoAccount.getTokenBalanceUi(analyticsTokenBank) *
|
'bSo13r4TkiE4KumL71LsHTPpL2euBYLFx6h9HP3piy1',
|
||||||
analyticsTokenBank.uiPrice
|
'7Q2afV64in6N6SeZsAAB81TJzwDoD6zpqmHkzi9Dcavn',
|
||||||
: 0
|
'7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj',
|
||||||
|
]
|
||||||
|
const banks = useMemo(() => {
|
||||||
|
return group && mangoAccount
|
||||||
|
? [...group.banksMapByMint.values()].filter(
|
||||||
|
(x) =>
|
||||||
|
x.length &&
|
||||||
|
x[0] &&
|
||||||
|
x[0].collateralFeePerDay > 0 &&
|
||||||
|
!ignoredMints.includes(x[0].mint.toBase58()) &&
|
||||||
|
mangoAccount.getTokenBalanceUi(x[0]) * x[0].uiPrice > 10000,
|
||||||
|
)
|
||||||
|
: []
|
||||||
|
}, [group, ignoredMints, mangoAccount])
|
||||||
|
|
||||||
const sendAnalytics = useCallback(
|
const sendAnalytics = useCallback(
|
||||||
async (data: object, tag: string) => {
|
async (data: object, tag: string) => {
|
||||||
if (
|
if (
|
||||||
|
@ -24,7 +37,7 @@ export default function useAnalytics() {
|
||||||
tag &&
|
tag &&
|
||||||
data &&
|
data &&
|
||||||
mangoAccountAddress &&
|
mangoAccountAddress &&
|
||||||
val >= 10000
|
banks.length
|
||||||
) {
|
) {
|
||||||
const enchantedData = JSON.stringify({
|
const enchantedData = JSON.stringify({
|
||||||
mangoAccountAddress: mangoAccountAddress,
|
mangoAccountAddress: mangoAccountAddress,
|
||||||
|
@ -45,7 +58,7 @@ export default function useAnalytics() {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
[val, mangoAccountAddress, publicKey],
|
[banks, mangoAccountAddress, publicKey],
|
||||||
)
|
)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
|
|
@ -124,6 +124,7 @@ export interface JupiterV6RouteInfo {
|
||||||
timeTaken?: number
|
timeTaken?: number
|
||||||
error?: string
|
error?: string
|
||||||
instructions?: TransactionInstruction[]
|
instructions?: TransactionInstruction[]
|
||||||
|
origin?: 'jupiter' | 'mango' | 'raydium'
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface JupiterV6RoutePlan {
|
export interface JupiterV6RoutePlan {
|
||||||
|
|
|
@ -269,7 +269,6 @@ export const getSwapTransaction = async (
|
||||||
slippage,
|
slippage,
|
||||||
directionIn,
|
directionIn,
|
||||||
)
|
)
|
||||||
console.log(bestRoute, '@@@')
|
|
||||||
|
|
||||||
const tokenInAta = getAssociatedTokenAddressSync(
|
const tokenInAta = getAssociatedTokenAddressSync(
|
||||||
new PublicKey(directionIn ? bestRoute.outputMint : bestRoute.inputMint),
|
new PublicKey(directionIn ? bestRoute.outputMint : bestRoute.inputMint),
|
||||||
|
|
Loading…
Reference in New Issue