add new swap url

This commit is contained in:
Adrian Brzeziński 2024-05-22 14:01:46 +02:00
parent ea8ab3bc0e
commit bedc864717
6 changed files with 51 additions and 28 deletions

View File

@ -38,6 +38,7 @@ import useJupiterSwapData from './useJupiterSwapData'
// import { Transaction } from '@solana/web3.js'
import {
JUPITER_V6_QUOTE_API_MAINNET,
MANGO_ROUTER_API_URL,
SOUND_SETTINGS_KEY,
} from 'utils/constants'
import useLocalStorageState from 'hooks/useLocalStorageState'
@ -216,23 +217,29 @@ export const fetchJupiterTransaction = async (
slippage: number,
inputMint: PublicKey,
outputMint: PublicKey,
origin?: 'mango' | 'jupiter' | 'raydium',
): Promise<[TransactionInstruction[], AddressLookupTableAccount[]]> => {
// docs https://station.jup.ag/api-v6/post-swap
const transactions = await (
await fetch(`${JUPITER_V6_QUOTE_API_MAINNET}/swap`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
await fetch(
`${
origin === 'mango' ? MANGO_ROUTER_API_URL : JUPITER_V6_QUOTE_API_MAINNET
}/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()
const { swapTransaction } = transactions
@ -451,6 +458,7 @@ const SwapReviewRouteInfo = ({
slippage,
inputBank.mint,
outputBank.mint,
selectedRoute.origin,
)
try {

View File

@ -110,6 +110,7 @@ const fetchJupiterRoute = async (
slippage,
new PublicKey(inputMint),
new PublicKey(outputMint),
'jupiter',
)
if (
@ -236,9 +237,10 @@ const fetchMangoRoute = async (
throw 'No route found'
}
const res = await response.json()
if (res.outAmount) {
resolve({
bestRoute: res,
bestRoute: { ...res, origin: 'mango' },
})
} else {
reject('No route found')
@ -378,7 +380,6 @@ export async function handleGetRoutes(
wallet,
sendAnalytics,
)
routes.push(jupiterDirectRoute)
}

View File

@ -278,6 +278,7 @@ export default function SpotMarketOrderSwapForm() {
slippage,
inputBank.mint,
outputBank.mint,
selectedRoute.origin,
)
try {

View File

@ -2,21 +2,34 @@ import useMangoAccount from './useMangoAccount'
import { useWallet } from '@solana/wallet-adapter-react'
import { WHITE_LIST_API } from 'utils/constants'
import useMangoGroup from './useMangoGroup'
import { PublicKey } from '@metaplex-foundation/js'
import { useCallback } from 'react'
import { useCallback, useMemo } from 'react'
export default function useAnalytics() {
const { group } = useMangoGroup()
const { mangoAccountAddress, mangoAccount } = useMangoAccount()
const { publicKey } = useWallet()
const analyticsTokenBank = group?.getFirstBankByMint(
new PublicKey('EKpQGSJtjMFqKZ9KQanSqYXRcF8fBopzLHYxdM65zcjm'),
)
const val =
mangoAccount && analyticsTokenBank
? mangoAccount.getTokenBalanceUi(analyticsTokenBank) *
analyticsTokenBank.uiPrice
: 0
// eslint-disable-next-line react-hooks/exhaustive-deps
const ignoredMints = [
'mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So',
'So11111111111111111111111111111111111111112',
'J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn',
'bSo13r4TkiE4KumL71LsHTPpL2euBYLFx6h9HP3piy1',
'7Q2afV64in6N6SeZsAAB81TJzwDoD6zpqmHkzi9Dcavn',
'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(
async (data: object, tag: string) => {
if (
@ -24,7 +37,7 @@ export default function useAnalytics() {
tag &&
data &&
mangoAccountAddress &&
val >= 10000
banks.length
) {
const enchantedData = JSON.stringify({
mangoAccountAddress: mangoAccountAddress,
@ -45,7 +58,7 @@ export default function useAnalytics() {
})
}
},
[val, mangoAccountAddress, publicKey],
[banks, mangoAccountAddress, publicKey],
)
return {

View File

@ -124,6 +124,7 @@ export interface JupiterV6RouteInfo {
timeTaken?: number
error?: string
instructions?: TransactionInstruction[]
origin?: 'jupiter' | 'mango' | 'raydium'
}
export interface JupiterV6RoutePlan {

View File

@ -269,7 +269,6 @@ export const getSwapTransaction = async (
slippage,
directionIn,
)
console.log(bestRoute, '@@@')
const tokenInAta = getAssociatedTokenAddressSync(
new PublicKey(directionIn ? bestRoute.outputMint : bestRoute.inputMint),