From de8fd08bc57ee07c195196b97ed000f57e00d7ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcos=20Rodriguez=20V=C3=A9lez?= Date: Mon, 19 Apr 2021 06:24:04 -0400 Subject: [PATCH] ADD: Tooltip for address list --- components/addresses/AddressItem.js | 90 ++++++++++++++++++++++------- screen/wallets/addresses.js | 8 ++- screen/wallets/signVerify.js | 2 +- tests/setup.js | 6 ++ 4 files changed, 84 insertions(+), 22 deletions(-) diff --git a/components/addresses/AddressItem.js b/components/addresses/AddressItem.js index cc4a9a527..ab7521e98 100644 --- a/components/addresses/AddressItem.js +++ b/components/addresses/AddressItem.js @@ -1,15 +1,20 @@ -import React from 'react'; -import { StyleSheet, Text } from 'react-native'; +import React, { useRef } from 'react'; +import { StyleSheet, Text, View } from 'react-native'; import { useTheme } from '@react-navigation/native'; import { ListItem } from 'react-native-elements'; import PropTypes from 'prop-types'; import { AddressTypeBadge } from './AddressTypeBadge'; -import { formatBalance } from '../../loc'; +import loc, { formatBalance } from '../../loc'; +import TooltipMenu from '../TooltipMenu'; +import Clipboard from '@react-native-clipboard/clipboard'; +import Share from 'react-native-share'; const AddressItem = ({ item, balanceUnit, onPress }) => { const { colors } = useTheme(); + const tooltip = useRef(); + const listItem = useRef(); - const styles = StyleSheet.create({ + const stylesHook = StyleSheet.create({ container: { borderBottomColor: colors.lightBorder, backgroundColor: colors.elevated, @@ -17,40 +22,85 @@ const AddressItem = ({ item, balanceUnit, onPress }) => { list: { color: colors.buttonTextColor, }, - address: { - fontWeight: '600', - marginHorizontal: 40, - }, index: { color: colors.alternativeTextColor, - fontSize: 15, }, balance: { - marginTop: 8, - marginLeft: 14, color: colors.alternativeTextColor, }, }); + const showToolTipMenu = () => { + tooltip.current.showMenu(); + }; + const balance = formatBalance(item.balance, balanceUnit, true); + const handleCopyPress = () => { + Clipboard.setString(item.address); + }; + + const handleSharePress = () => { + Share.open({ message: item.address }).catch(error => console.log(error)); + }; + const render = () => { return ( - - - - {item.index} {item.address} - - {balance} - - - + + + + + + {item.index + 1}{' '} + {item.address} + + {balance} + + + + ); }; return render(); }; +const styles = StyleSheet.create({ + address: { + fontWeight: '600', + marginHorizontal: 40, + }, + index: { + fontSize: 15, + }, + balance: { + marginTop: 8, + marginLeft: 14, + }, +}); + AddressItem.propTypes = { item: PropTypes.shape({ key: PropTypes.string, diff --git a/screen/wallets/addresses.js b/screen/wallets/addresses.js index 6d5ff508a..8644c92d8 100644 --- a/screen/wallets/addresses.js +++ b/screen/wallets/addresses.js @@ -104,6 +104,10 @@ const WalletAddresses = () => { }); }; + const renderRow = item => { + return navigateToReceive(item)} />; + }; + const render = () => { if (showAddresses) { return ( @@ -112,7 +116,9 @@ const WalletAddresses = () => { navigateToReceive(item)} />} + initialNumToRender={20} + contentInsetAdjustmentBehavior="automatic" + renderItem={renderRow} /> ); diff --git a/screen/wallets/signVerify.js b/screen/wallets/signVerify.js index 20e19d82f..974ca826a 100644 --- a/screen/wallets/signVerify.js +++ b/screen/wallets/signVerify.js @@ -127,7 +127,7 @@ const SignVerify = () => { ); return ( - + {!isKeyboardVisible && ( diff --git a/tests/setup.js b/tests/setup.js index 52d87c11f..67424e479 100644 --- a/tests/setup.js +++ b/tests/setup.js @@ -128,4 +128,10 @@ jest.mock('../blue_modules/analytics', () => { return ret; }); +jest.mock('react-native-share', () => { + return { + open: jest.fn(), + }; +}); + global.alert = () => {};