Skip to content

Commit

Permalink
feat(coinmarket): disable 'you buy' select in trezor btc only firmware
Browse files Browse the repository at this point in the history
  • Loading branch information
adderpositive authored and tomasklim committed Oct 4, 2024
1 parent 6bb513a commit 128b963
Show file tree
Hide file tree
Showing 7 changed files with 13 additions and 18 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ import { arrayPartition } from '@trezor/utils';
import { hasBitcoinOnlyFirmware } from '@trezor/device-utils';
import { networks, Network, NetworkSymbol, NetworkAccount } from '@suite-common/wallet-config';
import { CollapsibleBox, NewModal, Tooltip } from '@trezor/components';
import { FirmwareType } from '@trezor/connect';
import { spacings, spacingsPx } from '@trezor/theme';
import { Translation, CoinList } from 'src/components/suite';
import { Account } from 'src/types/wallet';
Expand Down Expand Up @@ -78,7 +77,7 @@ export const AddAccountModal = ({
const preselectedNetwork = symbol && supportedNetworks.find(n => n.symbol === symbol);
// or in case of only btc is enabled on bitcoin-only firmware
const bitcoinOnlyDefaultNetworkSelection =
device.firmwareType === FirmwareType.BitcoinOnly &&
hasBitcoinOnlyFirmware(device) &&
supportedMainnets.length === 1 &&
allTestnetNetworksDisabled
? networks.btc
Expand Down
1 change: 1 addition & 0 deletions packages/suite/src/types/coinmarket/coinmarketForm.ts
Original file line number Diff line number Diff line change
Expand Up @@ -305,6 +305,7 @@ export interface CoinmarketFormInputCryptoSelectProps<TFieldValues extends Field
cryptoSelectName: FieldPath<TFieldValues>;
supportedCryptoCurrencies: Set<CryptoId> | undefined;
methods: UseFormReturn<TFieldValues>;
isDisabled?: boolean;
}

export interface CoinmarketFormInputFiatCryptoProps<TFieldValues extends FieldValues> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ export const CoinmarketFormInputCryptoSelect = <
cryptoSelectName,
supportedCryptoCurrencies,
methods,
isDisabled,
}: CoinmarketFormInputCryptoSelectProps<TFieldValues>) => {
const context = useCoinmarketFormContext<CoinmarketTradeBuyExchangeType>();
const { buildCryptoOptions, cryptoIdToPlatformName } = useCoinmarketInfo();
Expand Down Expand Up @@ -130,6 +131,7 @@ export const CoinmarketFormInputCryptoSelect = <
data-testid="@coinmarket/form/select-crypto"
isClearable={false}
isMenuOpen={false}
isDisabled={isDisabled}
/>
)}
/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ import { CoinmarketBalance } from 'src/views/wallet/coinmarket/common/Coinmarket
import { TokenAddress } from '@suite-common/wallet-types';
import { formatAmount } from '@suite-common/wallet-utils';
import { getNetworkDecimals } from 'src/utils/wallet/coinmarket/coinmarketUtils';
import { hasBitcoinOnlyFirmware } from '@trezor/device-utils';

