mirror of
https://github.com/BlueWallet/BlueWallet.git
synced 2024-11-19 09:50:15 +01:00
REF: sync up with master
This commit is contained in:
commit
429a0dfc81
62
.github/workflows/codeql-analysis.yml
vendored
Normal file
62
.github/workflows/codeql-analysis.yml
vendored
Normal file
@ -0,0 +1,62 @@
|
||||
name: "CodeQL"
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [master]
|
||||
pull_request:
|
||||
# The branches below must be a subset of the branches above
|
||||
branches: [master]
|
||||
schedule:
|
||||
- cron: '0 1 * * 5'
|
||||
|
||||
jobs:
|
||||
analyze:
|
||||
name: Analyze
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
# Override automatic language detection by changing the below list
|
||||
# Supported options are ['csharp', 'cpp', 'go', 'java', 'javascript', 'python']
|
||||
language: ['javascript']
|
||||
# Learn more...
|
||||
# https://docs.github.com/en/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#overriding-automatic-language-detection
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
# We must fetch at least the immediate parents so that if this is
|
||||
# a pull request then we can checkout the head.
|
||||
fetch-depth: 2
|
||||
|
||||
# If this run was triggered by a pull request event, then checkout
|
||||
# the head of the pull request instead of the merge commit.
|
||||
- run: git checkout HEAD^2
|
||||
if: ${{ github.event_name == 'pull_request' }}
|
||||
|
||||
# Initializes the CodeQL tools for scanning.
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@v1
|
||||
with:
|
||||
languages: ${{ matrix.language }}
|
||||
|
||||
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
||||
# If this step fails, then you should remove it and run the build manually (see below)
|
||||
- name: Autobuild
|
||||
uses: github/codeql-action/autobuild@v1
|
||||
|
||||
# ℹ️ Command-line programs to run using the OS shell.
|
||||
# 📚 https://git.io/JvXDl
|
||||
|
||||
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
|
||||
# and modify them (or add more) to build your code if your project
|
||||
# uses a compiled language
|
||||
|
||||
#- run: |
|
||||
# make bootstrap
|
||||
# make release
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@v1
|
@ -5,23 +5,24 @@ import Ionicons from 'react-native-vector-icons/Ionicons';
|
||||
import PropTypes from 'prop-types';
|
||||
import { Icon, Input, Text, Header, ListItem } from 'react-native-elements';
|
||||
import {
|
||||
ActivityIndicator,
|
||||
Alert,
|
||||
Animated,
|
||||
Dimensions,
|
||||
FlatList,
|
||||
Image,
|
||||
InputAccessoryView,
|
||||
Keyboard,
|
||||
KeyboardAvoidingView,
|
||||
PixelRatio,
|
||||
Platform,
|
||||
SafeAreaView,
|
||||
StyleSheet,
|
||||
TextInput,
|
||||
TouchableOpacity,
|
||||
TouchableWithoutFeedback,
|
||||
Animated,
|
||||
Alert,
|
||||
ActivityIndicator,
|
||||
View,
|
||||
KeyboardAvoidingView,
|
||||
UIManager,
|
||||
StyleSheet,
|
||||
Dimensions,
|
||||
Image,
|
||||
Keyboard,
|
||||
SafeAreaView,
|
||||
InputAccessoryView,
|
||||
Platform,
|
||||
FlatList,
|
||||
TextInput,
|
||||
View,
|
||||
} from 'react-native';
|
||||
import Clipboard from '@react-native-community/clipboard';
|
||||
import LinearGradient from 'react-native-linear-gradient';
|
||||
@ -1204,13 +1205,11 @@ const stylesBlueIcon = StyleSheet.create({
|
||||
width: 30,
|
||||
height: 30,
|
||||
borderRadius: 15,
|
||||
backgroundColor: BlueCurrentTheme.colors.buttonBackgroundColor,
|
||||
},
|
||||
ballIncoming: {
|
||||
width: 30,
|
||||
height: 30,
|
||||
borderRadius: 15,
|
||||
backgroundColor: BlueCurrentTheme.colors.ballReceive,
|
||||
transform: [{ rotate: '-45deg' }],
|
||||
justifyContent: 'center',
|
||||
},
|
||||
@ -1218,20 +1217,17 @@ const stylesBlueIcon = StyleSheet.create({
|
||||
width: 30,
|
||||
height: 30,
|
||||
borderRadius: 15,
|
||||
backgroundColor: BlueCurrentTheme.colors.ballReceive,
|
||||
},
|
||||
ballReceive: {
|
||||
width: 30,
|
||||
height: 30,
|
||||
borderBottomLeftRadius: 15,
|
||||
backgroundColor: BlueCurrentTheme.colors.ballReceive,
|
||||
transform: [{ rotate: '-45deg' }],
|
||||
},
|
||||
ballOutgoing: {
|
||||
width: 30,
|
||||
height: 30,
|
||||
borderRadius: 15,
|
||||
backgroundColor: BlueCurrentTheme.colors.ballOutgoing,
|
||||
transform: [{ rotate: '225deg' }],
|
||||
justifyContent: 'center',
|
||||
},
|
||||
@ -1239,13 +1235,11 @@ const stylesBlueIcon = StyleSheet.create({
|
||||
width: 30,
|
||||
height: 30,
|
||||
borderRadius: 15,
|
||||
backgroundColor: BlueCurrentTheme.colors.ballOutgoing,
|
||||
},
|
||||
ballOutgoingExpired: {
|
||||
width: 30,
|
||||
height: 30,
|
||||
borderRadius: 15,
|
||||
backgroundColor: BlueCurrentTheme.colors.ballOutgoingExpired,
|
||||
justifyContent: 'center',
|
||||
},
|
||||
ballTransparrent: {
|
||||
@ -1261,152 +1255,323 @@ const stylesBlueIcon = StyleSheet.create({
|
||||
backgroundColor: 'gray',
|
||||
},
|
||||
});
|
||||
export class BluePlusIcon extends Component {
|
||||
|
||||
export const BluePlusIcon = props => {
|
||||
const { colors } = useTheme();
|
||||
const stylesBlueIconHooks = StyleSheet.create({
|
||||
ball: {
|
||||
backgroundColor: colors.buttonBackgroundColor,
|
||||
},
|
||||
});
|
||||
return (
|
||||
<View {...props} style={stylesBlueIcon.container}>
|
||||
<View style={stylesBlueIcon.box1}>
|
||||
<View style={[stylesBlueIcon.ball, stylesBlueIconHooks.ball]}>
|
||||
<Ionicons
|
||||
{...props}
|
||||
name="ios-add"
|
||||
size={26}
|
||||
style={{
|
||||
color: colors.foregroundColor,
|
||||
backgroundColor: 'transparent',
|
||||
left: 8,
|
||||
top: 1,
|
||||
}}
|
||||
/>
|
||||
</View>
|
||||
</View>
|
||||
</View>
|
||||
);
|
||||
};
|
||||
|
||||
export const BlueTransactionIncomingIcon = props => {
|
||||
const { colors } = useTheme();
|
||||
const stylesBlueIconHooks = StyleSheet.create({
|
||||
ballIncoming: {
|
||||
backgroundColor: colors.ballReceive,
|
||||
},
|
||||
});
|
||||
return (
|
||||
<View {...props}>
|
||||
<View style={stylesBlueIcon.boxIncoming}>
|
||||
<View style={[stylesBlueIcon.ballIncoming, stylesBlueIconHooks.ballIncoming]}>
|
||||
<Icon {...props} name="arrow-down" size={16} type="font-awesome" color={colors.incomingForegroundColor} />
|
||||
</View>
|
||||
</View>
|
||||
</View>
|
||||
);
|
||||
};
|
||||
|
||||
export const BlueTransactionPendingIcon = props => {
|
||||
const { colors } = useTheme();
|
||||
|
||||
const stylesBlueIconHooks = StyleSheet.create({
|
||||
ball: {
|
||||
backgroundColor: colors.buttonBackgroundColor,
|
||||
},
|
||||
});
|
||||
return (
|
||||
<View {...props}>
|
||||
<View style={stylesBlueIcon.boxIncoming}>
|
||||
<View style={[stylesBlueIcon.ball, stylesBlueIconHooks.ball]}>
|
||||
<Icon
|
||||
{...props}
|
||||
name="kebab-horizontal"
|
||||
size={16}
|
||||
type="octicon"
|
||||
color={colors.foregroundColor}
|
||||
iconStyle={{ left: 0, top: 7 }}
|
||||
/>
|
||||
</View>
|
||||
</View>
|
||||
</View>
|
||||
);
|
||||
};
|
||||
|
||||
export const BlueTransactionExpiredIcon = props => {
|
||||
const { colors } = useTheme();
|
||||
const stylesBlueIconHooks = StyleSheet.create({
|
||||
ballOutgoingExpired: {
|
||||
backgroundColor: colors.ballOutgoingExpired,
|
||||
},
|
||||
});
|
||||
return (
|
||||
<View {...props}>
|
||||
<View style={stylesBlueIcon.boxIncoming}>
|
||||
<View style={[stylesBlueIcon.ballOutgoingExpired, stylesBlueIconHooks.ballOutgoingExpired]}>
|
||||
<Icon {...props} name="clock" size={16} type="octicon" color="#9AA0AA" iconStyle={{ left: 0, top: 0 }} />
|
||||
</View>
|
||||
</View>
|
||||
</View>
|
||||
);
|
||||
};
|
||||
|
||||
export const BlueTransactionOnchainIcon = props => {
|
||||
const { colors } = useTheme();
|
||||
const stylesBlueIconHooks = StyleSheet.create({
|
||||
ballIncoming: {
|
||||
backgroundColor: colors.ballReceive,
|
||||
},
|
||||
});
|
||||
return (
|
||||
<View {...props}>
|
||||
<View style={stylesBlueIcon.boxIncoming}>
|
||||
<View style={[stylesBlueIcon.ballIncoming, stylesBlueIconHooks.ballIncoming]}>
|
||||
<Icon
|
||||
{...props}
|
||||
name="link"
|
||||
size={16}
|
||||
type="font-awesome"
|
||||
color={colors.incomingForegroundColor}
|
||||
iconStyle={{ left: 0, top: 0, transform: [{ rotate: '-45deg' }] }}
|
||||
/>
|
||||
</View>
|
||||
</View>
|
||||
</View>
|
||||
);
|
||||
};
|
||||
|
||||
export const BlueTransactionOffchainIcon = props => {
|
||||
const { colors } = useTheme();
|
||||
const stylesBlueIconHooks = StyleSheet.create({
|
||||
ballOutgoingWithoutRotate: {
|
||||
backgroundColor: colors.ballOutgoing,
|
||||
},
|
||||
});
|
||||
return (
|
||||
<View {...props}>
|
||||
<View style={stylesBlueIcon.boxIncoming}>
|
||||
<View style={[stylesBlueIcon.ballOutgoingWithoutRotate, stylesBlueIconHooks.ballOutgoingWithoutRotate]}>
|
||||
<Icon
|
||||
{...props}
|
||||
name="bolt"
|
||||
size={16}
|
||||
type="font-awesome"
|
||||
color={colors.outgoingForegroundColor}
|
||||
iconStyle={{ left: 0, marginTop: 6 }}
|
||||
/>
|
||||
</View>
|
||||
</View>
|
||||
</View>
|
||||
);
|
||||
};
|
||||
|
||||
export const BlueTransactionOffchainIncomingIcon = props => {
|
||||
const { colors } = useTheme();
|
||||
const stylesBlueIconHooks = StyleSheet.create({
|
||||
ballIncomingWithoutRotate: {
|
||||
backgroundColor: colors.ballReceive,
|
||||
},
|
||||
});
|
||||
return (
|
||||
<View {...props}>
|
||||
<View style={stylesBlueIcon.boxIncoming}>
|
||||
<View style={[stylesBlueIcon.ballIncomingWithoutRotate, stylesBlueIconHooks.ballIncomingWithoutRotate]}>
|
||||
<Icon
|
||||
{...props}
|
||||
name="bolt"
|
||||
size={16}
|
||||
type="font-awesome"
|
||||
color={colors.incomingForegroundColor}
|
||||
iconStyle={{ left: 0, marginTop: 6 }}
|
||||
/>
|
||||
</View>
|
||||
</View>
|
||||
</View>
|
||||
);
|
||||
};
|
||||
|
||||
export const BlueTransactionOutgoingIcon = props => {
|
||||
const { colors } = useTheme();
|
||||
const stylesBlueIconHooks = StyleSheet.create({
|
||||
ballOutgoing: {
|
||||
backgroundColor: colors.ballOutgoing,
|
||||
},
|
||||
});
|
||||
return (
|
||||
<View {...props}>
|
||||
<View style={stylesBlueIcon.boxIncoming}>
|
||||
<View style={[stylesBlueIcon.ballOutgoing, stylesBlueIconHooks.ballOutgoing]}>
|
||||
<Icon {...props} name="arrow-down" size={16} type="font-awesome" color={colors.outgoingForegroundColor} />
|
||||
</View>
|
||||
</View>
|
||||
</View>
|
||||
);
|
||||
};
|
||||
|
||||
const sendReceiveScanButtonFontSize =
|
||||
PixelRatio.roundToNearestPixel(Dimensions.get('window').width / 26) > 22
|
||||
? 22
|
||||
: PixelRatio.roundToNearestPixel(Dimensions.get('window').width / 26);
|
||||
export const BlueReceiveButtonIcon = props => {
|
||||
const { colors } = useTheme();
|
||||
|
||||
return (
|
||||
<TouchableOpacity {...props} style={{ flex: 1 }}>
|
||||
<View
|
||||
style={{
|
||||
flex: 1,
|
||||
backgroundColor: colors.buttonBackgroundColor,
|
||||
}}
|
||||
>
|
||||
<View style={{ flex: 1, flexDirection: 'row', alignItems: 'center', justifyContent: 'center' }}>
|
||||
<View
|
||||
style={{
|
||||
left: 5,
|
||||
backgroundColor: 'transparent',
|
||||
transform: [{ rotate: '-45deg' }],
|
||||
alignItems: 'center',
|
||||
marginRight: 8,
|
||||
}}
|
||||
>
|
||||
<Icon
|
||||
{...props}
|
||||
name="arrow-down"
|
||||
size={sendReceiveScanButtonFontSize}
|
||||
type="font-awesome"
|
||||
color={colors.buttonAlternativeTextColor}
|
||||
/>
|
||||
</View>
|
||||
<Text
|
||||
style={{
|
||||
color: colors.buttonAlternativeTextColor,
|
||||
fontWeight: '500',
|
||||
fontSize: sendReceiveScanButtonFontSize,
|
||||
left: 5,
|
||||
backgroundColor: 'transparent',
|
||||
}}
|
||||
>
|
||||
{loc.receive.header}
|
||||
</Text>
|
||||
</View>
|
||||
</View>
|
||||
</TouchableOpacity>
|
||||
);
|
||||
};
|
||||
|
||||
export class BlueScanButton extends Component {
|
||||
render() {
|
||||
return (
|
||||
<View {...this.props} style={stylesBlueIcon.container}>
|
||||
<View style={stylesBlueIcon.box1}>
|
||||
<View style={stylesBlueIcon.ball}>
|
||||
<Ionicons
|
||||
{...this.props}
|
||||
name="ios-add"
|
||||
size={26}
|
||||
<TouchableOpacity {...this.props} style={{ flex: 1 }}>
|
||||
<View
|
||||
style={{
|
||||
flex: 1,
|
||||
minWidth: 130,
|
||||
backgroundColor: BlueCurrentTheme.colors.buttonBackgroundColor,
|
||||
}}
|
||||
>
|
||||
<View style={{ flex: 1, flexDirection: 'row', alignItems: 'center', justifyContent: 'center' }}>
|
||||
<View
|
||||
style={{
|
||||
color: BlueCurrentTheme.colors.foregroundColor,
|
||||
minWidth: 24,
|
||||
minHeight: 30,
|
||||
backgroundColor: 'transparent',
|
||||
left: 8,
|
||||
top: 1,
|
||||
alignItems: 'center',
|
||||
marginBottom: -15,
|
||||
marginLeft: -8,
|
||||
}}
|
||||
/>
|
||||
>
|
||||
<Image resizeMode="stretch" source={BlueCurrentTheme.scanImage} />
|
||||
</View>
|
||||
<Text
|
||||
style={{
|
||||
color: BlueCurrentTheme.colors.buttonAlternativeTextColor,
|
||||
fontSize: sendReceiveScanButtonFontSize,
|
||||
fontWeight: '600',
|
||||
left: 5,
|
||||
backgroundColor: 'transparent',
|
||||
}}
|
||||
>
|
||||
{loc.send.details_scan}
|
||||
</Text>
|
||||
</View>
|
||||
</View>
|
||||
</View>
|
||||
</TouchableOpacity>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
export class BlueTransactionIncomingIcon extends Component {
|
||||
export class BlueSendButtonIcon extends Component {
|
||||
render() {
|
||||
return (
|
||||
<View {...this.props}>
|
||||
<View style={stylesBlueIcon.boxIncoming}>
|
||||
<View style={stylesBlueIcon.ballIncoming}>
|
||||
<Icon {...this.props} name="arrow-down" size={16} type="font-awesome" color={BlueCurrentTheme.colors.incomingForegroundColor} />
|
||||
<TouchableOpacity {...this.props} testID="SendButton" style={{ flex: 1 }}>
|
||||
<View
|
||||
style={{
|
||||
flex: 1,
|
||||
backgroundColor: BlueCurrentTheme.colors.buttonBackgroundColor,
|
||||
alignItems: 'center',
|
||||
}}
|
||||
>
|
||||
<View style={{ flex: 1, flexDirection: 'row', alignItems: 'center' }}>
|
||||
<View
|
||||
style={{
|
||||
left: 5,
|
||||
backgroundColor: 'transparent',
|
||||
transform: [{ rotate: '225deg' }],
|
||||
marginRight: 8,
|
||||
}}
|
||||
>
|
||||
<Icon
|
||||
{...this.props}
|
||||
name="arrow-down"
|
||||
size={sendReceiveScanButtonFontSize}
|
||||
type="font-awesome"
|
||||
color={BlueCurrentTheme.colors.buttonAlternativeTextColor}
|
||||
/>
|
||||
</View>
|
||||
<Text
|
||||
style={{
|
||||
color: BlueCurrentTheme.colors.buttonAlternativeTextColor,
|
||||
fontSize: sendReceiveScanButtonFontSize,
|
||||
fontWeight: '500',
|
||||
backgroundColor: 'transparent',
|
||||
}}
|
||||
>
|
||||
{loc.send.header}
|
||||
</Text>
|
||||
</View>
|
||||
</View>
|
||||
</View>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
export class BlueTransactionPendingIcon extends Component {
|
||||
render() {
|
||||
return (
|
||||
<View {...this.props}>
|
||||
<View style={stylesBlueIcon.boxIncoming}>
|
||||
<View style={stylesBlueIcon.ball}>
|
||||
<Icon
|
||||
{...this.props}
|
||||
name="kebab-horizontal"
|
||||
size={16}
|
||||
type="octicon"
|
||||
color={BlueCurrentTheme.colors.foregroundColor}
|
||||
iconStyle={{ left: 0, top: 7 }}
|
||||
/>
|
||||
</View>
|
||||
</View>
|
||||
</View>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
export class BlueTransactionExpiredIcon extends Component {
|
||||
render() {
|
||||
return (
|
||||
<View {...this.props}>
|
||||
<View style={stylesBlueIcon.boxIncoming}>
|
||||
<View style={stylesBlueIcon.ballOutgoingExpired}>
|
||||
<Icon {...this.props} name="clock" size={16} type="octicon" color="#9AA0AA" iconStyle={{ left: 0, top: 0 }} />
|
||||
</View>
|
||||
</View>
|
||||
</View>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
export class BlueTransactionOnchainIcon extends Component {
|
||||
render() {
|
||||
return (
|
||||
<View {...this.props}>
|
||||
<View style={stylesBlueIcon.boxIncoming}>
|
||||
<View style={stylesBlueIcon.ballIncoming}>
|
||||
<Icon
|
||||
{...this.props}
|
||||
name="link"
|
||||
size={16}
|
||||
type="font-awesome"
|
||||
color={BlueCurrentTheme.colors.incomingForegroundColor}
|
||||
iconStyle={{ left: 0, top: 0, transform: [{ rotate: '-45deg' }] }}
|
||||
/>
|
||||
</View>
|
||||
</View>
|
||||
</View>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
export class BlueTransactionOffchainIcon extends Component {
|
||||
render() {
|
||||
return (
|
||||
<View {...this.props}>
|
||||
<View style={stylesBlueIcon.boxIncoming}>
|
||||
<View style={stylesBlueIcon.ballOutgoingWithoutRotate}>
|
||||
<Icon
|
||||
{...this.props}
|
||||
name="bolt"
|
||||
size={16}
|
||||
type="font-awesome"
|
||||
color={BlueCurrentTheme.colors.outgoingForegroundColor}
|
||||
iconStyle={{ left: 0, marginTop: 6 }}
|
||||
/>
|
||||
</View>
|
||||
</View>
|
||||
</View>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
export class BlueTransactionOffchainIncomingIcon extends Component {
|
||||
render() {
|
||||
return (
|
||||
<View {...this.props}>
|
||||
<View style={stylesBlueIcon.boxIncoming}>
|
||||
<View style={stylesBlueIcon.ballIncomingWithoutRotate}>
|
||||
<Icon
|
||||
{...this.props}
|
||||
name="bolt"
|
||||
size={16}
|
||||
type="font-awesome"
|
||||
color={BlueCurrentTheme.colors.incomingForegroundColor}
|
||||
iconStyle={{ left: 0, marginTop: 6 }}
|
||||
/>
|
||||
</View>
|
||||
</View>
|
||||
</View>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
export class BlueTransactionOutgoingIcon extends Component {
|
||||
render() {
|
||||
return (
|
||||
<View {...this.props}>
|
||||
<View style={stylesBlueIcon.boxIncoming}>
|
||||
<View style={stylesBlueIcon.ballOutgoing}>
|
||||
<Icon {...this.props} name="arrow-down" size={16} type="font-awesome" color={BlueCurrentTheme.colors.outgoingForegroundColor} />
|
||||
</View>
|
||||
</View>
|
||||
</View>
|
||||
</TouchableOpacity>
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -1451,64 +1616,59 @@ export class ManageFundsBigButton extends Component {
|
||||
}
|
||||
}
|
||||
|
||||
export class NewWalletPanel extends Component {
|
||||
render() {
|
||||
return (
|
||||
<TouchableOpacity
|
||||
testID="CreateAWallet"
|
||||
{...this.props}
|
||||
onPress={this.props.onPress}
|
||||
style={{ marginVertical: 17, paddingRight: 10 }}
|
||||
export const NewWalletPanel = props => {
|
||||
const { colors } = useTheme();
|
||||
return (
|
||||
<TouchableOpacity testID="CreateAWallet" {...props} onPress={props.onPress} style={{ marginVertical: 17, paddingRight: 10 }}>
|
||||
<View
|
||||
style={{
|
||||
paddingHorizontal: 24,
|
||||
paddingVertical: 16,
|
||||
borderRadius: 10,
|
||||
minHeight: Platform.OS === 'ios' ? 164 : 181,
|
||||
justifyContent: 'center',
|
||||
alignItems: 'flex-start',
|
||||
backgroundColor: WalletGradient.createWallet,
|
||||
}}
|
||||
>
|
||||
<View
|
||||
<Text
|
||||
style={{
|
||||
paddingHorizontal: 24,
|
||||
paddingVertical: 16,
|
||||
borderRadius: 10,
|
||||
minHeight: Platform.OS === 'ios' ? 164 : 181,
|
||||
justifyContent: 'center',
|
||||
alignItems: 'flex-start',
|
||||
backgroundColor: WalletGradient.createWallet,
|
||||
fontWeight: '600',
|
||||
fontSize: 24,
|
||||
color: colors.foregroundColor,
|
||||
marginBottom: 4,
|
||||
}}
|
||||
>
|
||||
<Text
|
||||
style={{
|
||||
fontWeight: '600',
|
||||
fontSize: 24,
|
||||
color: BlueCurrentTheme.colors.foregroundColor,
|
||||
marginBottom: 4,
|
||||
}}
|
||||
>
|
||||
{loc.wallets.list_create_a_wallet}
|
||||
</Text>
|
||||
<Text
|
||||
style={{
|
||||
fontSize: 13,
|
||||
color: BlueCurrentTheme.colors.alternativeTextColor,
|
||||
}}
|
||||
>
|
||||
{loc.wallets.list_create_a_wallet1}
|
||||
</Text>
|
||||
<Text
|
||||
style={{
|
||||
backgroundColor: 'transparent',
|
||||
fontSize: 13,
|
||||
color: BlueCurrentTheme.colors.alternativeTextColor,
|
||||
}}
|
||||
>
|
||||
{loc.wallets.list_create_a_wallet2}
|
||||
</Text>
|
||||
<View style={{ marginTop: 12, backgroundColor: '#007AFF', paddingHorizontal: 32, paddingVertical: 12, borderRadius: 8 }}>
|
||||
<Text style={{ color: BlueCurrentTheme.colors.brandingColor, fontWeight: '500' }}>{loc.wallets.list_create_a_button}</Text>
|
||||
</View>
|
||||
{loc.wallets.list_create_a_wallet}
|
||||
</Text>
|
||||
<Text
|
||||
style={{
|
||||
fontSize: 13,
|
||||
color: colors.alternativeTextColor,
|
||||
}}
|
||||
>
|
||||
{loc.wallets.list_create_a_wallet1}
|
||||
</Text>
|
||||
<Text
|
||||
style={{
|
||||
backgroundColor: 'transparent',
|
||||
fontSize: 13,
|
||||
color: colors.alternativeTextColor,
|
||||
}}
|
||||
>
|
||||
{loc.wallets.list_create_a_wallet2}
|
||||
</Text>
|
||||
<View style={{ marginTop: 12, backgroundColor: '#007AFF', paddingHorizontal: 32, paddingVertical: 12, borderRadius: 8 }}>
|
||||
<Text style={{ color: colors.brandingColor, fontWeight: '500' }}>{loc.wallets.list_create_a_button}</Text>
|
||||
</View>
|
||||
</TouchableOpacity>
|
||||
);
|
||||
}
|
||||
}
|
||||
</View>
|
||||
</TouchableOpacity>
|
||||
);
|
||||
};
|
||||
|
||||
export const BlueTransactionListItem = React.memo(({ item, itemPriceUnit = BitcoinUnit.BTC, timeElapsed }) => {
|
||||
const [subtitleNumberOfLines, setSubtitleNumberOfLines] = useState(1);
|
||||
const { colors } = useTheme();
|
||||
|
||||
const txMemo = () => {
|
||||
if (BlueApp.tx_metadata[item.hash] && BlueApp.tx_metadata[item.hash].memo) {
|
||||
@ -1541,7 +1701,7 @@ export const BlueTransactionListItem = React.memo(({ item, itemPriceUnit = Bitco
|
||||
};
|
||||
|
||||
const rowTitleStyle = () => {
|
||||
let color = BlueCurrentTheme.colors.successColor;
|
||||
let color = colors.successColor;
|
||||
|
||||
if (item.type === 'user_invoice' || item.type === 'payment_request') {
|
||||
const currentDate = new Date();
|
||||
@ -1549,16 +1709,16 @@ export const BlueTransactionListItem = React.memo(({ item, itemPriceUnit = Bitco
|
||||
const invoiceExpiration = item.timestamp + item.expire_time;
|
||||
|
||||
if (invoiceExpiration > now) {
|
||||
color = BlueCurrentTheme.colors.successColor;
|
||||
color = colors.successColor;
|
||||
} else if (invoiceExpiration < now) {
|
||||
if (item.ispaid) {
|
||||
color = BlueCurrentTheme.colors.successColor;
|
||||
color = colors.successColor;
|
||||
} else {
|
||||
color = '#9AA0AA';
|
||||
}
|
||||
}
|
||||
} else if (item.value / 100000000 < 0) {
|
||||
color = BlueCurrentTheme.colors.foregroundColor;
|
||||
color = colors.foregroundColor;
|
||||
}
|
||||
|
||||
return {
|
||||
|
@ -132,7 +132,7 @@ android {
|
||||
minSdkVersion rootProject.ext.minSdkVersion
|
||||
targetSdkVersion rootProject.ext.targetSdkVersion
|
||||
versionCode 1
|
||||
versionName "5.5.7"
|
||||
versionName "5.5.8"
|
||||
multiDexEnabled true
|
||||
missingDimensionStrategy 'react-native-camera', 'general'
|
||||
testBuildType System.getProperty('testBuildType', 'debug') // This will later be used to control the test apk build type
|
||||
|
@ -48,7 +48,7 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>5.5.7</string>
|
||||
<string>5.5.8</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleURLTypes</key>
|
||||
|
@ -17,7 +17,7 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>XPC!</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>5.5.7</string>
|
||||
<string>5.5.8</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>239</string>
|
||||
<key>CLKComplicationPrincipalClass</key>
|
||||
|
@ -17,7 +17,7 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>5.5.7</string>
|
||||
<string>5.5.8</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>239</string>
|
||||
<key>UISupportedInterfaceOrientations</key>
|
||||
|
@ -17,7 +17,7 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>5.5.7</string>
|
||||
<string>5.5.8</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
<key>NSExtension</key>
|
||||
|
@ -1,10 +1,10 @@
|
||||
Eigenschaften
|
||||
|
||||
* Quelloffene Software
|
||||
* Quelloffene
|
||||
* Vollverschlüsselung
|
||||
* Glaubhafte Täuschung
|
||||
* Flexible Gebühren
|
||||
* Gebührenübernahme
|
||||
* SegWit
|
||||
* Wallets beobachten (nicht handeln)
|
||||
* Wallets beobachten
|
||||
* Lightning Netzwerk
|
||||
|
@ -1,3 +1,28 @@
|
||||
v5.5.7
|
||||
======
|
||||
|
||||
* ADD: Split for large devices
|
||||
* ADD: Export file option
|
||||
* ADD: Slovenian & Hebrew language
|
||||
* ADD: KES, NGN, TWD Fiat
|
||||
* FIX: After broadcast, value of sent transaction is incorrect
|
||||
* FIX: transaction time when using ElectrumPersonalServer
|
||||
* FIX: some ElectrumPersonalServer txs stay unconfirmed
|
||||
* FIX: Fixed dark/light theme switch
|
||||
* FIX: updated languages pt_BR, pt_PT, es_ES, sl_SI, de_DE, fr_FR, cs_CZ, ja_JP, it, ru, he
|
||||
* FIX: create-ln-invoice - button is not blocked, which can lead to multiple invoices created
|
||||
* FIX: If user has approved notifications, send hash from watch
|
||||
* FIX: If Camera not authorized, show Alert.
|
||||
* FIX: Only show direct export
|
||||
* FIX: better handling of errors from HodlHodl
|
||||
* FIX: Safello buy-bitcoin flow
|
||||
* FIX: Request location authorization for HodlHodl
|
||||
* FIX: Settings|Network|Lightning Settings fails input for leading or trailing blank
|
||||
* FIX: show Import file option
|
||||
* FIX: Background had wrong color during loading phase
|
||||
* REF: speeded up large wallets (>3k txs)
|
||||
* REF: speedup onchain wallet creation
|
||||
|
||||
v5.5.6
|
||||
======
|
||||
|
||||
@ -51,19 +76,3 @@ v5.5.2
|
||||
* FIX: missing text on sendMAX dialog box confirmation
|
||||
* FIX: Invoice creation darkmode
|
||||
* FIX: Font-Color in Input Field "transaction notes" is not adapted for dark mode
|
||||
|
||||
v5.5.1
|
||||
======
|
||||
|
||||
* ADD: Dark Mode
|
||||
* FIX: #1309 Sharing doesnt include text
|
||||
* FIX: import mnemonic w/typo, 'try again' does nothing (closes #1286)
|
||||
* ADD: support importing watch-only in bitcoincore format [fingerprint/derivation]xpub (wallet descriptors)
|
||||
* REF: dont store txhex in transactions list
|
||||
* REF: wrap save storage in try-catch
|
||||
|
||||
v5.5.0
|
||||
======
|
||||
|
||||
* FIX: provide entropy for D20
|
||||
* REF: speeded up transactions list
|
||||
|
@ -1,10 +1,10 @@
|
||||
Funzionalità
|
||||
|
||||
* Open Source
|
||||
* OpenSource
|
||||
* Crittografia completa
|
||||
* Negabilita' plausibile
|
||||
* Commissioni flessibili
|
||||
* Replace-By-Fee (RBF)
|
||||
* Replace-By-Fee
|
||||
* SegWit
|
||||
* Watch-only (Sentinel) wallets
|
||||
* Watch-only wallets
|
||||
* Lightning network
|
||||
|
@ -1 +1 @@
|
||||
|
||||
https://github.com/BlueWallet/BlueWallet/issues
|
||||
|
@ -2,9 +2,6 @@
|
||||
|
||||
* Открытый исходный код
|
||||
* Все данные шифруются
|
||||
* Правдоподобное отрицание (Plausible deniability)
|
||||
* Правдоподобное отрицание
|
||||
* Гибкие настройки комиссии
|
||||
* Повышение комиссии за транзакцию (RBF)
|
||||
* SegWit
|
||||
* Просмотр баланса кошелька без импорта приватных ключей
|
||||
* Lightning network
|
2
package-lock.json
generated
2
package-lock.json
generated
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "bluewallet",
|
||||
"version": "5.5.7",
|
||||
"version": "5.5.8",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "bluewallet",
|
||||
"version": "5.5.7",
|
||||
"version": "5.5.8",
|
||||
"license": "MIT",
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.9.6",
|
||||
|
Loading…
Reference in New Issue
Block a user