Skip to content

Commit a03b0f1

Browse files
committed
feat(suite): use message system context and features in trading
1 parent a046a64 commit a03b0f1

File tree

6 files changed

+69
-4
lines changed

6 files changed

+69
-4
lines changed
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import { Feature, selectIsFeatureDisabled } from '@suite-common/message-system';
2+
3+
import { useSelector } from './useSelector';
4+
5+
export const useMessageSystemTrading = () => {
6+
const isBuyDisabled = useSelector(state => selectIsFeatureDisabled(state, Feature.trading.buy));
7+
8+
const isSellDisabled = useSelector(state =>
9+
selectIsFeatureDisabled(state, Feature.trading.sell),
10+
);
11+
12+
const isExchangeDisabled = useSelector(state =>
13+
selectIsFeatureDisabled(state, Feature.trading.swap),
14+
);
15+
16+
return {
17+
isBuyDisabled,
18+
isSellDisabled,
19+
isExchangeDisabled,
20+
};
21+
};

packages/suite/src/views/wallet/trading/buy/TradingBuyForm.tsx

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,26 @@
1+
import { Context } from '@suite-common/message-system';
2+
3+
import { ContextMessage } from 'src/components/wallet/WalletLayout/AccountBanners/ContextMessage';
4+
import { useMessageSystemTrading } from 'src/hooks/suite/useMessageSystemTrading';
15
import { useTradingBuyForm } from 'src/hooks/wallet/trading/form/useTradingBuyForm';
26
import { TradingFormContext } from 'src/hooks/wallet/trading/form/useTradingCommonForm';
37
import { UseTradingProps } from 'src/types/trading/trading';
48
import { TradingContainer } from 'src/views/wallet/trading/common/TradingContainer';
59
import { TradingFormLayout } from 'src/views/wallet/trading/common/TradingForm/TradingFormLayout';
610
import { TradingLayout } from 'src/views/wallet/trading/common/TradingLayout/TradingLayout';
711

12+
import { TradingDisabled } from '../common/TradingDisabled';
13+
814
const TradingBuyComponent = ({ selectedAccount }: UseTradingProps) => {
15+
const { isBuyDisabled } = useMessageSystemTrading();
16+
917
const tradingBuyContextValues = useTradingBuyForm({ selectedAccount });
1018

1119
return (
1220
<TradingLayout>
1321
<TradingFormContext.Provider value={tradingBuyContextValues}>
14-
<TradingFormLayout />
22+
<ContextMessage context={Context.tradingBuy} />
23+
{isBuyDisabled ? <TradingDisabled type="buy" /> : <TradingFormLayout />}
1524
</TradingFormContext.Provider>
1625
</TradingLayout>
1726
);
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import React from 'react';
2+
3+
import { Banner } from '@trezor/components';
4+
5+
type TradingDisabledProps = {
6+
type: 'buy' | 'sell' | 'swap';
7+
};
8+
9+
const capitalize = (value: string) => value.at(0)?.toUpperCase() + value.slice(1);
10+
11+
export const TradingDisabled = ({ type }: TradingDisabledProps) => (
12+
<Banner icon="warning" variant="warning">
13+
{capitalize(type)} is currently disabled.
14+
</Banner>
15+
);

packages/suite/src/views/wallet/trading/exchange/TradingExchangeForm.tsx

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,26 @@
1+
import { Context } from '@suite-common/message-system';
2+
3+
import { ContextMessage } from 'src/components/wallet/WalletLayout/AccountBanners/ContextMessage';
4+
import { useMessageSystemTrading } from 'src/hooks/suite/useMessageSystemTrading';
15
import { TradingFormContext } from 'src/hooks/wallet/trading/form/useTradingCommonForm';
26
import { useTradingExchangeForm } from 'src/hooks/wallet/trading/form/useTradingExchangeForm';
37
import { UseTradingProps } from 'src/types/trading/trading';
48
import { TradingContainer } from 'src/views/wallet/trading/common/TradingContainer';
59
import { TradingFormLayout } from 'src/views/wallet/trading/common/TradingForm/TradingFormLayout';
610
import { TradingLayout } from 'src/views/wallet/trading/common/TradingLayout/TradingLayout';
711

12+
import { TradingDisabled } from '../common/TradingDisabled';
13+
814
const TradingExchangeFormComponent = ({ selectedAccount }: UseTradingProps) => {
15+
const { isExchangeDisabled } = useMessageSystemTrading();
16+
917
const tradingExchangeContextValue = useTradingExchangeForm({ selectedAccount });
1018

1119
return (
1220
<TradingLayout>
1321
<TradingFormContext.Provider value={tradingExchangeContextValue}>
14-
<TradingFormLayout />
22+
<ContextMessage context={Context.tradingSwap} />
23+
{isExchangeDisabled ? <TradingDisabled type="swap" /> : <TradingFormLayout />}
1524
</TradingFormContext.Provider>
1625
</TradingLayout>
1726
);

packages/suite/src/views/wallet/trading/sell/TradingSellForm.tsx

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,29 @@
1+
import { Context } from '@suite-common/message-system';
2+
3+
import { ContextMessage } from 'src/components/wallet/WalletLayout/AccountBanners/ContextMessage';
4+
import { useMessageSystemTrading } from 'src/hooks/suite/useMessageSystemTrading';
15
import { TradingFormContext } from 'src/hooks/wallet/trading/form/useTradingCommonForm';
26
import { useTradingSellForm } from 'src/hooks/wallet/trading/form/useTradingSellForm';
37
import { UseTradingProps } from 'src/types/trading/trading';
48
import { TradingContainer } from 'src/views/wallet/trading/common/TradingContainer';
59
import { TradingFormLayout } from 'src/views/wallet/trading/common/TradingForm/TradingFormLayout';
610
import { TradingLayout } from 'src/views/wallet/trading/common/TradingLayout/TradingLayout';
711

12+
import { TradingDisabled } from '../common/TradingDisabled';
13+
814
const TradingSellFormComponent = ({ selectedAccount }: UseTradingProps) => {
15+
const { isSellDisabled } = useMessageSystemTrading();
16+
917
const tradingSellContextValues = useTradingSellForm({ selectedAccount });
1018

19+
if (isSellDisabled) {
20+
return <TradingDisabled type="sell" />;
21+
}
22+
1123
return (
1224
<TradingLayout>
1325
<TradingFormContext.Provider value={tradingSellContextValues}>
26+
<ContextMessage context={Context.tradingSell} />
1427
<TradingFormLayout />
1528
</TradingFormContext.Provider>
1629
</TradingLayout>

suite-common/message-system/src/messageSystemTypes.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@ export const Feature = {
4242
entropyCheckMobile: 'security.entropyCheck.mobile',
4343
// FW update feature flag implemented only for mobile app
4444
firmwareUpdate: 'device.firmware.update',
45-
// trading feature flags implemented for mobile app
4645
trading: {
4746
buy: 'trading.buy',
4847
sell: 'trading.sell',
@@ -67,7 +66,6 @@ export const Context = {
6766
coinjoin: 'accounts.coinjoin',
6867
ethStaking: 'accounts.eth.staking',
6968
solStaking: 'accounts.sol.staking',
70-
// trading contexts are implemented for mobile app
7169
tradingBuy: 'trading.buy',
7270
tradingSell: 'trading.sell',
7371
tradingSwap: 'trading.swap',

0 commit comments

Comments
 (0)