const CoinmarketFeesWrapper = styled.div`
margin-bottom: ${spacingsPx.md};
Expand Down Expand Up @@ -224,7 +225,7 @@ export const CoinmarketFormInputs = () => {
);
}

const { buyInfo } = context;
const { buyInfo, device } = context;
const { currencySelect, cryptoSelect } = context.getValues();
const supportedCryptoCurrencies = buyInfo?.supportedCryptoCurrencies;

Expand All @@ -236,6 +237,7 @@ export const CoinmarketFormInputs = () => {
cryptoSelectName={FORM_CRYPTO_CURRENCY_SELECT}
supportedCryptoCurrencies={supportedCryptoCurrencies}
methods={{ ...context }}
isDisabled={hasBitcoinOnlyFirmware(device)}
/>
</CoinmarketFormInput>
<CoinmarketFormInput>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import styled, { css } from 'styled-components';
import { useDevice, useSelector } from 'src/hooks/suite';
import { FirmwareType } from '@trezor/connect';
import { TranslationKey } from '@suite-common/intl-types';
import { Route } from '@suite-common/suite-types';
import { borders, spacingsPx, typography } from '@trezor/theme';
import { NavigationItem } from '../../../../../components/suite/layouts/SuiteLayout/Sidebar/NavigationItem';
import { variables, IconName } from '@trezor/components';
import { hasBitcoinOnlyFirmware } from '@trezor/device-utils';

const List = styled.div`
display: flex;
Expand Down Expand Up @@ -37,8 +37,6 @@ export const CoinmarketLayoutNavigation = () => {

const { device } = useDevice();

const isBitcoinOnly = device?.firmwareType === FirmwareType.BitcoinOnly;

const Item = ({
route,
title,
Expand All @@ -63,7 +61,7 @@ export const CoinmarketLayoutNavigation = () => {
<Item route="wallet-coinmarket-buy" title="TR_NAV_BUY" icon="plus" />
<Item route="wallet-coinmarket-sell" title="TR_NAV_SELL" icon="minus" />

{!isBitcoinOnly ? (
{!hasBitcoinOnlyFirmware(device) ? (
<Item
route="wallet-coinmarket-exchange"
title="TR_COINMARKET_SWAP"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import styled from 'styled-components';
import { useDevice, useSelector } from 'src/hooks/suite';
import { FirmwareType } from '@trezor/connect';
import CoinmarketLayoutNavigationItem from './CoinmarketLayoutNavigationItem';
import { Divider } from '@trezor/components';
import { spacings } from '@trezor/theme';
import regional from 'src/constants/wallet/coinmarket/regional';
import { getIsTorEnabled } from 'src/utils/suite/tor';
import { SelectedAccountLoaded } from '@suite-common/wallet-types';
import { hasBitcoinOnlyFirmware } from '@trezor/device-utils';

const List = styled.div`
display: flex;
Expand All @@ -24,7 +24,6 @@ interface CoinmarketLayoutNavigationProps {

const CoinmarketLayoutNavigation = ({ selectedAccount }: CoinmarketLayoutNavigationProps) => {
const { device } = useDevice();
const isBitcoinOnly = device?.firmwareType === FirmwareType.BitcoinOnly;

const isBtcAccount = selectedAccount.account.symbol === 'btc';
const torStatus = useSelector(state => state.suite.torStatus);
Expand All @@ -49,7 +48,7 @@ const CoinmarketLayoutNavigation = ({ selectedAccount }: CoinmarketLayoutNavigat
icon="minus"
/>

{!isBitcoinOnly ? (
{!hasBitcoinOnlyFirmware(device) ? (
<CoinmarketLayoutNavigationItem
route="wallet-coinmarket-exchange"
title="TR_COINMARKET_SWAP"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { Route } from '@suite-common/suite-types';
import { Account } from '@suite-common/wallet-types';
import { Button, variables } from '@trezor/components';
import { FirmwareType } from '@trezor/connect';
import { hasBitcoinOnlyFirmware } from '@trezor/device-utils';
import { EventType, analytics } from '@trezor/suite-analytics';
import { spacingsPx } from '@trezor/theme';
import { ReactNode } from 'react';
Expand Down Expand Up @@ -61,13 +61,7 @@ export const TradeBoxMenu = ({ account }: TradeBoxMenuProps) => {
return (
<Wrapper>
{menuItems
.filter(
item =>
!(
item.type === 'exchange' &&
device?.firmwareType === FirmwareType.BitcoinOnly
),
)
.filter(item => !(item.type === 'exchange' && hasBitcoinOnlyFirmware(device)))
.map(item => (
<StyledButton
$isHideable={!!item.isHideable}
Expand Down

0 comments on commit 128b963

Please sign in to comment.