From 96c3539422d28b033c8e3fb6552633745c5a1523 Mon Sep 17 00:00:00 2001 From: Hanwen Cheng Date: Mon, 29 Jul 2019 11:58:39 +0200 Subject: [PATCH 1/5] fix: scrollview drag problem --- android/app/src/main/AndroidManifest.xml | 2 +- src/components/KeyboardScrollView.js | 30 ++++++++++++++++++++++++ src/screens/AccountNew.js | 13 ++++------ src/screens/AccountRecover.js | 23 +++++------------- 4 files changed, 42 insertions(+), 26 deletions(-) create mode 100644 src/components/KeyboardScrollView.js diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 0b0cc04276..58caed1e4d 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -26,7 +26,7 @@ android:name=".MainActivity" android:label="@string/app_name" android:configChanges="keyboard|keyboardHidden|orientation|screenSize" - android:windowSoftInputMode="stateAlwaysHidden|adjustPan"> + android:windowSoftInputMode="adjustPan"> diff --git a/src/components/KeyboardScrollView.js b/src/components/KeyboardScrollView.js new file mode 100644 index 0000000000..174a2cec91 --- /dev/null +++ b/src/components/KeyboardScrollView.js @@ -0,0 +1,30 @@ +import React from "react"; +import {Keyboard, Platform} from "react-native"; +import { KeyboardAwareScrollView } from "react-native-keyboard-aware-scroll-view"; + + +//TODO change to normal react element +class KeyboardScrollView extends React.Component { + + render() { + const defaultProps = {enableAutomaticScroll: true, extraHeight: 200}; + return Platform.select({ + ios: , + android: + }) + } +}; + +export default KeyboardScrollView; diff --git a/src/screens/AccountNew.js b/src/screens/AccountNew.js index 1dbc3c5857..8025b6ca28 100644 --- a/src/screens/AccountNew.js +++ b/src/screens/AccountNew.js @@ -56,14 +56,12 @@ class AccountNewView extends React.Component { } return ( - + - CREATE ACCOUNT CHOOSE NETWORK @@ -102,7 +100,6 @@ class AccountNewView extends React.Component { }} /> - ); diff --git a/src/screens/AccountRecover.js b/src/screens/AccountRecover.js index 9b89aab78a..3bbbc6e040 100644 --- a/src/screens/AccountRecover.js +++ b/src/screens/AccountRecover.js @@ -33,6 +33,7 @@ import AccountsStore from '../stores/AccountsStore'; import { validateSeed } from '../util/account'; import { debounce } from '../util/debounce' import { brainWalletAddress } from '../util/native'; +import KeyboardScrollView from "../components/KeyboardScrollView"; export default class AccountRecover extends React.Component { static navigationOptions = { @@ -62,36 +63,25 @@ class AccountRecoverView extends React.Component { brainWalletAddress(seed) .then(({ address, bip39 }) => accounts.updateNew({address, seed, validBip39Seed: bip39})) .catch(console.error); - } + }; debouncedAddressGeneration = debounce(this.addressGeneration, 200) componentWillUnmount = function () { // called when the user goes back, or finishes the whole recovery process this.props.accounts.updateNew({seed : ''}); - } + }; render() { const { accounts } = this.props; const selected = accounts.getNew(); const networkKey = selected.networkKey; const network = NETWORK_LIST[networkKey]; - return ( - + - { - this.scroll = ref; - }} - > RECOVER ACCOUNT CHOOSE NETWORK @@ -169,8 +159,7 @@ class AccountRecoverView extends React.Component { }); }} /> - - + ); } From 10e97b4301e15079d69bd661b28e65c64017aed1 Mon Sep 17 00:00:00 2001 From: Hanwen Cheng Date: Mon, 29 Jul 2019 12:20:58 +0200 Subject: [PATCH 2/5] fix: persistant scroll on each click --- src/screens/AccountRecover.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/screens/AccountRecover.js b/src/screens/AccountRecover.js index 3bbbc6e040..1cd9018b0f 100644 --- a/src/screens/AccountRecover.js +++ b/src/screens/AccountRecover.js @@ -17,8 +17,7 @@ 'use strict'; import React from 'react'; -import { Alert, SafeAreaView, ScrollView, StyleSheet, Text } from 'react-native'; -import { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view' +import {Alert, SafeAreaView, StyleSheet, Text, findNodeHandle} from 'react-native'; import { Subscribe } from 'unstated'; import colors from '../colors'; @@ -80,6 +79,9 @@ class AccountRecoverView extends React.Component { return ( { + this.scroll = ref + }} contentContainerStyle={{ justifyContent: 'flex-end' }}> RECOVER ACCOUNT @@ -95,6 +97,10 @@ class AccountRecoverView extends React.Component { ENTER RECOVERY WORDS { + this.scroll.props.scrollToFocusedInput(findNodeHandle(event.target)); + }} + ref={this._seed} valid={validateSeed(selected.seed, selected.validBip39Seed).valid} onChangeText={seed => { this.debouncedAddressGeneration(seed); From 0d29f307c7ef7fb8e44b29ae433b1142260d4702 Mon Sep 17 00:00:00 2001 From: Hanwen Cheng Date: Mon, 29 Jul 2019 12:27:53 +0200 Subject: [PATCH 3/5] fix: align seed input to top on Android --- src/components/AccountSeed.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/AccountSeed.js b/src/components/AccountSeed.js index a29a761787..3dead6b8a0 100644 --- a/src/components/AccountSeed.js +++ b/src/components/AccountSeed.js @@ -132,6 +132,7 @@ export default class AccountSeed extends Component { style={[styles.input, invalidStyles]} multiline autoCapitalize="none" + textAlignVertical="top" onSelectionChange={this.handleCursorPosition} {...this.props} /> From b40b6dac46916436380f96cb4523e7e656e5ee9f Mon Sep 17 00:00:00 2001 From: Hanwen Cheng Date: Mon, 29 Jul 2019 12:59:05 +0200 Subject: [PATCH 4/5] fix: code prettier --- src/components/KeyboardScrollView.js | 47 ++++--- src/screens/AccountNew.js | 91 ++++++------ src/screens/AccountRecover.js | 202 ++++++++++++++------------- 3 files changed, 173 insertions(+), 167 deletions(-) diff --git a/src/components/KeyboardScrollView.js b/src/components/KeyboardScrollView.js index 174a2cec91..bdff46d0ca 100644 --- a/src/components/KeyboardScrollView.js +++ b/src/components/KeyboardScrollView.js @@ -1,30 +1,31 @@ -import React from "react"; -import {Keyboard, Platform} from "react-native"; -import { KeyboardAwareScrollView } from "react-native-keyboard-aware-scroll-view"; +import React from 'react'; +import { Keyboard, Platform } from 'react-native'; +import { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view'; - -//TODO change to normal react element class KeyboardScrollView extends React.Component { - render() { - const defaultProps = {enableAutomaticScroll: true, extraHeight: 200}; + const defaultProps = { enableAutomaticScroll: true }; return Platform.select({ - ios: , - android: - }) + ios: ( + + ), + android: ( + + ) + }); } -}; +} export default KeyboardScrollView; diff --git a/src/screens/AccountNew.js b/src/screens/AccountNew.js index 8025b6ca28..e195b0c9c2 100644 --- a/src/screens/AccountNew.js +++ b/src/screens/AccountNew.js @@ -17,8 +17,7 @@ 'use strict'; import React from 'react'; -import { StyleSheet, ScrollView, Text, View } from 'react-native'; -import { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view' +import { StyleSheet, Text, View } from 'react-native'; import { Subscribe } from 'unstated'; import colors from '../colors'; @@ -26,11 +25,11 @@ import AccountIconChooser from '../components/AccountIconChooser'; import Background from '../components/Background'; import Button from '../components/Button'; import TextInput from '../components/TextInput'; -import TouchableItem from '../components/TouchableItem'; import { NETWORK_LIST } from '../constants'; import AccountsStore from '../stores/AccountsStore'; import { validateSeed } from '../util/account'; import NetworkButton from '../components/NetworkButton'; +import KeyboardScrollView from '../components/KeyboardScrollView'; export default class AccountNew extends React.Component { static navigationOptions = { @@ -56,51 +55,49 @@ class AccountNewView extends React.Component { } return ( - + - - CREATE ACCOUNT - CHOOSE NETWORK - - - CHOOSE AN IDENTICON - - { - accounts.updateNew({ address, seed, validBip39Seed: bip39 }); - }} - /> - ACCOUNT NAME - accounts.updateNew({ name })} - value={selected && selected.name} - placeholder="Enter a new account name" - /> - - - - On the next step you will be asked to backup your account, get pen - and paper ready - -