diff --git a/apps/frontend/src/app/5_pages/MarketMakingPage/components/PoolsTable/PoolsTable.tsx b/apps/frontend/src/app/5_pages/MarketMakingPage/components/PoolsTable/PoolsTable.tsx index cf876501c..7a188753b 100644 --- a/apps/frontend/src/app/5_pages/MarketMakingPage/components/PoolsTable/PoolsTable.tsx +++ b/apps/frontend/src/app/5_pages/MarketMakingPage/components/PoolsTable/PoolsTable.tsx @@ -28,6 +28,10 @@ export const PoolsTable: FC = () => { ), [], ); + const generateExpandedContent = useCallback( + (pool: AmmLiquidityPool) => , + [], + ); return (
@@ -39,10 +43,9 @@ export const PoolsTable: FC = () => { loadingData={t(translations.common.tables.loading)} dataAttribute="amm-pool-table" expandedClassNames="border border-gray-70 border-t-0" - expandedContent={(pool: AmmLiquidityPool) => ( - - )} + expandedContent={generateExpandedContent} rowTitle={generateRowTitle} + preventExpandOnClickClass="prevent-row-click" />
); diff --git a/apps/frontend/src/app/5_pages/MarketMakingPage/components/PoolsTable/components/PoolsTableAction/PoolsTableAction.tsx b/apps/frontend/src/app/5_pages/MarketMakingPage/components/PoolsTable/components/PoolsTableAction/PoolsTableAction.tsx index f7237b1f1..f9dfce0d8 100644 --- a/apps/frontend/src/app/5_pages/MarketMakingPage/components/PoolsTable/components/PoolsTableAction/PoolsTableAction.tsx +++ b/apps/frontend/src/app/5_pages/MarketMakingPage/components/PoolsTable/components/PoolsTableAction/PoolsTableAction.tsx @@ -1,12 +1,20 @@ -import React, { FC, useCallback, useState } from 'react'; +import React, { FC, useCallback, useMemo, useState } from 'react'; import { t } from 'i18next'; -import { ButtonStyle, ButtonSize, Button } from '@sovryn/ui'; +import { + ButtonStyle, + ButtonSize, + Button, + Tooltip, + TooltipTrigger, +} from '@sovryn/ui'; import { Decimal } from '@sovryn/utils'; import { useAccount } from '../../../../../../../hooks/useAccount'; +import { useMaintenance } from '../../../../../../../hooks/useMaintenance'; import { translations } from '../../../../../../../locales/i18n'; +import { useCheckPoolMaintenance } from '../../../../hooks/useCheckPoolMaintenance'; import { useGetUserInfo } from '../../../../hooks/useGetUserInfo'; import { AmmLiquidityPool } from '../../../../utils/AmmLiquidityPool'; import { AdjustAndDepositModal } from '../../../AdjustAndDepositModal/AdjustAndDepositModal'; @@ -17,20 +25,35 @@ type PoolsTableActionProps = { export const PoolsTableAction: FC = ({ pool }) => { const { account } = useAccount(); + + const { checkMaintenance, States } = useMaintenance(); + const poolLocked = useCheckPoolMaintenance(pool); + const { balanceA: poolBalance } = useGetUserInfo(pool); const [isModalOpen, setIsModalOpen] = useState(false); const [isInitialDeposit, setIsInitialDeposit] = useState(true); + const actionLocked = useMemo( + () => checkMaintenance(States.D2_MARKET_MAKING_FULL) || poolLocked, + [States.D2_MARKET_MAKING_FULL, checkMaintenance, poolLocked], + ); + const handleDepositClick = useCallback(() => { + if (actionLocked) { + return; + } setIsInitialDeposit(true); setIsModalOpen(true); - }, []); + }, [actionLocked]); const handleAdjustClick = useCallback(() => { + if (actionLocked) { + return; + } setIsInitialDeposit(false); setIsModalOpen(true); - }, []); + }, [actionLocked]); const handleClose = useCallback(() => { setIsInitialDeposit(true); @@ -39,27 +62,38 @@ export const PoolsTableAction: FC = ({ pool }) => { return (
- {!account || poolBalance.lte(Decimal.ZERO) ? ( -
+ } + /> { + const { States, checkMaintenance } = useMaintenance(); + + return useMemo(() => { + switch (pool.assetA) { + case SupportedTokens.dllr: + return checkMaintenance(States.D2_MARKET_MAKING_DLLR); + case SupportedTokens.fish: + return checkMaintenance(States.D2_MARKET_MAKING_FISH); + case SupportedTokens.moc: + return checkMaintenance(States.D2_MARKET_MAKING_MOC); + case SupportedTokens.mynt: + return checkMaintenance(States.D2_MARKET_MAKING_MYNT); + case SupportedTokens.rif: + return checkMaintenance(States.D2_MARKET_MAKING_RIF); + case SupportedTokens.sov: + return checkMaintenance(States.D2_MARKET_MAKING_SOV); + default: + return false; + } + }, [ + States.D2_MARKET_MAKING_DLLR, + States.D2_MARKET_MAKING_FISH, + States.D2_MARKET_MAKING_MOC, + States.D2_MARKET_MAKING_MYNT, + States.D2_MARKET_MAKING_RIF, + States.D2_MARKET_MAKING_SOV, + checkMaintenance, + pool.assetA, + ]); +}; diff --git a/apps/frontend/src/hooks/useMaintenance.ts b/apps/frontend/src/hooks/useMaintenance.ts index 95eb0f2b4..335c391c3 100644 --- a/apps/frontend/src/hooks/useMaintenance.ts +++ b/apps/frontend/src/hooks/useMaintenance.ts @@ -138,6 +138,14 @@ enum States { D2_BORROW_BPRO_EXTEND = 'd2BorrowBPROxExtend', D2_BORROW_BPRO_ADD_COLLATERAL = 'd2BorrowBPROxAddCollateral', D2_BORROW_BPRO_WITHDRAW_COLLATERAL = 'd2BorrowBPROxWithdrawCollateral', + + D2_MARKET_MAKING_FULL = 'marketMakingFull', + D2_MARKET_MAKING_DLLR = 'marketMakingDLLR', + D2_MARKET_MAKING_SOV = 'marketMakingSOV', + D2_MARKET_MAKING_FISH = 'marketMakingFISH', + D2_MARKET_MAKING_MOC = 'marketMakingMOC', + D2_MARKET_MAKING_RIF = 'marketMakingRIF', + D2_MARKET_MAKING_MYNT = 'marketMakingMYNT', } type MaintenanceResult = { diff --git a/packages/ui/src/1_atoms/Button/Button.tsx b/packages/ui/src/1_atoms/Button/Button.tsx index fe5ea2e48..6fa40490d 100644 --- a/packages/ui/src/1_atoms/Button/Button.tsx +++ b/packages/ui/src/1_atoms/Button/Button.tsx @@ -21,6 +21,7 @@ export interface IButtonProps { size?: ButtonSize; style?: ButtonStyle; disabled?: boolean; + disabledStyle?: boolean; loading?: boolean; className?: string; dataAttribute?: string; @@ -40,6 +41,7 @@ export const Button = forwardRef< style = ButtonStyle.primary, type = ButtonType.button, disabled, + disabledStyle, loading, className, dataAttribute, @@ -54,10 +56,10 @@ export const Button = forwardRef< styles[size], styles[style], styles[type], - disabled && styles.disabled, + (disabled || disabledStyle) && styles.disabled, className, ), - [loading, size, style, type, disabled, className], + [loading, size, style, type, disabled, disabledStyle, className], ); const onClickHandler = useMemo( diff --git a/yarn.lock b/yarn.lock index c3c53d956..5c4e505be 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4616,10 +4616,10 @@ joi "^17.6.0" rxjs "7.5.6" -"@sovryn/onboard-injected@1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@sovryn/onboard-injected/-/onboard-injected-1.0.3.tgz#57446a8cda069f4acbebfff53c39de5dcd411187" - integrity sha512-JEssDH4cdMTCAlErNWjrcZe71u6ZBd6HdftgI2SBur6AL1HMFQ8PhgfS/N968zektAX8LoTOd9HYbBMTjn2sLQ== +"@sovryn/onboard-injected@1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@sovryn/onboard-injected/-/onboard-injected-1.0.4.tgz#9e373c53a367293b9457519af08f9f2def18fb43" + integrity sha512-aJ5/aP+UM3uaDoNt8ZQusnP/RU7rlLNPj1+DaBvmWjPke30Rq7nnvQEkWxl5+j36MEt2J2wH+AD6+lkH0Uh1zw== dependencies: "@sovryn/onboard-common" "1.0.0" ethers "^5.7.0"