Browse Source

Merge pull request #1163 from gre/hotfixes/1.0.3

Prepare for 1.0.3
master
Gaëtan Renaudeau 7 years ago
committed by GitHub
parent
commit
1706303370
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      package.json
  2. 6
      src/actions/settings.js
  3. 4
      src/bridge/RippleJSBridge.js
  4. 5
      src/commands/libcoreSignAndBroadcast.js
  5. 40
      src/components/Onboarding/index.js
  6. 11
      src/components/OnboardingOrElse.js
  7. 12
      src/components/SettingsPage/LaunchOnboardingBtn.js
  8. 8
      src/components/layout/Default.js
  9. 12
      src/reducers/onboarding.js
  10. 6
      yarn.lock

2
package.json

@ -35,7 +35,7 @@
"webpack-sources": "1.0.1"
},
"dependencies": {
"@ledgerhq/hw-app-btc": "^4.13.0",
"@ledgerhq/hw-app-btc": "4.20.0",
"@ledgerhq/hw-app-eth": "^4.14.0",
"@ledgerhq/hw-app-xrp": "^4.13.0",
"@ledgerhq/hw-transport": "^4.13.0",

6
src/actions/settings.js

@ -15,7 +15,11 @@ export const setDeveloperMode = (developerMode: boolean) => saveSettings({ devel
export const setSentryLogs = (sentryLogs: boolean) => saveSettings({ sentryLogs })
export const setShareAnalytics = (shareAnalytics: boolean) => saveSettings({ shareAnalytics })
export const setMarketIndicator = (marketIndicator: *) => saveSettings({ marketIndicator })
export const setCounterValue = (counterValue: string) => saveSettings({ counterValue })
export const setCounterValue = (counterValue: string) =>
saveSettings({
counterValue,
counterValueExchange: null,
})
export const setLanguage = (language: ?string) => saveSettings({ language })
export const setRegion = (region: ?string) => saveSettings({ region })
export const setCounterValueExchange = (counterValueExchange: ?string) =>

4
src/bridge/RippleJSBridge.js

@ -192,11 +192,9 @@ type Tx = {
const txToOperation = (account: Account) => ({
id,
sequence,
type: txType,
outcome: { fee, deliveredAmount, ledgerVersion, timestamp },
specification: { source, destination },
}: Tx): ?Operation => {
if (txType === 'trustline') return null
const type = source.address === account.freshAddress ? 'OUT' : 'IN'
let value = deliveredAmount ? parseAPICurrencyObject(deliveredAmount) : 0
const feeValue = parseAPIValue(fee)
@ -318,6 +316,7 @@ const RippleJSBridge: WalletBridge<Transaction> = {
const transactions = await api.getTransactions(address, {
minLedgerVersion,
maxLedgerVersion,
types: ['payment'],
})
if (finished) return
@ -406,6 +405,7 @@ const RippleJSBridge: WalletBridge<Transaction> = {
minLedgerVersion,
),
maxLedgerVersion,
types: ['payment'],
})
if (finished) return

5
src/commands/libcoreSignAndBroadcast.js

@ -77,7 +77,9 @@ async function signTransaction({
hasTimestamp: boolean,
}) {
const additionals = []
let expiryHeight
if (currencyId === 'bitcoin_cash' || currencyId === 'bitcoin_gold') additionals.push('bip143')
if (currencyId === 'zcash') expiryHeight = Buffer.from([0x00, 0x00, 0x00, 0x00])
const rawInputs = transaction.getInputs()
const inputs = await Promise.all(
@ -119,7 +121,7 @@ async function signTransaction({
const changePath = output ? output.getDerivationPath().toString() : undefined
const outputScriptHex = Buffer.from(transaction.serializeOutputs()).toString('hex')
const lockTime = transaction.getLockTime()
const lockTime = undefined // TODO: transaction.getLockTime()
const initialTimestamp = hasTimestamp ? transaction.getTimestamp() : undefined
const signedTransaction = await hwApp.createPaymentTransactionNew(
@ -132,6 +134,7 @@ async function signTransaction({
isSegwit,
initialTimestamp,
additionals,
expiryHeight,
)
return signedTransaction

40
src/components/Onboarding/index.js

@ -5,6 +5,7 @@ import { compose } from 'redux'
import { translate } from 'react-i18next'
import { connect } from 'react-redux'
import styled from 'styled-components'
import IconCross from 'icons/Cross'
import type { T } from 'types/common'
import type { OnboardingState } from 'reducers/onboarding'
@ -20,6 +21,8 @@ import {
updateGenuineCheck,
isLedgerNano,
flowType,
relaunchOnboarding,
onboardingRelaunchedSelector,
} from 'reducers/onboarding'
import { getCurrentDevice } from 'reducers/devices'
@ -54,6 +57,7 @@ const STEPS = {
const mapStateToProps = state => ({
hasCompletedOnboarding: state.settings.hasCompletedOnboarding,
onboardingRelaunched: onboardingRelaunchedSelector(state),
onboarding: state.onboarding,
settings: state.settings,
getCurrentDevice: getCurrentDevice(state),
@ -66,11 +70,13 @@ const mapDispatchToProps = {
jumpStep,
unlock,
openModal,
relaunchOnboarding,
}
type Props = {
t: T,
hasCompletedOnboarding: boolean,
onboardingRelaunched: boolean,
saveSettings: Function,
onboarding: OnboardingState,
settings: SettingsState,
@ -80,6 +86,7 @@ type Props = {
getCurrentDevice: Function,
unlock: Function,
openModal: string => void,
relaunchOnboarding: boolean => void,
}
export type StepProps = {
@ -99,10 +106,33 @@ export type StepProps = {
flowType: Function,
}
const CloseContainer = styled(Box).attrs({
p: 4,
color: 'fog',
})`
cursor: pointer;
position: absolute;
top: 0;
right: 0;
z-index: 1;
&:hover {
color: ${p => p.theme.colors.grey};
}
&:active {
color: ${p => p.theme.colors.dark};
}
`
class Onboarding extends PureComponent<Props> {
getDeviceInfo = () => this.props.getCurrentDevice
cancelRelaunch = () => {
this.props.relaunchOnboarding(false)
}
finish = () => {
this.props.saveSettings({ hasCompletedOnboarding: true })
this.props.relaunchOnboarding(false)
setTimeout(() => {
this.props.openModal(MODAL_DISCLAIMER)
}, MODAL_DISCLAIMER_DELAY)
@ -119,17 +149,14 @@ class Onboarding extends PureComponent<Props> {
render() {
const {
hasCompletedOnboarding,
onboarding,
prevStep,
nextStep,
jumpStep,
settings,
t,
onboardingRelaunched,
} = this.props
if (hasCompletedOnboarding) {
return null
}
const StepComponent = STEPS[onboarding.stepName]
const step = onboarding.steps[onboarding.stepIndex]
@ -159,6 +186,11 @@ class Onboarding extends PureComponent<Props> {
return (
<Container>
{step.options.showBreadcrumb && <OnboardingBreadcrumb />}
{onboardingRelaunched ? (
<CloseContainer onClick={this.cancelRelaunch}>
<IconCross size={16} />
</CloseContainer>
) : null}
<StepContainer>
<StepComponent {...stepProps} />
</StepContainer>

11
src/components/OnboardingOrElse.js

@ -4,25 +4,28 @@ import React, { PureComponent } from 'react'
import { connect } from 'react-redux'
import { createStructuredSelector } from 'reselect'
import { hasCompletedOnboardingSelector } from 'reducers/settings'
import { onboardingRelaunchedSelector } from 'reducers/onboarding'
import Onboarding from './Onboarding'
type Props = {
hasCompletedOnboarding: boolean,
onboardingRelaunched: boolean,
children: *,
}
class OnboardingOrElse extends PureComponent<Props> {
render() {
const { hasCompletedOnboarding, children } = this.props
if (hasCompletedOnboarding) {
return children
const { hasCompletedOnboarding, onboardingRelaunched, children } = this.props
if (!hasCompletedOnboarding || onboardingRelaunched) {
return <Onboarding />
}
return <Onboarding />
return children
}
}
export default connect(
createStructuredSelector({
hasCompletedOnboarding: hasCompletedOnboardingSelector,
onboardingRelaunched: onboardingRelaunchedSelector,
}),
)(OnboardingOrElse)

12
src/components/SettingsPage/LaunchOnboardingBtn.js

@ -2,32 +2,24 @@
import React, { Fragment, PureComponent } from 'react'
import { connect } from 'react-redux'
import { saveSettings } from 'actions/settings'
import { translate } from 'react-i18next'
import type { T } from 'types/common'
import type { SettingsState } from 'reducers/settings'
import type { OnboardingState } from 'reducers/onboarding'
import Track from 'analytics/Track'
import Onboarding from 'components/Onboarding'
import Button from 'components/base/Button/index'
import { relaunchOnboarding } from 'reducers/onboarding'
const mapDispatchToProps = {
saveSettings,
relaunchOnboarding,
}
type Props = {
saveSettings: ($Shape<SettingsState>) => void,
relaunchOnboarding: ($Shape<OnboardingState>) => void,
relaunchOnboarding: boolean => void,
t: T,
}
class LaunchOnboardingBtn extends PureComponent<Props> {
handleLaunchOnboarding = () => {
this.props.saveSettings({ hasCompletedOnboarding: false })
this.props.relaunchOnboarding({ onboardingRelaunched: true })
return <Onboarding />
this.props.relaunchOnboarding(true)
}
render() {
const { t } = this.props

8
src/components/layout/Default.js

@ -88,8 +88,8 @@ class Default extends Component<Props> {
<ExportLogsBtn hookToShortcut />
<Track mandatory onMount event="App Starts" />
<OnboardingOrElse>
<IsUnlocked>
<IsUnlocked>
<OnboardingOrElse>
{Object.entries(modals).map(([name, ModalComponent]: [string, any]) => (
<ModalComponent key={name} />
))}
@ -119,8 +119,8 @@ class Default extends Component<Props> {
<KeyboardContent sequence="BJBJBJ">
<PerfIndicator />
</KeyboardContent>
</IsUnlocked>
</OnboardingOrElse>
</OnboardingOrElse>
</IsUnlocked>
</Fragment>
)
}

12
src/reducers/onboarding.js

@ -2,6 +2,7 @@
import { SKIP_ONBOARDING } from 'config/constants'
import { handleActions, createAction } from 'redux-actions'
import type { State } from '.'
type Step = {
name: string,
@ -170,14 +171,17 @@ const handlers = {
...state,
isLedgerNano,
}),
ONBOARDING_RELAUNCH: (
state: OnboardingState,
{ payload: onboardingRelaunched }: { payload: $Shape<OnboardingState> },
) => ({ ...initialState, ...onboardingRelaunched }),
ONBOARDING_RELAUNCH: (state: OnboardingState, { payload: onboardingRelaunched }) => ({
...initialState,
onboardingRelaunched,
}),
}
export default handleActions(handlers, initialState)
export const onboardingRelaunchedSelector = (s: State): ?boolean =>
s.onboarding.onboardingRelaunched
export const relaunchOnboarding = createAction('ONBOARDING_RELAUNCH')
export const nextStep = createAction('ONBOARDING_NEXT_STEP')
export const prevStep = createAction('ONBOARDING_PREV_STEP')

6
yarn.lock

@ -1474,9 +1474,9 @@
version "0.7.1"
resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-0.7.1.tgz#e44e596d03c9f16ba3b127ad333a8a072bcb5a0a"
"@ledgerhq/hw-app-btc@^4.13.0":
version "4.19.0"
resolved "https://registry.yarnpkg.com/@ledgerhq/hw-app-btc/-/hw-app-btc-4.19.0.tgz#0fdce47ad71df7783c6bf881e6a9bc8b4c84de52"
"@ledgerhq/hw-app-btc@4.20.0":
version "4.20.0"
resolved "https://registry.yarnpkg.com/@ledgerhq/hw-app-btc/-/hw-app-btc-4.20.0.tgz#116f841932c199c3a286563831154207a5aa656f"
dependencies:
"@ledgerhq/hw-transport" "^4.19.0"
create-hash "^1.1.3"

Loading…
Cancel
Save