WIP: redesign

This commit is contained in:
Overtorment 2018-06-28 02:43:28 +01:00
parent efb2688eda
commit a1c774882a
20 changed files with 273 additions and 258 deletions

View file

@ -173,7 +173,105 @@ export class BlueHeader extends Component {
borderBottomColor: 'transparent',
borderBottomWidth: 0,
}}
statusBarProps={{ barStyle: 'light-content' }}
statusBarProps={{ barStyle: 'default' }}
/>
);
}
}
export class BlueHeaderDefaultSub extends Component {
render() {
return (
<Header
{...this.props}
backgroundColor="transparent"
outerContainerStyles={{
borderBottomColor: 'transparent',
borderBottomWidth: 0,
}}
statusBarProps={{ barStyle: 'default' }}
leftComponent={
<Text
style={{
fontWeight: 'bold',
fontSize: 34,
color: BlueApp.settings.foregroundColor,
}}
>
{
// eslint-disable-next-line
this.props.leftText
}
</Text>
}
rightComponent={
<TouchableOpacity
onPress={() => {
// eslint-disable-next-line
if (this.props.onClose) this.props.onClose();
}}
>
<View style={stylesBlueIcon.box}>
<View style={stylesBlueIcon.ballTransparrent}>
<Icon
name="times"
size={16}
type="font-awesome"
color={BlueApp.settings.foregroundColor}
/>
</View>
</View>
</TouchableOpacity>
}
/>
);
}
}
export class BlueHeaderDefaultMain extends Component {
render() {
return (
<Header
{...this.props}
backgroundColor="transparent"
outerContainerStyles={{
borderBottomColor: 'transparent',
borderBottomWidth: 0,
}}
statusBarProps={{ barStyle: 'default' }}
leftComponent={
<Text
style={{
fontWeight: 'bold',
fontSize: 34,
color: BlueApp.settings.foregroundColor,
}}
>
{
// eslint-disable-next-line
this.props.leftText
}
</Text>
}
rightComponent={
<TouchableOpacity
onPress={() => {
// eslint-disable-next-line
if (this.props.onClose) this.props.onClose();
}}
>
<View style={stylesBlueIcon.box}>
<View style={stylesBlueIcon.ballTransparrent}>
<Icon
name="kebab-horizontal"
size={22}
type="octicon"
color={BlueApp.settings.foregroundColor}
/>
</View>
</View>
</TouchableOpacity>
}
/>
);
}
@ -246,6 +344,9 @@ const stylesBlueIcon = StyleSheet.create({
position: 'relative',
top: 15,
},
box: {
position: 'relative',
},
boxIncomming: {
position: 'relative',
},
@ -318,11 +419,11 @@ export class BlueRefreshIcon extends Component {
return (
<TouchableOpacity {...this.props} style={stylesBlueIcon.containerRefresh}>
<View style={stylesBlueIcon.box1}>
<View style={stylesBlueIcon.ball}>
<View style={stylesBlueIcon.ballTransparrent}>
<Ionicons
{...this.props}
name={'ios-refresh'}
size={26}
size={30}
style={{
color: BlueApp.settings.foregroundColor,
backgroundColor: 'transparent',

View file

@ -5,7 +5,6 @@ import wallets from './screen/wallets';
import send from './screen/send';
import settins from './screen/settings';
import receive from './screen/receive';
import details from './screen/receive/details';
/** @type {AppStorage} */
let BlueApp = require('./BlueApp');
@ -34,10 +33,6 @@ const Tabs = TabNavigator(
},
//
ReceiveDetails: {
screen: details,
},
},
{
tabBarPosition: 'bottom',

View file

@ -7,7 +7,7 @@
"ios"
],
"ios": {
"buildNumber": "40",
"buildNumber": "41",
"supportsTablet": false,
"isRemoteJSEnabled": false,
"bundleIdentifier": "io.bluewallet.bluewallet",

View file

@ -168,7 +168,7 @@ export class AppStorage {
* If cached password is saved - finds the correct bucket
* to save to, encrypts and then saves.
*
* @returns Result of AsyncStorage save
* @returns {Promise} Result of AsyncStorage save
*/
async saveToDisk() {
let walletsToSave = [];
@ -212,12 +212,22 @@ export class AppStorage {
* For each wallet, fetches balance from remote endpoint.
* Use getter for a specific wallet to get actual balance.
* Returns void.
* If index is present then fetch only from this specific wallet
*
* @return {Promise.<void>}
*/
async fetchWalletBalances() {
for (let wallet of this.wallets) {
await wallet.fetchBalance();
async fetchWalletBalances(index) {
if (index || index === 0) {
let c = 0;
for (let wallet of this.wallets) {
if (c++ === index) {
await wallet.fetchBalance();
}
}
} else {
for (let wallet of this.wallets) {
await wallet.fetchBalance();
}
}
}
@ -225,7 +235,7 @@ export class AppStorage {
* Fetches from remote endpoint all transactions for each wallet.
* Returns void.
* To access transactions - get them from each respective wallet.
* If index is present then fetch only from this specific wallet
* If index is present then fetch only from this specific wallet.
*
* @param index {Integer} Index of the wallet in this.wallets array,
* blank to fetch from all wallets

View file

@ -19,7 +19,7 @@ module.exports = {
create_a_wallet2: 'as many as you like',
},
add: {
title: 'Add Wallet',
title: 'add wallet',
description:
'You can either scan backup paper wallet (in WIF - Wallet Import Format), or create a new wallet. Segwit wallets supported by default.',
scan: 'Scan',
@ -27,7 +27,7 @@ module.exports = {
label_new_segwit: 'New SegWit',
},
details: {
title: 'Wallet Details',
title: 'wallet details',
address: 'Address',
type: 'Type',
label: 'Label',
@ -63,7 +63,7 @@ module.exports = {
conf: 'conf',
},
details: {
title: 'Transaction details',
title: 'transaction details',
from: 'From',
to: 'To',
},
@ -113,7 +113,7 @@ module.exports = {
},
settings: {
tabBarLabel: 'Settings',
header: 'Settings',
header: 'settings',
plausible_deniability: 'Plausible deniability...',
storage_not_encrypted: 'Storage: not encrypted',
storage_encrypted: 'Storage: encrypted',

View file

@ -1,7 +1,5 @@
import React, { Component } from 'react';
import { ScrollView, Linking, Dimensions } from 'react-native';
import Ionicons from 'react-native-vector-icons/Ionicons';
import { Icon } from 'react-native-elements';
import {
BlueLoading,
BlueSpacing20,
@ -9,7 +7,7 @@ import {
SafeBlueArea,
BlueCard,
BlueText,
BlueHeader,
BlueHeaderDefaultSub,
} from '../BlueComponents';
import PropTypes from 'prop-types';
/** @type {AppStorage} */
@ -18,14 +16,7 @@ const { height } = Dimensions.get('window');
export default class About extends Component {
static navigationOptions = {
tabBarLabel: 'About',
tabBarIcon: ({ tintColor, focused }) => (
<Ionicons
name={focused ? 'ios-settings' : 'ios-settings-outline'}
size={26}
style={{ color: tintColor }}
/>
),
tabBarVisible: false,
};
constructor(props) {
@ -48,19 +39,9 @@ export default class About extends Component {
return (
<SafeBlueArea forceInset={{ horizontal: 'always' }} style={{ flex: 1 }}>
<BlueHeader
backgroundColor={BlueApp.settings.brandingColor}
leftComponent={
<Icon
name="menu"
color={BlueApp.settings.foregroundColor}
onPress={() => this.props.navigation.navigate('DrawerToggle')}
/>
}
centerComponent={{
text: 'About',
style: { color: BlueApp.settings.foregroundColor, fontSize: 23 },
}}
<BlueHeaderDefaultSub
leftText={'about'}
onClose={() => this.props.navigation.goBack()}
/>
<BlueCard>

View file

@ -1,14 +1,14 @@
import React, { Component } from 'react';
import { Dimensions, Text, TouchableOpacity } from 'react-native';
import { Icon } from 'react-native-elements';
import Ionicons from 'react-native-vector-icons/Ionicons';
import { Dimensions, View } from 'react-native';
import QRCode from 'react-native-qrcode';
import {
BlueLoading,
BlueHeader,
BlueFormInputAddress,
SafeBlueArea,
BlueCard,
BlueHeaderDefaultSub,
BlueSpacing,
BlueSpacing40,
} from '../../BlueComponents';
import PropTypes from 'prop-types';
/** @type {AppStorage} */
@ -27,13 +27,6 @@ if (aspectRatio > 1.6) {
export default class ReceiveDetails extends Component {
static navigationOptions = {
tabBarVisible: false,
tabBarIcon: ({ tintColor, focused }) => (
<Ionicons
name={focused ? 'ios-cash' : 'ios-cash-outline'}
size={26}
style={{ color: tintColor }}
/>
),
};
constructor(props) {
@ -70,37 +63,39 @@ export default class ReceiveDetails extends Component {
return (
<SafeBlueArea style={{ flex: 1 }}>
<BlueHeader
leftComponent={
<Text
style={{
fontWeight: 'bold',
fontSize: 34,
color: BlueApp.settings.foregroundColor,
}}
>
{loc.receive.list.header}
</Text>
}
rightComponent={
<TouchableOpacity onPress={() => this.props.navigation.goBack()}>
<Icon
name="times"
size={16}
type="font-awesome"
color={BlueApp.settings.foregroundColor}
/>
</TouchableOpacity>
{(() => {
if (isIpad) {
return <BlueSpacing40 />;
} else {
return <BlueSpacing />;
}
})()}
<BlueHeaderDefaultSub
leftText={loc.receive.list.header}
onClose={() => this.props.navigation.goBack()}
/>
<BlueCard style={{ alignItems: 'center', flex: 1 }}>
<View
style={{
left: (width - ((isIpad && 250) || 312)) / 2,
}}
>
<QRCode
value={this.state.address}
size={(isIpad && 250) || 312}
bgColor={BlueApp.settings.foregroundColor}
fgColor={BlueApp.settings.brandingColor}
/>
</View>
<BlueCard
containerStyle={{
alignItems: 'center',
flex: 1,
borderColor: 'red',
borderWidth: 7,
}}
>
<BlueFormInputAddress editable value={this.state.address} />
</BlueCard>
</SafeBlueArea>

View file

@ -1,6 +1,5 @@
import React, { Component } from 'react';
import { TextInput } from 'react-native';
import Ionicons from 'react-native-vector-icons/Ionicons';
import { Text, FormValidationMessage } from 'react-native-elements';
import {
BlueLoading,
@ -18,13 +17,7 @@ let loc = require('../../loc');
export default class SendCreate extends Component {
static navigationOptions = {
tabBarIcon: ({ tintColor, focused }) => (
<Ionicons
name={focused ? 'md-paper-plane' : 'md-paper-plane'}
size={26}
style={{ color: tintColor }}
/>
),
tabBarVisible: false,
};
constructor(props) {

View file

@ -1,6 +1,5 @@
import React, { Component } from 'react';
import { ActivityIndicator, View, Dimensions } from 'react-native';
import Ionicons from 'react-native-vector-icons/Ionicons';
import { Text, FormValidationMessage } from 'react-native-elements';
import {
BlueSpacing20,
@ -32,13 +31,7 @@ const btcAddressRx = /^[a-zA-Z0-9]{26,35}$/;
export default class SendDetails extends Component {
static navigationOptions = {
tabBarIcon: ({ tintColor, focused }) => (
<Ionicons
name={focused ? 'md-paper-plane' : 'md-paper-plane'}
size={26}
style={{ color: tintColor }}
/>
),
tabBarVisible: false,
};
constructor(props) {
@ -239,7 +232,7 @@ export default class SendDetails extends Component {
<View style={{ flex: 1, flexDirection: 'row' }}>
<View style={{ flex: 0.33 }}>
<BlueButton
onPress={() => this.props.navigation.goBack()}
onPress={() => this.props.navigation.navigate('WalletsList')}
title={loc.send.details.cancel}
/>
</View>

View file

@ -8,20 +8,12 @@ import {
TouchableOpacity,
} from 'react-native';
import { Camera, Permissions } from 'expo';
import Ionicons from 'react-native-vector-icons/Ionicons';
import PropTypes from 'prop-types';
let EV = require('../../events');
export default class CameraExample extends React.Component {
static navigationOptions = {
tabBarLabel: 'Send',
tabBarIcon: ({ tintColor, focused }) => (
<Ionicons
name={focused ? 'md-paper-plane' : 'md-paper-plane'}
size={26}
style={{ color: tintColor }}
/>
),
tabBarVisible: false,
};
state = {

View file

@ -1,15 +1,14 @@
/* global alert */
import React, { Component } from 'react';
import { ScrollView, TouchableOpacity, Text, View, Picker } from 'react-native';
import Ionicons from 'react-native-vector-icons/Ionicons';
import { Icon, FormValidationMessage } from 'react-native-elements';
import { ScrollView, View, Picker } from 'react-native';
import { FormValidationMessage } from 'react-native-elements';
import {
BlueLoading,
BlueButton,
SafeBlueArea,
BlueCard,
BlueText,
BlueHeader,
BlueHeaderDefaultSub,
} from '../BlueComponents';
import PropTypes from 'prop-types';
/** @type {AppStorage} */
@ -19,15 +18,7 @@ let loc = require('../loc');
export default class Settings extends Component {
static navigationOptions = {
tabBarLabel: loc.settings.tabBarLabel,
tabBarVisible: false,
tabBarIcon: ({ tintColor, focused }) => (
<Ionicons
name={focused ? 'ios-settings' : 'ios-settings-outline'}
size={26}
style={{ color: tintColor }}
/>
),
};
constructor(props) {
@ -52,28 +43,9 @@ export default class Settings extends Component {
return (
<SafeBlueArea forceInset={{ horizontal: 'always' }} style={{ flex: 1 }}>
<BlueHeader
leftComponent={
<Text
style={{
fontWeight: 'bold',
fontSize: 34,
color: BlueApp.settings.foregroundColor,
}}
>
{loc.settings.header}
</Text>
}
rightComponent={
<TouchableOpacity onPress={() => this.props.navigation.goBack()}>
<Icon
name="times"
size={16}
type="font-awesome"
color={BlueApp.settings.foregroundColor}
/>
</TouchableOpacity>
}
<BlueHeaderDefaultSub
leftText={loc.settings.header}
onClose={() => this.props.navigation.goBack()}
/>
<BlueCard>

View file

@ -1,24 +1,12 @@
import { StackNavigator } from 'react-navigation';
import list from './transactions/list';
import details from './transactions/details';
import rbf from './transactions/RBF';
import createrbf from './transactions/RBF-create';
const TransactionsNavigator = StackNavigator(
{
TransactionsList: {
screen: list,
},
TransactionDetails: {
screen: details,
},
RBF: {
screen: rbf,
},
CreateRBF: {
screen: createrbf,
},
},
{
headerMode: 'none',

View file

@ -1,7 +1,6 @@
/** @type {AppStorage} */
import React, { Component } from 'react';
import { TextInput } from 'react-native';
import Ionicons from 'react-native-vector-icons/Ionicons';
import { Text, FormValidationMessage } from 'react-native-elements';
import {
BlueLoading,
@ -19,13 +18,7 @@ let BlueApp = require('../../BlueApp');
export default class SendCreate extends Component {
static navigationOptions = {
tabBarIcon: ({ tintColor, focused }) => (
<Ionicons
name={focused ? 'ios-list-box' : 'ios-list-box-outline'}
size={26}
style={{ color: tintColor }}
/>
),
tabBarVisible: false,
};
constructor(props) {

View file

@ -1,6 +1,5 @@
import React, { Component } from 'react';
import { ActivityIndicator, View } from 'react-native';
import Ionicons from 'react-native-vector-icons/Ionicons';
import {
BlueSpacing20,
BlueButton,
@ -16,13 +15,7 @@ let BlueApp = require('../../BlueApp');
export default class RBF extends Component {
static navigationOptions = {
tabBarIcon: ({ tintColor, focused }) => (
<Ionicons
name={focused ? 'ios-list-box' : 'ios-list-box-outline'}
size={26}
style={{ color: tintColor }}
/>
),
tabBarVisible: false,
};
constructor(props) {

View file

@ -1,29 +1,32 @@
import React, { Component } from 'react';
import { View } from 'react-native';
import Ionicons from 'react-native-vector-icons/Ionicons';
import { View, Dimensions } from 'react-native';
import {
BlueButton,
SafeBlueArea,
BlueCard,
BlueText,
BlueSpacing,
BlueHeaderDefaultSub,
BlueLoading,
BlueSpacing20,
BlueSpacing,
BlueSpacing40,
} from '../../BlueComponents';
import PropTypes from 'prop-types';
/** @type {AppStorage} */
let BlueApp = require('../../BlueApp');
let loc = require('../../loc');
const { height, width } = Dimensions.get('window');
const aspectRatio = height / width;
let isIpad;
if (aspectRatio > 1.6) {
isIpad = false;
} else {
isIpad = true;
}
export default class TransactionsDetails extends Component {
static navigationOptions = {
tabBarIcon: ({ tintColor, focused }) => (
<Ionicons
name={focused ? 'ios-list-box' : 'ios-list-box-outline'}
size={26}
style={{ color: tintColor }}
/>
),
tabBarVisible: false,
};
constructor(props) {
@ -66,15 +69,20 @@ export default class TransactionsDetails extends Component {
}
return (
<SafeBlueArea
forceInset={{ horizontal: 'always' }}
style={{ flex: 1, paddingTop: 20 }}
>
<BlueSpacing />
<BlueCard
title={loc.transactions.details.title}
style={{ alignItems: 'center', flex: 1 }}
>
<SafeBlueArea forceInset={{ horizontal: 'always' }} style={{ flex: 1 }}>
{(() => {
if (isIpad) {
return <BlueSpacing40 />;
} else {
return <BlueSpacing />;
}
})()}
<BlueHeaderDefaultSub
leftText={loc.transactions.details.title}
onClose={() => this.props.navigation.goBack()}
/>
<BlueCard>
{(() => {
if (BlueApp.tx_metadata[this.state.tx.hash]) {
if (BlueApp.tx_metadata[this.state.tx.hash]['memo']) {

View file

@ -6,6 +6,12 @@ import WalletDetails from './wallets/details';
import WalletExport from './wallets/export';
import scanQrWif from './wallets/scanQrWif';
import details from './transactions/details';
import rbf from './transactions/RBF';
import createrbf from './transactions/RBF-create';
import receiveDetails from './receive/details';
const WalletsNavigator = StackNavigator(
{
WalletsList: {
@ -23,6 +29,24 @@ const WalletsNavigator = StackNavigator(
WalletExport: {
screen: WalletExport,
},
//
TransactionDetails: {
screen: details,
},
RBF: {
screen: rbf,
},
CreateRBF: {
screen: createrbf,
},
//
ReceiveDetails: {
screen: receiveDetails,
},
},
{
headerMode: 'none',

View file

@ -1,28 +1,31 @@
import { SegwitP2SHWallet } from '../../class';
import React, { Component } from 'react';
import { ActivityIndicator, View } from 'react-native';
import Ionicons from 'react-native-vector-icons/Ionicons';
import { ActivityIndicator, Dimensions, View } from 'react-native';
import {
BlueSpacing,
BlueButton,
SafeBlueArea,
BlueCard,
BlueText,
BlueHeaderDefaultSub,
BlueSpacing40,
} from '../../BlueComponents';
import PropTypes from 'prop-types';
let EV = require('../../events');
let BlueApp = require('../../BlueApp');
let loc = require('../../loc');
const { height, width } = Dimensions.get('window');
const aspectRatio = height / width;
let isIpad;
if (aspectRatio > 1.6) {
isIpad = false;
} else {
isIpad = true;
}
export default class WalletsAdd extends Component {
static navigationOptions = {
tabBarIcon: ({ tintColor, focused }) => (
<Ionicons
name={focused ? 'ios-briefcase' : 'ios-briefcase-outline'}
size={26}
style={{ color: tintColor }}
/>
),
tabBarVisible: false,
};
constructor(props) {
@ -52,8 +55,19 @@ export default class WalletsAdd extends Component {
forceInset={{ horizontal: 'always' }}
style={{ flex: 1, paddingTop: 40 }}
>
<BlueSpacing />
<BlueCard title={loc.wallets.add.title}>
{(() => {
if (isIpad) {
return <BlueSpacing40 />;
} else {
return <BlueSpacing />;
}
})()}
<BlueHeaderDefaultSub
leftText={loc.wallets.add.title}
onClose={() => this.props.navigation.goBack()}
/>
<BlueCard>
<BlueText>{loc.wallets.add.description}</BlueText>
<BlueButton

View file

@ -1,6 +1,5 @@
import React, { Component } from 'react';
import { Dimensions, ActivityIndicator, View } from 'react-native';
import Ionicons from 'react-native-vector-icons/Ionicons';
import {
BlueSpacing,
BlueSpacing40,
@ -11,6 +10,7 @@ import {
BlueText,
BlueFormLabel,
BlueFormInputAddress,
BlueHeaderDefaultSub,
} from '../../BlueComponents';
import PropTypes from 'prop-types';
let EV = require('../../events');
@ -28,13 +28,7 @@ if (aspectRatio > 1.6) {
export default class WalletDetails extends Component {
static navigationOptions = {
tabBarIcon: ({ tintColor, focused }) => (
<Ionicons
name={focused ? 'ios-briefcase' : 'ios-briefcase-outline'}
size={26}
style={{ color: tintColor }}
/>
),
tabBarVisible: false,
};
constructor(props) {
@ -56,6 +50,7 @@ export default class WalletDetails extends Component {
confirmDelete: false,
isLoading: true,
wallet,
address,
};
}
@ -66,7 +61,14 @@ export default class WalletDetails extends Component {
}
async setLabel(text) {
this.state.wallet.label = text;
this.state.wallet.setLabel(text);
if (this.timeout) {
clearTimeout(this.timeout);
}
this.timeout = setTimeout(() => {
BlueApp.saveToDisk();
}, 3000);
this.setState({
labelChanged: true,
}); /* also, a hack to make screen update new typed text */
@ -91,10 +93,12 @@ export default class WalletDetails extends Component {
}
})()}
<BlueCard
title={loc.wallets.details.title}
style={{ alignItems: 'center', flex: 1 }}
>
<BlueHeaderDefaultSub
leftText={loc.wallets.details.title}
onClose={() => this.props.navigation.goBack()}
/>
<BlueCard style={{ alignItems: 'center', flex: 1 }}>
<BlueFormLabel>{loc.wallets.details.address}:</BlueFormLabel>
<BlueFormInputAddress
value={this.state.wallet.getAddress()}

View file

@ -1,17 +1,8 @@
import React, { Component } from 'react';
import {
View,
TouchableOpacity,
Dimensions,
Text,
ListView,
} from 'react-native';
import Ionicons from 'react-native-vector-icons/Ionicons';
import { Icon } from 'react-native-elements';
import { View, Dimensions, Text, ListView } from 'react-native';
import {
BlueLoading,
SafeBlueArea,
BlueHeader,
WalletsCarousel,
BlueTransactionIncommingIcon,
BlueTransactionOutgoingIcon,
@ -21,6 +12,7 @@ import {
BlueRefreshIcon,
BlueList,
BlueListItem,
BlueHeaderDefaultMain,
} from '../../BlueComponents';
import PropTypes from 'prop-types';
let EV = require('../../events');
@ -33,15 +25,7 @@ let ds = new ListView.DataSource({ rowHasChanged: (r1, r2) => r1 !== r2 });
export default class WalletsList extends Component {
static navigationOptions = {
tabBarLabel: loc.wallets.list.tabBarLabel,
tabBarVisible: false,
tabBarIcon: ({ tintColor, focused }) => (
<Ionicons
name={focused ? 'ios-briefcase' : 'ios-briefcase-outline'}
size={26}
style={{ color: tintColor }}
/>
),
};
constructor(props) {
@ -68,6 +52,7 @@ export default class WalletsList extends Component {
let noErr = true;
try {
await BlueApp.fetchWalletTransactions(that.lastSnappedTo || 0);
await BlueApp.fetchWalletBalances(that.lastSnappedTo || 0);
} catch (err) {
noErr = false;
console.warn(err);
@ -127,7 +112,7 @@ export default class WalletsList extends Component {
txMemo(hash) {
if (BlueApp.tx_metadata[hash] && BlueApp.tx_metadata[hash]['memo']) {
return ' | ' + BlueApp.tx_metadata[hash]['memo'];
return BlueApp.tx_metadata[hash]['memo'];
}
return '';
}
@ -174,28 +159,9 @@ export default class WalletsList extends Component {
return (
<SafeBlueArea>
<BlueHeader
leftComponent={
<Text
style={{
fontWeight: 'bold',
fontSize: 34,
color: BlueApp.settings.foregroundColor,
}}
>
{loc.wallets.list.title}
</Text>
}
rightComponent={
<TouchableOpacity onPress={() => navigate('Settings')}>
<Icon
name="ellipsis-h"
size={16}
type="font-awesome"
color={BlueApp.settings.foregroundColor}
/>
</TouchableOpacity>
}
<BlueHeaderDefaultMain
leftText={loc.wallets.list.title}
onClose={() => navigate('Settings')}
/>
<WalletsCarousel
@ -265,12 +231,12 @@ export default class WalletsList extends Component {
rowData.received,
)}
subtitle={
this.txMemo(rowData.hash) +
(rowData.confirmations < 200
? loc.transactions.list.conf +
': ' +
rowData.confirmations
: '')
rowData.confirmations +
' '
: '') + this.txMemo(rowData.hash)
}
onPress={() => {
navigate('TransactionDetails', {

View file

@ -10,7 +10,6 @@ import {
import { BlueText, SafeBlueArea, BlueButton } from '../../BlueComponents';
import { Camera, Permissions } from 'expo';
import { SegwitP2SHWallet, LegacyWallet } from '../../class';
import Ionicons from 'react-native-vector-icons/Ionicons';
import PropTypes from 'prop-types';
/** @type {AppStorage} */
let BlueApp = require('../../BlueApp');
@ -22,13 +21,7 @@ let loc = require('../../loc');
export default class ScanQrWif extends React.Component {
static navigationOptions = {
tabBarIcon: ({ tintColor, focused }) => (
<Ionicons
name={focused ? 'ios-briefcase' : 'ios-briefcase-outline'}
size={26}
style={{ color: tintColor }}
/>
),
tabBarVisible: false,
};
state = {