Skip to content

Commit

Permalink
fix: shadow 3
Browse files Browse the repository at this point in the history
  • Loading branch information
stackchain committed Nov 27, 2022
1 parent 399da01 commit 003c4fa
Show file tree
Hide file tree
Showing 16 changed files with 109 additions and 92 deletions.
Expand Up @@ -25,9 +25,9 @@ export const ConfirmTxWithHW = (props: Props) => {
const [transportType, setTransportType] = React.useState<TransportType>('USB')
const [step, setStep] = React.useState<'select-transport' | 'connect-transport' | 'confirm'>('select-transport')

const onSelectTransport = (transportType: TransportType) => {
const onSelectTransport = (newTransportType: TransportType) => {
LayoutAnimation.configureNext(LayoutAnimation.Presets.easeInEaseOut)
setTransportType(transportType)
setTransportType(newTransportType)
setStep('connect-transport')
}

Expand Down
6 changes: 3 additions & 3 deletions src/HW/LedgerConnect/DeviceItem/DeviceItem.stories.tsx
Expand Up @@ -12,10 +12,10 @@ const device: Device = {

const doTheThing = () => new Promise((resolve) => setTimeout(resolve, 1000))

const onSelect = async (device) => {
action('onSelect start')(device)
const onSelect = async (selectedDevice) => {
action('onSelect start')(selectedDevice)
await doTheThing()
action('onSelect end')(device)
action('onSelect end')(selectedDevice)
}

storiesOf('Device Item Button', module).add('default', () => <DeviceItem onSelect={onSelect} device={device} />)
18 changes: 9 additions & 9 deletions src/HW/LedgerConnect/LedgerConnect.tsx
Expand Up @@ -49,8 +49,7 @@ type State = {
waiting: boolean
}

// eslint-disable-next-line react-prefer-function-component/react-prefer-function-component
class _LedgerConnect extends React.Component<Props, State> {
class WrapperLedgerConnect extends React.Component<Props, State> {
state: State = {
devices: this.props.defaultDevices ? this.props.defaultDevices : [],
deviceId: null,
Expand Down Expand Up @@ -221,12 +220,6 @@ class _LedgerConnect extends React.Component<Props, State> {
const {error, waiting, deviceObj} = this.state
const {intl, onWaitingMessage} = this.props

const ListHeaderWrapper = ({msg, err}: {msg: string; err?: string | null}) => (
<View style={styles.listHeader}>
<Text style={[styles.paragraph, styles.paragraphText]}>{msg}</Text>
{err != null && <Text style={[styles.error, styles.paragraphText]}>{err}</Text>}
</View>
)
let msg, errMsg
if (error != null) {
msg = intl.formatMessage(messages.error)
Expand Down Expand Up @@ -315,7 +308,14 @@ class _LedgerConnect extends React.Component<Props, State> {
}
}

export const LedgerConnect = injectIntl(_LedgerConnect)
const ListHeaderWrapper = ({msg, err}: {msg: string; err?: string | null}) => (
<View style={styles.listHeader}>
<Text style={[styles.paragraph, styles.paragraphText]}>{msg}</Text>
{err != null && <Text style={[styles.error, styles.paragraphText]}>{err}</Text>}
</View>
)

export const LedgerConnect = injectIntl(WrapperLedgerConnect)

const messages = defineMessages({
caption: {
Expand Down
4 changes: 2 additions & 2 deletions src/MaintenanceScreen.tsx
Expand Up @@ -6,7 +6,7 @@ import {useDispatch} from 'react-redux'
import image from './assets/img/error.png'
import {Button, Link, Modal, Text} from './components'
import globalMessages from './i18n/global-messages'
import {initApp} from './legacy/actions'
import {initApp as initAppAction} from './legacy/actions'
import {COLORS, spacing} from './theme'

const URL = 'https://twitter.com/YoroiWallet'
Expand Down Expand Up @@ -71,7 +71,7 @@ export const MaintenanceScreen = () => {
visible
onRequestClose={() => BackHandler.exitApp()}
intl={intl}
initApp={() => dispatch(initApp())}
initApp={() => dispatch(initAppAction())}
/>
)
}
Expand Down
19 changes: 12 additions & 7 deletions src/WalletInit/MnemonicInput/MnemonicInput.tsx
Expand Up @@ -66,7 +66,7 @@ const MnemonicWordsInput = ({onSelect, words}: MnemonicWordsInputProps) => {
style={{padding: 4, flexDirection: 'row', flexWrap: 'wrap', justifyContent: 'space-around'}}
testID="mnemonicInputsView"
>
{words.map((word, index) => (
{words.map((_, index) => (
<View
key={index}
style={{width: '33%', padding: 4}}
Expand Down Expand Up @@ -105,9 +105,9 @@ const MnemonicWordInput = React.forwardRef<RNTextInput, MnemonicWordInputProps>(
const [menuEnabled, setMenuEnabled] = React.useState(false)
const dateTime = React.useRef<number>()

const selectWord = (word: string) => {
setWord(normalizeText(word))
onSelect(normalizeText(word))
const selectWord = (selectedWord: string) => {
setWord(normalizeText(selectedWord))
onSelect(normalizeText(selectedWord))

if (dateTime.current == null) throw new Error()
setTimeout(() => {
Expand Down Expand Up @@ -136,7 +136,7 @@ const MnemonicWordInput = React.forwardRef<RNTextInput, MnemonicWordInputProps>(
setMenuEnabled(true)
dateTime.current = Date.now()
}}
onChangeText={(word) => setWord(normalizeText(word))}
onChangeText={(newWord) => setWord(normalizeText(newWord))}
enablesReturnKeyAutomatically
blurOnSubmit={false}
onSubmitEditing={onSubmitEditing}
Expand All @@ -155,8 +155,13 @@ const MnemonicWordInput = React.forwardRef<RNTextInput, MnemonicWordInputProps>(
}}
>
<ScrollView style={styles.menuScrollView} keyboardShouldPersistTaps="always">
{matchingWords.map((word) => (
<Menu.Item titleStyle={styles.menuItemText} key={word} title={word} onPress={() => selectWord(word)} />
{matchingWords.map((mactchingWord) => (
<Menu.Item
titleStyle={styles.menuItemText}
key={mactchingWord}
title={mactchingWord}
onPress={() => selectWord(mactchingWord)}
/>
))}
</ScrollView>
</Menu>
Expand Down
38 changes: 19 additions & 19 deletions src/WalletInit/VerifyRestoredWallet/VerifyRestoredWalletScreen.tsx
Expand Up @@ -137,6 +137,23 @@ const useStrings = () => {
}
}

const getPlate = async (
walletImplementationId: WalletImplementationId,
networkId: NetworkId,
mnemonic: string,
count: number,
) => {
switch (walletImplementationId) {
case WALLET_IMPLEMENTATION_REGISTRY.HASKELL_SHELLEY:
case WALLET_IMPLEMENTATION_REGISTRY.HASKELL_SHELLEY_24:
return generateShelleyPlateFromMnemonics(mnemonic, count, networkId)
case WALLET_IMPLEMENTATION_REGISTRY.HASKELL_BYRON:
return generateByronPlateFromMnemonics(mnemonic, count)
default:
throw new Error('wallet implementation id is not valid')
}
}

const usePlateFromMnemonic = ({
mnemonic,
networkId,
Expand All @@ -150,26 +167,9 @@ const usePlateFromMnemonic = ({
const [plate, setPlate] = useState<undefined | CardanoTypes.WalletChecksum>(undefined)

useEffect(() => {
const getPlate = async (
walletImplId: WalletImplementationId,
networkId: NetworkId,
mnemonic: string,
count: number,
) => {
switch (walletImplId) {
case WALLET_IMPLEMENTATION_REGISTRY.HASKELL_SHELLEY:
case WALLET_IMPLEMENTATION_REGISTRY.HASKELL_SHELLEY_24:
return generateShelleyPlateFromMnemonics(mnemonic, count, networkId)
case WALLET_IMPLEMENTATION_REGISTRY.HASKELL_BYRON:
return generateByronPlateFromMnemonics(mnemonic, count)
default:
throw new Error('wallet implementation id is not valid')
}
}

const generatePlates = async () => {
const {addresses, accountPlate} = await getPlate(walletImplementationId, networkId, mnemonic, 1)
setAddresses(addresses)
const {addresses: newAddresses, accountPlate} = await getPlate(walletImplementationId, networkId, mnemonic, 1)
setAddresses(newAddresses)
setPlate(accountPlate)
}

Expand Down
4 changes: 2 additions & 2 deletions src/auth/CreatePinInput/CreatePinInput.tsx
Expand Up @@ -27,8 +27,8 @@ export const CreatePinInput = ({onDone}: Props) => {
const [pin, setPin] = React.useState('')
const [step, setStep] = React.useState<'pin' | 'pinConfirmation'>('pin')

const onPinInput = (pin: string) => {
setPin(pin)
const onPinInput = (newPin: string) => {
setPin(newPin)
setStep('pinConfirmation')
}

Expand Down
1 change: 0 additions & 1 deletion src/components/Boundary/Boundary.stories.tsx
Expand Up @@ -167,7 +167,6 @@ const LoadingWithOverlay = () => {

<Button
onPress={() => {
console.log('refetch', Date.now())
refetch()
}}
title="Refetch"
Expand Down
12 changes: 6 additions & 6 deletions src/components/ConfirmTx/ConfirmTx.tsx
Expand Up @@ -88,18 +88,18 @@ export const ConfirmTx = ({
setDialogStep(DialogStep.Error)
}

const onConfirmationChooseTransport = (useUSB: boolean) => {
const onConfirmationChooseTransport = (newUseUSB: boolean) => {
if (!wallet.hwDeviceInfo) throw new Error('No device info')
setUseUSB(useUSB)
setUseUSB(newUseUSB)
setDialogStep(DialogStep.LedgerConnect)
}

const onMountChooseTransport = (useUSB: boolean) => {
const onMountChooseTransport = (newUseUSB: boolean) => {
if (!wallet.hwDeviceInfo) throw new Error('No device info')
setUseUSB(useUSB)
setUseUSB(newUseUSB)
if (
(useUSB && wallet.hwDeviceInfo.hwFeatures.deviceObj == null) ||
(!useUSB && wallet.hwDeviceInfo.hwFeatures.deviceId == null)
(newUseUSB && wallet.hwDeviceInfo.hwFeatures.deviceObj == null) ||
(!newUseUSB && wallet.hwDeviceInfo.hwFeatures.deviceId == null)
) {
setDialogStep(DialogStep.LedgerConnect)
} else {
Expand Down
4 changes: 2 additions & 2 deletions src/components/ConfirmTx/Dialog.tsx
Expand Up @@ -2,7 +2,7 @@ import React from 'react'
import {useIntl} from 'react-intl'

import {ErrorView, Modal, PleaseWaitView} from '../../components'
import {LedgerConnect, LedgerTransportSwitchView} from '../../HW'
import {LedgerConnect as LedgerConnectView, LedgerTransportSwitchView} from '../../HW'
import globalMessages, {ledgerMessages, txLabels} from '../../i18n/global-messages'
import type {DeviceId, DeviceObj} from '../../legacy/ledgerUtils'

Expand Down Expand Up @@ -71,7 +71,7 @@ export const DialogWithLedger = ({
/>
)
case Step.LedgerConnect:
return <LedgerConnect onConnectBLE={onConnectBLE} onConnectUSB={onConnectUSB} useUSB={useUSB} />
return <LedgerConnectView onConnectBLE={onConnectBLE} onConnectUSB={onConnectUSB} useUSB={useUSB} />
case Step.WaitingHwResponse:
return <PleaseWaitView title={strings.continueOnLedger} spinnerText={strings.followSteps} />
case Step.Signing:
Expand Down
35 changes: 24 additions & 11 deletions src/components/PinInputKeyboard/PinInputKeyboard.tsx
Expand Up @@ -63,26 +63,39 @@ export const PinInputKeyboard = ({onPinChange, pinLength}: Props) => {
return (
<View style={styles.keyboard}>
<Row>
{keyboard[0].map((value) => (
<KeyboardKey key={value} value={value} onKeyDown={(value) => processPin(pin, updatePin, pinLength, value)} />
{keyboard[0].map((digit) => (
<KeyboardKey
key={digit}
value={digit}
onKeyDown={(newDigit) => processPin(pin, updatePin, pinLength, newDigit)}
/>
))}
</Row>

<Row>
{keyboard[1].map((value) => (
<KeyboardKey key={value} value={value} onKeyDown={(value) => processPin(pin, updatePin, pinLength, value)} />
{keyboard[1].map((digit) => (
<KeyboardKey
key={digit}
value={digit}
onKeyDown={(newDigit) => processPin(pin, updatePin, pinLength, newDigit)}
/>
))}
</Row>

<Row>
{keyboard[2].map((value) => (
<KeyboardKey key={value} value={value} onKeyDown={(value) => processPin(pin, updatePin, pinLength, value)} />
{keyboard[2].map((digit) => (
<KeyboardKey
key={digit}
value={digit}
onKeyDown={(newDigit) => processPin(pin, updatePin, pinLength, newDigit)}
/>
))}
</Row>

<Row>
{keyboard[3].map((value) => (
<KeyboardKey key={value} value={value} onKeyDown={(value) => processPin(pin, updatePin, pinLength, value)} />
{keyboard[3].map((digit) => (
<KeyboardKey
key={digit}
value={digit}
onKeyDown={(newDigit) => processPin(pin, updatePin, pinLength, newDigit)}
/>
))}
</Row>
</View>
Expand Down
2 changes: 1 addition & 1 deletion src/legacy/ledgerUtils.ts
Expand Up @@ -376,7 +376,7 @@ export const verifyAddress = async (
}
}

const addressingMap = (address) => stakingKeyAddressing[address]
const addressingMap = (stakeAddress) => stakingKeyAddressing[stakeAddress]

const addressParams = await toLedgerAddressParameters({
networkId: Number.parseInt(chainNetworkId, 10),
Expand Down
14 changes: 7 additions & 7 deletions src/legacy/processTransactions.ts
Expand Up @@ -198,32 +198,32 @@ export const processTxHistoryData = (
// included in own utxo outputs
const delta = _sum(ownUtxoOutputs, networkId).joinSubtractMutable(_sum(ownUtxoInputs, networkId))

let amount
let txAmount
let fee
const remoteFee = tx.fee != null ? _strToDefaultMultiAsset(new BigNumber(tx.fee).times(-1).toString()) : null
let direction

if (isInvalidScriptExecution) {
direction = TRANSACTION_DIRECTION.SELF
amount = brutto
txAmount = brutto
// NOTE: the collateral is the fee when it has failed
fee = null
} else if (isIntraWallet) {
direction = TRANSACTION_DIRECTION.SELF
amount = _strToDefaultMultiAsset('0')
txAmount = _strToDefaultMultiAsset('0')
fee = remoteFee ?? totalFee
} else if (isMultiParty) {
direction = TRANSACTION_DIRECTION.MULTI
amount = brutto
txAmount = brutto
fee = null
} else if (hasOnlyOwnInputs) {
direction = TRANSACTION_DIRECTION.SENT
amount = brutto.joinSubtractMutable(totalFee)
txAmount = brutto.joinSubtractMutable(totalFee)
fee = remoteFee ?? totalFee
} else {
assert.assert(ownInputs.length === 0, 'This cannot be receiving transaction')
direction = TRANSACTION_DIRECTION.RECEIVED
amount = brutto
txAmount = brutto
fee = null
}

Expand All @@ -248,7 +248,7 @@ export const processTxHistoryData = (
amount,
assets: assets.map(_remoteAssetAsTokenEntry),
})),
amount: amount.asArray(),
amount: txAmount.asArray(),
fee: fee != null ? fee.asArray() : null,
delta: delta.asArray(),
confirmations,
Expand Down
2 changes: 1 addition & 1 deletion src/yoroi-wallets/cardano/ShelleyWallet.ts
Expand Up @@ -757,7 +757,7 @@ export class ShelleyWallet implements WalletInterface {

const absSlotNumber = new BigNumber(timeToSlotFn({time}).slot)
const votingPublicKey = await Promise.resolve(Buffer.from(catalystKeyHex, 'hex'))
.then((bytes) => CardanoMobile.PrivateKey.fromExtendedBytes(bytes))
.then((keyInBytes) => CardanoMobile.PrivateKey.fromExtendedBytes(keyInBytes))
.then((key) => key.toPublic())
const stakingKeyPath = this.getStakingKeyPath()
const stakingPublicKey = await this.getStakingKey()
Expand Down
4 changes: 2 additions & 2 deletions src/yoroi-wallets/cardano/chain.test.ts
Expand Up @@ -93,13 +93,13 @@ describe('AddressChain', () => {
const data = chain.toJSON()
const chain2 = AddressChain.fromJSON(data, networkId)

const used = [
const usedAddresses = [
// '2cWKMJemoBaiAKW7iBFgK3prZAK3gAEgkndCUTkGpUAoRofmXJcbmie2qe6JTN44dQ2Ag', // byron testnet
'Ae2tdPwUPEZ6ipzynAWN6atmb9LNqEogput2NrMD3Z8UL7phtQLDhrKt1bf', // byron mainnet
]

const filter = (addresses) => {
return Promise.resolve(addresses.filter((addr) => used.includes(addr)))
return Promise.resolve(addresses.filter((addr) => usedAddresses.includes(addr)))
}
await chain.sync(filter)
await chain2.sync(filter)
Expand Down

0 comments on commit 003c4fa

Please sign in to comment.