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) ? (
-
- ) : (
-
- )}
+
{t(translations.maintenanceMode.featureDisabled)}>}
+ disabled={!actionLocked}
+ children={
+
+ {!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"