Skip to content

Commit 07594b5

Browse files
committed
fix(suite-native): device switcher pimping
1 parent 4931e19 commit 07594b5

14 files changed

+137
-122
lines changed
+15-7
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { prepareNativeStyle, useNativeStyles } from '@trezor/styles';
22
import { Translation, TxKeyPath } from '@suite-native/intl';
3+
import { Color } from '@trezor/theme';
34

45
import { Box } from './Box';
56
import { HStack } from './Stack';
@@ -8,11 +9,13 @@ import { Text } from './Text';
89
type TextDividerProps = {
910
title: TxKeyPath;
1011
horizontalMargin?: number;
12+
lineColor?: Color;
13+
textColor?: Color;
1114
};
1215

13-
const separatorStyle = prepareNativeStyle<{ horizontalMargin?: number }>(
14-
(utils, { horizontalMargin }) => ({
15-
backgroundColor: utils.colors.borderElevation0,
16+
const separatorStyle = prepareNativeStyle<{ horizontalMargin?: number; color: Color }>(
17+
(utils, { horizontalMargin, color }) => ({
18+
backgroundColor: utils.colors[color],
1619
height: utils.borders.widths.small,
1720
flex: 1,
1821
// We want the separator to be full width, but we need to offset it by the parent padding
@@ -25,18 +28,23 @@ const separatorTitleStyle = prepareNativeStyle(utils => ({
2528
paddingVertical: utils.spacings.extraSmall,
2629
}));
2730

28-
export const TextDivider = ({ title, horizontalMargin = 0 }: TextDividerProps) => {
31+
export const TextDivider = ({
32+
title,
33+
horizontalMargin = 0,
34+
lineColor = 'borderElevation1',
35+
textColor = 'textDefault',
36+
}: TextDividerProps) => {
2937
const { applyStyle } = useNativeStyles();
3038

3139
return (
3240
<HStack alignItems="center">
33-
<Box style={applyStyle(separatorStyle, { horizontalMargin })} />
41+
<Box style={applyStyle(separatorStyle, { horizontalMargin, color: lineColor })} />
3442
<Box style={applyStyle(separatorTitleStyle)}>
35-
<Text variant="label">
43+
<Text variant="label" color={textColor}>
3644
<Translation id={title} />
3745
</Text>
3846
</Box>
39-
<Box style={applyStyle(separatorStyle, { horizontalMargin })} />
47+
<Box style={applyStyle(separatorStyle, { horizontalMargin, color: lineColor })} />
4048
</HStack>
4149
);
4250
};

suite-native/device-manager/src/components/AddHiddenWalletButton.tsx

+7-5
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { useDispatch, useSelector } from 'react-redux';
22

33
import { Translation } from '@suite-native/intl';
44
import { createDeviceInstance, selectDevice } from '@suite-common/wallet-core';
5-
import { Text } from '@suite-native/atoms';
5+
import { HStack, Text } from '@suite-native/atoms';
66
import { prepareNativeStyle, useNativeStyles } from '@trezor/styles';
77
import { Icon } from '@suite-common/icons';
88

@@ -34,10 +34,12 @@ export const AddHiddenWalletButton = () => {
3434
onPress={handleAddHiddenWallet}
3535
flex={1}
3636
>
37-
<Text variant="hint" style={applyStyle(textStyle)}>
38-
<Translation id="deviceManager.deviceButtons.addHiddenWallet" />
39-
</Text>
40-
<Icon name="chevronRight" color="iconDefault" size="mediumLarge" />
37+
<HStack>
38+
<Text variant="hint" style={applyStyle(textStyle)}>
39+
<Translation id="deviceManager.deviceButtons.addHiddenWallet" />
40+
</Text>
41+
<Icon name="chevronRight" color="iconDefault" size="mediumLarge" />
42+
</HStack>
4143
</DeviceAction>
4244
);
4345
};

suite-native/device-manager/src/components/DeviceItem/DeviceItemContent.tsx

+10-7
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,11 @@ import { SimpleDeviceItemContent } from './SimpleDeviceItemContent';
1818
import { WalletDetailDeviceItemContent } from './WalletDetailDeviceItemContent';
1919

2020
export type DeviceItemContentVariant = 'simple' | 'walletDetail';
21+
2122
export type DeviceItemContentMode = 'compact' | 'header';
2223

2324
export type DeviceItemContentProps = {
2425
deviceState: NonNullable<TrezorDevice['state']>;
25-
isPortfolioLabelDisplayed?: boolean;
2626
headerTextVariant?: TypographyStyle;
2727
variant?: DeviceItemContentVariant;
2828
isCompact?: boolean;
@@ -34,13 +34,19 @@ const contentWrapperStyle = prepareNativeStyle<{ height: number }>((utils, { hei
3434
alignItems: 'center',
3535
spacing: utils.spacings.medium,
3636
}));
37-
const itemStyle = prepareNativeStyle(_ => ({
37+
38+
const itemStyle = prepareNativeStyle<{ isCompact: boolean }>((_, { isCompact }) => ({
3839
flexShrink: 1,
40+
extend: {
41+
condition: !isCompact,
42+
style: {
43+
gap: 2,
44+
},
45+
},
3946
}));
4047

4148
export const DeviceItemContent = ({
4249
deviceState,
43-
isPortfolioLabelDisplayed = true,
4450
headerTextVariant = 'body',
4551
variant = 'simple',
4652
isCompact = true,
@@ -76,16 +82,14 @@ export const DeviceItemContent = ({
7682
<HStack style={applyStyle(contentWrapperStyle, { height: isCompact ? 46 : 56 })}>
7783
<DeviceItemIcon
7884
deviceId={areAllDevicesDisconnectedOrAccountless ? undefined : device.id}
79-
iconSize={isCompact ? 'large' : 'extraLarge'}
8085
/>
81-
<Box style={applyStyle(itemStyle)}>
86+
<Box style={applyStyle(itemStyle, { isCompact })}>
8287
{variant === 'simple' ? (
8388
<SimpleDeviceItemContent
8489
deviceState={deviceState}
8590
headerTextVariant={headerTextVariant}
8691
header={deviceHeader}
8792
isPortfolioTrackerDevice={isPortfolioTrackerDevice}
88-
isPortfolioLabelDisplayed={isPortfolioLabelDisplayed}
8993
/>
9094
) : (
9195
<WalletDetailDeviceItemContent
@@ -94,7 +98,6 @@ export const DeviceItemContent = ({
9498
header={deviceHeader}
9599
subHeader={walletNameLabel}
96100
isPortfolioTrackerDevice={isPortfolioTrackerDevice}
97-
isPortfolioLabelDisplayed={isPortfolioLabelDisplayed}
98101
/>
99102
)}
100103
</Box>
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { useSelector } from 'react-redux';
22

3-
import { Icon, IconSize } from '@suite-common/icons';
3+
import { Icon } from '@suite-common/icons';
44
import {
55
DeviceRootState,
66
PORTFOLIO_TRACKER_DEVICE_ID,
@@ -12,20 +12,21 @@ import { DeviceModelIcon } from '../DeviceModelIcon';
1212

1313
type DeviceItemIconProps = {
1414
deviceId: TrezorDevice['id'];
15-
iconSize: IconSize;
1615
};
1716

18-
export const DeviceItemIcon = ({ deviceId, iconSize }: DeviceItemIconProps) => {
17+
const ICON_SIZE = 28;
18+
19+
export const DeviceItemIcon = ({ deviceId }: DeviceItemIconProps) => {
1920
const deviceModel = useSelector((state: DeviceRootState) =>
2021
selectDeviceModelById(state, deviceId),
2122
);
2223

2324
if (deviceId === PORTFOLIO_TRACKER_DEVICE_ID) {
24-
return <Icon name="database" color="iconDefault" size={iconSize} />;
25+
return <Icon name="database" color="iconDefault" size={ICON_SIZE} />;
2526
}
2627
if (deviceModel !== null) {
27-
return <DeviceModelIcon deviceModel={deviceModel} size={iconSize} />;
28+
return <DeviceModelIcon deviceModel={deviceModel} size={ICON_SIZE} />;
2829
}
2930

30-
return <Icon name="trezor" color="iconDefault" size={iconSize} />;
31+
return <Icon name="trezor" color="iconDefault" size={ICON_SIZE} />;
3132
};

suite-native/device-manager/src/components/DeviceItem/SimpleDeviceItemContent.tsx

+2-6
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ export type SimpleDeviceItemContentProps = {
1818
deviceState: NonNullable<TrezorDevice['state']>;
1919
headerTextVariant?: TypographyStyle;
2020
header: ReactNode;
21-
isPortfolioLabelDisplayed?: boolean;
2221
isPortfolioTrackerDevice: boolean;
2322
};
2423

@@ -30,7 +29,6 @@ const headerStyle = prepareNativeStyle(_ => ({
3029
export const SimpleDeviceItemContent = ({
3130
deviceState,
3231
headerTextVariant,
33-
isPortfolioLabelDisplayed,
3432
header,
3533
isPortfolioTrackerDevice,
3634
}: SimpleDeviceItemContentProps) => {
@@ -45,9 +43,7 @@ export const SimpleDeviceItemContent = ({
4543
}
4644

4745
const isPortfolioTrackerSubHeaderVisible =
48-
isPortfolioTrackerDevice &&
49-
isPortfolioLabelDisplayed &&
50-
!areAllDevicesDisconnectedOrAccountless;
46+
isPortfolioTrackerDevice && !areAllDevicesDisconnectedOrAccountless;
5147

5248
const isConnectionStateVisible =
5349
!isPortfolioTrackerDevice && !areAllDevicesDisconnectedOrAccountless;
@@ -68,7 +64,7 @@ export const SimpleDeviceItemContent = ({
6864
</Text>
6965
<Box>
7066
{isPortfolioTrackerSubHeaderVisible && (
71-
<Text variant="label" color="textSubdued">
67+
<Text variant="hint" color="textSubdued">
7268
<Translation id="deviceManager.status.portfolioTracker" />
7369
</Text>
7470
)}

suite-native/device-manager/src/components/DeviceItem/WalletDetailDeviceItemContent.tsx

+7-16
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { useSelector } from 'react-redux';
22
import { ReactNode } from 'react';
33

4-
import { HStack, Text, Box } from '@suite-native/atoms';
4+
import { HStack, Text } from '@suite-native/atoms';
55
import { Translation } from '@suite-native/intl';
66
import { prepareNativeStyle, useNativeStyles } from '@trezor/styles';
77
import { DeviceRootState, selectDeviceByState } from '@suite-common/wallet-core';
@@ -15,7 +15,6 @@ export type WalletDetailDeviceItemContentProps = {
1515
headerTextVariant?: TypographyStyle;
1616
header: ReactNode;
1717
subHeader?: ReactNode;
18-
isPortfolioLabelDisplayed?: boolean;
1918
isPortfolioTrackerDevice: boolean;
2019
};
2120

@@ -33,7 +32,7 @@ const headerTextStyle = prepareNativeStyle(() => ({
3332
export const WalletDetailDeviceItemContent = ({
3433
deviceState,
3534
headerTextVariant,
36-
isPortfolioLabelDisplayed,
35+
3736
header,
3837
subHeader,
3938
isPortfolioTrackerDevice,
@@ -58,20 +57,12 @@ export const WalletDetailDeviceItemContent = ({
5857
</Text>
5958
{!isPortfolioTrackerDevice && <ConnectionDot isConnected={device.connected} />}
6059
</HStack>
61-
<Box>
62-
{isPortfolioTrackerDevice && isPortfolioLabelDisplayed && (
63-
<Text variant="label" color="textSubdued">
64-
<Translation id="deviceManager.status.portfolioTracker" />
65-
</Text>
66-
)}
67-
{!isPortfolioTrackerDevice && (
68-
<HStack alignItems="center" spacing="small">
69-
<Text variant="label" color="textSubdued">
70-
{subHeader}
71-
</Text>
72-
</HStack>
60+
<Text variant="hint" color="textSubdued">
61+
{isPortfolioTrackerDevice && (
62+
<Translation id="deviceManager.status.portfolioTracker" />
7363
)}
74-
</Box>
64+
{!isPortfolioTrackerDevice && subHeader}
65+
</Text>
7566
</>
7667
);
7768
};

0 commit comments

Comments
 (0)