Skip to content

Commit

Permalink
add fingerprint,assetName and other fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
ashisherc committed Feb 25, 2021
1 parent bee870c commit 20fbcc6
Show file tree
Hide file tree
Showing 11 changed files with 81 additions and 22 deletions.
2 changes: 2 additions & 0 deletions package.json
Expand Up @@ -30,6 +30,7 @@
"@babel/node": "7.12.6",
"@babel/runtime": "7.12.5",
"@cardano-foundation/ledgerjs-hw-app-cardano": "2.2.1",
"@emurgo/cip14-js": "2.0.0",
"@emurgo/cip4-js": "1.0.5",
"@emurgo/react-native-haskell-shelley": "1.0.1",
"@ledgerhq/react-native-hw-transport-ble": "5.41.0",
Expand All @@ -46,6 +47,7 @@
"add": "2.0.6",
"babel-eslint": "10.1.0",
"base-x": "3.0.8",
"bech32": "2.0.0",
"bignumber.js": "^7.2.1",
"bip39": "^2.5.0",
"bluebird": "3.7.2",
Expand Down
20 changes: 12 additions & 8 deletions src/components/Common/MultiAsset/AssetList.js
Expand Up @@ -3,17 +3,21 @@
import React from 'react'
import {Text, View, FlatList, TouchableOpacity} from 'react-native'
import {injectIntl} from 'react-intl'
import type {Node, ComponentType} from 'react'

import {getAssetNameOrUnknown, formatTokenAmount} from '../../../utils/format'
import {getAssetNameOrUnknown, formatTokenAmount, getAssetDenomination} from '../../../utils/format'

import baseStyle from './styles/Base.style'
import assetListTransactionStyle from './styles/AssetListTransaction.style'

import assetListSendStyle from './styles/AssetListSend.style'
import globalMessages, {
txLabels,
} from '../../../i18n/global-messages'
import type {TokenEntry} from '../../../crypto/MultiToken'
import type {Token} from '../../../types/HistoryTransaction'
import type {Node, ComponentType} from 'react'

type NodeStyle = typeof baseStyle | typeof assetListTransactionStyle

type NodeStyle = typeof baseStyle | typeof assetListTransactionStyle | typeof assetListSendStyle

