disable mango-router for delegated accounts (#437)

This commit is contained in:
riordanp 2024-07-19 21:20:51 +01:00 committed by GitHub
parent 58ad2c1673
commit 129c4e2e1e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 16 additions and 1 deletions

View File

@ -61,6 +61,7 @@ import Select from '@components/forms/Select'
import { WRAPPED_SOL_MINT } from '@metaplex-foundation/js'
import { struct, u8, publicKey, u64, option } from '@raydium-io/raydium-sdk'
import * as toml from '@iarna/toml'
import useUnownedAccount from 'hooks/useUnownedAccount'
const feeFields = [u64('denominator'), u64('numerator')]
const StakePoolLayout = struct([
@ -155,6 +156,7 @@ const ListToken = ({ goBack }: { goBack: () => void }) => {
const getCurrentVotingPower = GovernanceStore((s) => s.getCurrentVotingPower)
const connectionContext = GovernanceStore((s) => s.connectionContext)
const { t } = useTranslation(['governance'])
const { isDelegatedAccount } = useUnownedAccount()
const [advForm, setAdvForm] = useState<TokenListForm>({
...defaultTokenListFormValues,
@ -346,6 +348,7 @@ const ListToken = ({ goBack }: { goBack: () => void }) => {
onlyDirect ? 'JUPITER_DIRECT' : 'JUPITER',
connection,
undefined,
isDelegatedAccount,
)
},
[wallet.publicKey, connection],

View File

@ -12,6 +12,7 @@ import { findRaydiumPoolInfo, getSwapTransaction } from 'utils/swap/raydium'
import mangoStore from '@store/mangoStore'
import { fetchJupiterTransaction } from './SwapReviewRouteInfo'
import useAnalytics from 'hooks/useAnalytics'
import useUnownedAccount from 'hooks/useUnownedAccount'
type SwapModes = 'ExactIn' | 'ExactOut'
@ -281,6 +282,7 @@ export async function handleGetRoutes(
routingMode: MultiRoutingMode | RaydiumRoutingMode,
connection: Connection,
sendAnalytics: ((data: object, tag: string) => Promise<void>) | undefined,
isDelegatedAccount: boolean,
inputTokenDecimals: number,
): Promise<{ bestRoute: JupiterV6RouteInfo }>
@ -295,6 +297,7 @@ export async function handleGetRoutes(
routingMode: JupiterRoutingMode | MangoRoutingMode,
connection: Connection,
sendAnalytics: ((data: object, tag: string) => Promise<void>) | undefined,
isDelegatedAccount: boolean,
): Promise<{ bestRoute: JupiterV6RouteInfo }>
export async function handleGetRoutes(
@ -308,6 +311,7 @@ export async function handleGetRoutes(
routingMode: RaydiumRoutingMode,
connection: Connection,
sendAnalytics: ((data: object, tag: string) => Promise<void>) | undefined,
isDelegatedAccount: boolean,
inputTokenDecimals: number,
): Promise<{ bestRoute: JupiterV6RouteInfo }>
@ -322,6 +326,7 @@ export async function handleGetRoutes(
routingMode: RoutingMode = 'ALL',
connection: Connection,
sendAnalytics: ((data: object, tag: string) => Promise<void>) | undefined,
isDelegatedAccount: boolean,
inputTokenDecimals?: number,
) {
try {
@ -409,7 +414,10 @@ export async function handleGetRoutes(
routes.push(jupiterRoute)
}
if (isMultiRoutingMode(routingMode) || routingMode === 'MANGO') {
if (
isMultiRoutingMode(routingMode) ||
(routingMode === 'MANGO' && !isDelegatedAccount)
) {
const mangoRoute = fetchMangoRoute(
inputMint,
outputMint,
@ -472,6 +480,8 @@ const useQuoteRoutes = ({
const connection = mangoStore((s) => s.connection)
const { sendAnalytics } = useAnalytics()
const { inputTokenInfo, outputTokenInfo } = useJupiterSwapData()
const { isDelegatedAccount } = useUnownedAccount()
const decimals = useMemo(() => {
return swapMode === 'ExactIn'
? inputTokenInfo?.decimals || 6
@ -519,6 +529,7 @@ const useQuoteRoutes = ({
routingMode,
connection,
sendAnalytics,
isDelegatedAccount,
decimals,
)
} else {
@ -533,6 +544,7 @@ const useQuoteRoutes = ({
routingMode,
connection,
sendAnalytics,
isDelegatedAccount,
)
}
},