diff --git a/components/governance/ListToken/ListToken.tsx b/components/governance/ListToken/ListToken.tsx index 4735e177..3f607cb2 100644 --- a/components/governance/ListToken/ListToken.tsx +++ b/components/governance/ListToken/ListToken.tsx @@ -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({ ...defaultTokenListFormValues, @@ -346,6 +348,7 @@ const ListToken = ({ goBack }: { goBack: () => void }) => { onlyDirect ? 'JUPITER_DIRECT' : 'JUPITER', connection, undefined, + isDelegatedAccount, ) }, [wallet.publicKey, connection], diff --git a/components/swap/useQuoteRoutes.ts b/components/swap/useQuoteRoutes.ts index 78a14df6..ded76056 100644 --- a/components/swap/useQuoteRoutes.ts +++ b/components/swap/useQuoteRoutes.ts @@ -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) | 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) | 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) | 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) | 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, ) } },