type Props = {
assets: Array<TokenEntry>,
Expand All @@ -34,14 +38,14 @@ const AssetRow: ({|
|}) => Node = ({styles, asset, assetMetadata, backColor, onSelect, intl}) => {
const item = (
<>
<View>
<View style={styles.tokenMeta}>
<Text style={styles.assetName}>
{getAssetNameOrUnknown(
assetMetadata,
intl,
)}
</Text>
<Text style={styles.assetMeta}>{asset.identifier}</Text>
<Text style={styles.assetMeta}>{getAssetDenomination(assetMetadata, 'fingerprint')}</Text>
</View>
<View>
<Text style={styles.assetBalance}>
Expand Down Expand Up @@ -81,8 +85,8 @@ const AssetList: (props: Props) => Node = ({
return (
<View>
<View style={styles.assetTitle}>
<Text style={styles.assetHeading}>Assets</Text>
<Text style={styles.assetHeading}>Amount</Text>
<Text style={styles.assetHeading}>{intl.formatMessage(globalMessages.assetsLabel)}</Text>
<Text style={styles.assetHeading}>{intl.formatMessage(txLabels.amount)}</Text>
</View>
<View>
<FlatList
Expand Down
19 changes: 15 additions & 4 deletions src/components/Common/MultiAsset/AssetSelector.js
@@ -1,6 +1,8 @@
// @flow

import React, {useState} from 'react'
import type {ComponentType} from 'react'
import {injectIntl, defineMessages} from 'react-intl'
import type {Node} from 'react'
import {View, Image, LayoutAnimation, TouchableOpacity} from 'react-native'

Expand All @@ -20,12 +22,20 @@ import closeIcon from '../../../assets/img/cross_fill.png'
import type {TokenEntry} from '../../../crypto/MultiToken'
import type {Token} from '../../../types/HistoryTransaction'

const messages = defineMessages({
placeHolder: {
id: 'components.ma.assetSelector.placeHolder',
defaultMessage: '!!!Select a Token',
},
})

type ExternalProps = {
label?: string,
assets: Array<TokenEntry>,
assetsMetadata: Dict<Token>,
onSelect: (TokenEntry | null) => any,
selectedAsset: TokenEntry | null
selectedAsset: TokenEntry | null,
intl: any,
}

const AssetSelector: (ExternalProps) => Node = ({
Expand All @@ -34,6 +44,7 @@ const AssetSelector: (ExternalProps) => Node = ({
assetsMetadata,
onSelect,
selectedAsset,
intl,
}) => {
const [expanded, setExpanded] = useState(false)

Expand All @@ -43,9 +54,9 @@ const AssetSelector: (ExternalProps) => Node = ({
}
return (
<View style={styles.container}>
<View style={styles.input} onPress={() => toggleExpand()}>
<View style={styles.input} >
{selectedAsset == null ? (
<Text> Select a Token </Text>
<Text> {intl.formatMessage(messages.placeHolder)} </Text>
) : (
<Text> {getAssetDenominationOrId(
assetsMetadata[selectedAsset.identifier],
Expand Down Expand Up @@ -82,4 +93,4 @@ const AssetSelector: (ExternalProps) => Node = ({
)
}

export default AssetSelector
export default injectIntl((AssetSelector: ComponentType<ExternalProps>))
Expand Up @@ -54,4 +54,7 @@ export default StyleSheet.create({
rowColor2: {
backgroundColor: '#FAFAFC',
},
tokenMeta: {
width: '80%',
},
})
Expand Up @@ -46,4 +46,7 @@ export default StyleSheet.create({
rowColor2: {
backgroundColor: 'transparent',
},
tokenMeta: {
width: '80%',
},
})
3 changes: 3 additions & 0 deletions src/components/Common/MultiAsset/styles/Base.style.js
Expand Up @@ -46,4 +46,7 @@ export default StyleSheet.create({
rowColor2: {
backgroundColor: 'transparent',
},
tokenMeta: {
width: '80%',
},
})
5 changes: 3 additions & 2 deletions src/components/TxHistory/TxDetails.js
Expand Up @@ -41,6 +41,7 @@ import type {State} from '../../state'
import type {Navigation} from '../../types/navigation'
import type {ComponentType} from 'react'
import {TRANSACTION_DIRECTION, type Token} from '../../types/HistoryTransaction'
import globalMessages from '../../i18n/global-messages'

const txTypeMessages = defineMessages({
SENT: {
Expand Down Expand Up @@ -112,7 +113,7 @@ const messages = defineMessages({
},
omittedCount: {
id: 'components.txhistory.txdetails.omittedCount',
defaultMessage: '!!!+ {cnt} omitted',
defaultMessage: '!!!+ {cnt} omitted addresses',
},
})

Expand Down Expand Up @@ -334,7 +335,7 @@ const TxDetails = ({
activeOpacity={0.5}
onPress={() => toggleExpandOut()}
>
<Text style={styles.assetsTitle}> +{item.assets.length} assets </Text>
<Text style={styles.assetsTitle}> +{item.assets.length} {intl.formatMessage(globalMessages.assetsLabel)} </Text>
<Image source={expandedOut ? arrowUp : arrowDown} />
</TouchableOpacity>
)}
Expand Down
4 changes: 4 additions & 0 deletions src/i18n/global-messages.js
Expand Up @@ -524,4 +524,8 @@ export default defineMessages({
defaultMessage:
'!!!We are experiencing synchronization issues. Pull to refresh',
},
assetsLabel: {
id: 'global.assets.assetsLabel',
defaultMessage: '!!!Assets',
}
})
6 changes: 4 additions & 2 deletions src/i18n/locales/en-US.json
Expand Up @@ -223,7 +223,7 @@
"components.txhistory.txdetails.confirmations": "{cnt} {cnt, plural, one {CONFIRMATION} other {CONFIRMATIONS}}",
"components.txhistory.txdetails.fee": "Fee:",
"components.txhistory.txdetails.fromAddresses": "From Addresses",
"components.txhistory.txdetails.omittedCount": "+ {cnt} omitted",
"components.txhistory.txdetails.omittedCount": "+ {cnt} omitted addresses",
"components.txhistory.txdetails.toAddresses": "To Addresses",
"components.txhistory.txdetails.transactionId": "Transaction ID",
"components.txhistory.txdetails.txAssuranceLevel": "Transaction assurance level",
Expand Down Expand Up @@ -433,5 +433,7 @@
"global.txLabels.withdrawals": "Withdrawals",
"utils.format.today": "Today",
"utils.format.unknownAssetName": "[Unknown asset name]",
"utils.format.yesterday": "Yesterday"
"utils.format.yesterday": "Yesterday",
"global.assets.assetsLabel": "Assets",

This comment has been minimized.

Copy link
@v-almonacid

v-almonacid Feb 25, 2021

Contributor

normally we keep these keys ordered alphabetically

"components.ma.assetSelector.placeHolder": "Select a Token"
}
25 changes: 19 additions & 6 deletions src/utils/format.js
Expand Up @@ -3,7 +3,7 @@ import {BigNumber} from 'bignumber.js'
import {defineMessages} from 'react-intl'
import moment from 'moment'
import utfSymbols from './utfSymbols'

import AssetFingerprint from '@emurgo/cip14-js'

This comment has been minimized.

Copy link
@v-almonacid

v-almonacid Feb 25, 2021

Contributor

another detail: there is also a layout we try to follow for imports (see README)

import {getCardanoDefaultAsset} from '../config/config'

import type {Token, DefaultAsset} from '../types/HistoryTransaction'
Expand Down Expand Up @@ -45,10 +45,23 @@ export const getAssetDenomination = (
return token.metadata.ticker
? utfSymbols.CURRENCIES[token.metadata.ticker]
: token.metadata.ticker
case ASSET_DENOMINATION.NAME:
return token.metadata.assetName !== ''
? token.metadata.assetName
: null
case ASSET_DENOMINATION.NAME: {
if (token.metadata.assetName.length > 0) {
const bytes = [...Buffer.from(token.metadata.assetName, 'hex')]
if (bytes.filter((byte) => byte <= 32 || byte >= 127).length === 0) {
return String.fromCharCode(...bytes)
}
}
return null
}
case ASSET_DENOMINATION.FINGERPRINT: {
const {policyId, assetName} = token.metadata
const assetFingerprint = new AssetFingerprint(
Buffer.from(policyId, 'hex'),
Buffer.from(assetName, 'hex')
)
return assetFingerprint.fingerprint()
}
default:
return null
}
Expand All @@ -64,7 +77,7 @@ export const getAssetNameOrUnknown = (
token: Token | DefaultAsset,
intl: any,
): string =>
getAssetDenomination(token, ASSET_DENOMINATION.TICKER) ?? intl.formatMessage(
getAssetDenomination(token, ASSET_DENOMINATION.NAME) ?? intl.formatMessage(
messages.unknownAssetName,
)

Expand Down
13 changes: 13 additions & 0 deletions yarn.lock
Expand Up @@ -2030,6 +2030,14 @@
resolved "https://registry.yarnpkg.com/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-6.0.0.tgz#6496fbe34e5ac0af522ed0fe6919c34bedb00283"
integrity sha512-8PaFFGqd2hD0KcSMcFh2f6VZx3G6wpzl4KhwiwyuEhUd+NWYT5ITQNFBmST0pJ6yQPP99/6Z3nc1L1dk60fGGA==

"@emurgo/cip14-js@2.0.0":
version "2.0.0"
resolved "https://registry.yarnpkg.com/@emurgo/cip14-js/-/cip14-js-2.0.0.tgz#6ef78ddac8a35f2725e9ccebfd5ae114716c4b48"
integrity sha512-EvjgTs4NCqH1j0wxXqWCj31P7NmTzl3aR+9am0OLSsf3NA9GsdKH5QNyXJrvSZILM4yWzlZNum3y8S5PfdM1aA==
dependencies:
bech32 "2.0.0"
blake2b "2.1.3"

"@emurgo/cip4-js@1.0.5":
version "1.0.5"
resolved "https://registry.yarnpkg.com/@emurgo/cip4-js/-/cip4-js-1.0.5.tgz#b99ca25024b61743cc6fc733011e3dc8da21d622"
Expand Down Expand Up @@ -4727,6 +4735,11 @@ bcrypt-pbkdf@^1.0.0:
dependencies:
tweetnacl "^0.14.3"

bech32@2.0.0, bech32@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/bech32/-/bech32-2.0.0.tgz#078d3686535075c8c79709f054b1b226a133b355"
integrity sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==

bech32@^1.1.4:
version "1.1.4"
resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9"
Expand Down

0 comments on commit 20fbcc6

Please sign in to comment.