diff --git a/apps/root/src/common/components/modify-settings-modal/index.tsx b/apps/root/src/common/components/modify-settings-modal/index.tsx index d67aaa205..f7207e5d8 100644 --- a/apps/root/src/common/components/modify-settings-modal/index.tsx +++ b/apps/root/src/common/components/modify-settings-modal/index.tsx @@ -69,6 +69,7 @@ import useDcaAllowanceTarget from '@hooks/useDcaAllowanceTarget'; import { abs } from '@common/utils/bigint'; import ChangesSummary from './components/changes-summary'; import { AddPositionToCalendarButton } from '../add-position-to-calendar'; +import { Chains } from '@balmy/sdk'; const StyledSummaryContainer = styled.div` display: flex; @@ -583,6 +584,7 @@ const ModifySettingsModal = ({ position, open, onCancel }: ModifySettingsModalPr const minimumTokensNeeded = usdPriceToToken(from, minimumToUse, usdPrice); + const shouldDisableIncrease = position.chainId === Chains.ROOTSTOCK.chainId; let actions: { label: React.ReactNode; onClick: () => void; @@ -607,7 +609,7 @@ const ModifySettingsModal = ({ position, open, onCancel }: ModifySettingsModalPr /> ), onClick: () => handleApproveToken(), - disabled: !!hasPendingApproval || shouldDisableByUsd, + disabled: !!hasPendingApproval || shouldDisableByUsd || shouldDisableIncrease, options: [ { text: ( @@ -625,7 +627,7 @@ const ModifySettingsModal = ({ position, open, onCancel }: ModifySettingsModalPr }} /> ), - disabled: !!hasPendingApproval || shouldDisableByUsd, + disabled: !!hasPendingApproval || shouldDisableByUsd || shouldDisableIncrease, onClick: () => handleApproveToken(true), }, ], @@ -666,7 +668,7 @@ const ModifySettingsModal = ({ position, open, onCancel }: ModifySettingsModalPr variant: 'contained', label: , onClick: handleModifyRateAndSwaps, - disabled: !!cantFund || frequencyValue === '0' || shouldDisableByUsd, + disabled: !!cantFund || frequencyValue === '0' || shouldDisableByUsd || shouldDisableIncrease, }, ]; } @@ -678,7 +680,8 @@ const ModifySettingsModal = ({ position, open, onCancel }: ModifySettingsModalPr variant: 'contained', label: , onClick: handleModifyRateAndSwaps, - disabled: !!cantFund || frequencyValue === '0' || shouldDisableByUsd, + disabled: + !!cantFund || frequencyValue === '0' || shouldDisableByUsd || (isIncreasingPosition && shouldDisableIncrease), }, ]; } @@ -690,7 +693,8 @@ const ModifySettingsModal = ({ position, open, onCancel }: ModifySettingsModalPr variant: 'contained', label: , onClick: handleModifyRateAndSwapsSafe, - disabled: !!cantFund || frequencyValue === '0' || shouldDisableByUsd, + disabled: + !!cantFund || frequencyValue === '0' || shouldDisableByUsd || (isIncreasingPosition && shouldDisableIncrease), }, ]; } @@ -702,7 +706,8 @@ const ModifySettingsModal = ({ position, open, onCancel }: ModifySettingsModalPr variant: 'contained', label: , onClick: handleModifyRateAndSwapsSafe, - disabled: !!cantFund || frequencyValue === '0' || shouldDisableByUsd, + disabled: + !!cantFund || frequencyValue === '0' || shouldDisableByUsd || (isIncreasingPosition && shouldDisableIncrease), }, ]; } diff --git a/apps/root/src/pages/dca/create-position/components/step1/index.tsx b/apps/root/src/pages/dca/create-position/components/step1/index.tsx index 7219c34fb..9ad64d285 100644 --- a/apps/root/src/pages/dca/create-position/components/step1/index.tsx +++ b/apps/root/src/pages/dca/create-position/components/step1/index.tsx @@ -24,12 +24,16 @@ import { useTokenBalance } from '@state/balances/hooks'; import useActiveWallet from '@hooks/useActiveWallet'; import useAvailableSwapIntervals from '@hooks/useAvailableSwapIntervals'; import FormWalletSelector from '@common/components/form-wallet-selector'; +import { Chains } from '@balmy/sdk'; const networkList = compact( orderBy( SUPPORTED_NETWORKS_DCA.map((chainId) => { const foundNetwork = find(NETWORKS, { chainId }); + if (chainId === Chains.ROOTSTOCK.chainId) { + return null; + } if (!foundNetwork) { return null; } diff --git a/apps/root/src/pages/dca/positions/components/positions-list/current-positions/components/position-card-button/index.tsx b/apps/root/src/pages/dca/positions/components/positions-list/current-positions/components/position-card-button/index.tsx index 884ecfdd3..4d2ab6b88 100644 --- a/apps/root/src/pages/dca/positions/components/positions-list/current-positions/components/position-card-button/index.tsx +++ b/apps/root/src/pages/dca/positions/components/positions-list/current-positions/components/position-card-button/index.tsx @@ -16,6 +16,7 @@ import useOpenConnectModal from '@hooks/useOpenConnectModal'; import { getDisplayWallet } from '@common/utils/parsing'; import useDcaTokens from '@hooks/useDcaTokens'; import { WalletActionType } from '@services/accountService'; +import { Chains } from '@balmy/sdk'; const StyledCardFooterButton = styled(Button).attrs({ variant: 'outlined' })``; @@ -116,6 +117,7 @@ const PositionCardButton = ({ !dcaTokens[`${chainId}-${position.from.underlyingTokens[0]?.address.toLowerCase()}` as TokenListId]) || (toHasYield && !dcaTokens[`${chainId}-${position.to.underlyingTokens[0]?.address.toLowerCase()}` as TokenListId]) || DCA_PAIR_BLACKLIST.includes(position.pairId) || + position.chainId === Chains.ROOTSTOCK.chainId || !shouldEnableFrequency( position.swapInterval.toString(), position.from.address, diff --git a/apps/root/src/pages/dca/positions/components/positions-list/position-card/components/position-warning/index.tsx b/apps/root/src/pages/dca/positions/components/positions-list/position-card/components/position-warning/index.tsx index 13387a821..81e1dd5b3 100644 --- a/apps/root/src/pages/dca/positions/components/positions-list/position-card/components/position-warning/index.tsx +++ b/apps/root/src/pages/dca/positions/components/positions-list/position-card/components/position-warning/index.tsx @@ -4,6 +4,7 @@ import { FormattedMessage } from 'react-intl'; import { ContainerBox, ErrorOutlineIcon, Link, Typography, colors } from 'ui-library'; import { AAVE_FROZEN_TOKENS, SONNE_FROZEN_TOKENS, YEARN_SONNE_FROZEN_TOKENS } from '@constants'; import styled from 'styled-components'; +import { Chains } from '@balmy/sdk'; interface PositionWarningProps { position: Position; @@ -117,6 +118,17 @@ const PositionWarning = ({ position }: PositionWarningProps) => { ); } + if (position.chainId === Chains.ROOTSTOCK.chainId) { + message = ( + <> + + + ); + } + if ( YEARN_SONNE_FROZEN_TOKENS.includes(position.yields.to?.tokenAddress.toLowerCase() || '') || YEARN_SONNE_FROZEN_TOKENS.includes(position.yields.from?.tokenAddress.toLowerCase() || '') diff --git a/apps/root/src/services/pairService.ts b/apps/root/src/services/pairService.ts index bb9f398aa..dd4699ec0 100644 --- a/apps/root/src/services/pairService.ts +++ b/apps/root/src/services/pairService.ts @@ -251,8 +251,10 @@ export default class PairService extends EventsManager { const newMinSwapInterval = this.minSwapInterval; - newMinSwapInterval[chainId] = - sdkPair.pairs[0].swapIntervals[Object.keys(sdkPair.pairs[0].swapIntervals)[0]].seconds; + if (sdkPair.pairs.length > 0) { + newMinSwapInterval[chainId] = + sdkPair.pairs[0].swapIntervals[Object.keys(sdkPair.pairs[0].swapIntervals)[0]].seconds; + } this.minSwapInterval = newMinSwapInterval; return acc;