mirror of
https://github.com/BlueWallet/BlueWallet.git
synced 2024-11-19 09:50:15 +01:00
Merge branch 'master' into electrumtoggle
This commit is contained in:
commit
214b2f5743
3
.gitattributes
vendored
3
.gitattributes
vendored
@ -1,4 +1,5 @@
|
||||
*.pbxproj -text
|
||||
*.patch -text
|
||||
# specific for windows script files
|
||||
# Windows files should use crlf line endings
|
||||
# https://help.github.com/articles/dealing-with-line-endings/
|
||||
*.bat text eol=crlf
|
4
_editorconfig
Normal file
4
_editorconfig
Normal file
@ -0,0 +1,4 @@
|
||||
# Windows files
|
||||
[*.bat]
|
||||
end_of_line = crlf
|
||||
|
@ -20,7 +20,7 @@ import com.android.build.OutputFile
|
||||
* // default. Can be overridden with ENTRY_FILE environment variable.
|
||||
* entryFile: "index.android.js",
|
||||
*
|
||||
* // https://facebook.github.io/react-native/docs/performance#enable-the-ram-format
|
||||
* // https://reactnative.dev/docs/performance#enable-the-ram-format
|
||||
* bundleCommand: "ram-bundle",
|
||||
*
|
||||
* // whether to bundle JS and assets in debug mode
|
||||
@ -121,7 +121,10 @@ def jscFlavor = 'org.webkit:android-jsc-intl:+'
|
||||
def enableHermes = project.ext.react.get("enableHermes", false);
|
||||
|
||||
android {
|
||||
ndkVersion rootProject.ext.ndkVersion
|
||||
|
||||
compileSdkVersion rootProject.ext.compileSdkVersion
|
||||
|
||||
compileOptions {
|
||||
sourceCompatibility JavaVersion.VERSION_1_8
|
||||
targetCompatibility JavaVersion.VERSION_1_8
|
||||
@ -150,10 +153,11 @@ android {
|
||||
include "armeabi-v7a", "x86", "arm64-v8a", "x86_64"
|
||||
}
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
// Caution! In production, you need to generate your own keystore file.
|
||||
// see https://facebook.github.io/react-native/docs/signed-apk-android.
|
||||
// see https://reactnative.dev/docs/signed-apk-android.
|
||||
minifyEnabled enableProguardInReleaseBuilds
|
||||
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
|
||||
}
|
||||
@ -164,11 +168,11 @@ android {
|
||||
variant.outputs.each { output ->
|
||||
// For each separate APK per architecture, set a unique version code as described here:
|
||||
// https://developer.android.com/studio/build/configure-apk-splits.html
|
||||
// Example: versionCode 1 will generate 1001 for armeabi-v7a, 1002 for x86, etc.
|
||||
def versionCodes = ["armeabi-v7a": 1, "x86": 2, "arm64-v8a": 3, "x86_64": 4]
|
||||
def abi = output.getFilter(OutputFile.ABI)
|
||||
if (abi != null) { // null for the universal-debug, universal-release variants
|
||||
output.versionCodeOverride =
|
||||
versionCodes.get(abi) * 1048576 + defaultConfig.versionCode
|
||||
output.versionCodeOverride = versionCodes.get(abi) * 1048576 + defaultConfig.versionCode
|
||||
}
|
||||
|
||||
}
|
||||
@ -177,13 +181,8 @@ android {
|
||||
|
||||
dependencies {
|
||||
implementation fileTree(dir: "libs", include: ["*.jar"])
|
||||
implementation files("../../node_modules/react-native-tor/android/libs/sifir_android.aar")
|
||||
//noinspection GradleDynamicVersion
|
||||
|
||||
androidTestImplementation('com.wix:detox:+') {
|
||||
exclude group: 'org.jetbrains.kotlin', module: 'kotlin-stdlib-jdk8'
|
||||
}
|
||||
|
||||
implementation files("../../node_modules/react-native-tor/android/libs/sifir_android.aar")
|
||||
implementation "com.facebook.react:react-native:+" // From node_modules
|
||||
|
||||
implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.0.0"
|
||||
@ -194,12 +193,17 @@ dependencies {
|
||||
|
||||
debugImplementation("com.facebook.flipper:flipper-network-plugin:${FLIPPER_VERSION}") {
|
||||
exclude group:'com.facebook.flipper'
|
||||
exclude group:'com.squareup.okhttp3', module:'okhttp'
|
||||
}
|
||||
|
||||
debugImplementation("com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}") {
|
||||
exclude group:'com.facebook.flipper'
|
||||
}
|
||||
|
||||
androidTestImplementation('com.wix:detox:+') {
|
||||
exclude group: 'org.jetbrains.kotlin', module: 'kotlin-stdlib-jdk8'
|
||||
}
|
||||
|
||||
if (enableHermes) {
|
||||
def hermesPath = "../../node_modules/hermes-engine/android/";
|
||||
debugImplementation files(hermesPath + "hermes-debug.aar")
|
||||
@ -217,4 +221,4 @@ task copyDownloadableDepsToLibs(type: Copy) {
|
||||
}
|
||||
|
||||
apply plugin: 'com.google.gms.google-services' // Google Services plugin
|
||||
apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project)
|
||||
apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project)
|
@ -1,7 +1,7 @@
|
||||
<resources>
|
||||
|
||||
<!-- Base application theme. -->
|
||||
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
|
||||
<style name="AppTheme" parent="Theme.AppCompat.DayNight.NoActionBar">
|
||||
<!-- Customize your theme here. -->
|
||||
<item name="android:textColor">#000000</item>
|
||||
</style>
|
||||
|
@ -11,14 +11,15 @@ buildscript {
|
||||
googlePlayServicesIidVersion = "16.0.1"
|
||||
firebaseVersion = "17.3.4"
|
||||
firebaseMessagingVersion = "20.2.1"
|
||||
ndkVersion = "20.1.5948944"
|
||||
}
|
||||
repositories {
|
||||
google()
|
||||
jcenter()
|
||||
mavenCentral()
|
||||
}
|
||||
ext.kotlinVersion = '1.4.32'
|
||||
dependencies {
|
||||
classpath('com.android.tools.build:gradle:4.0.1')
|
||||
classpath('com.android.tools.build:gradle:4.2.1')
|
||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
|
||||
classpath 'com.google.gms:google-services:4.3.5' // Google Services plugin
|
||||
|
||||
@ -30,6 +31,25 @@ buildscript {
|
||||
|
||||
allprojects {
|
||||
repositories {
|
||||
jcenter() {
|
||||
content {
|
||||
includeModule("com.facebook.yoga", "proguard-annotations")
|
||||
includeModule("com.facebook.fbjni", "fbjni-java-only")
|
||||
includeModule("com.facebook.fresco", "fresco")
|
||||
includeModule("com.facebook.fresco", "stetho")
|
||||
includeModule("com.facebook.fresco", "fbcore")
|
||||
includeModule("com.facebook.fresco", "drawee")
|
||||
includeModule("com.facebook.fresco", "imagepipeline")
|
||||
includeModule("com.facebook.fresco", "imagepipeline-native")
|
||||
includeModule("com.facebook.fresco", "memory-type-native")
|
||||
includeModule("com.facebook.fresco", "memory-type-java")
|
||||
includeModule("com.facebook.fresco", "nativeimagefilters")
|
||||
includeModule("com.facebook.stetho", "stetho")
|
||||
includeModule("com.wei.android.lib", "fingerprintidentify")
|
||||
includeModule("com.eightbitlab", "blurview")
|
||||
}
|
||||
}
|
||||
mavenCentral()
|
||||
mavenLocal()
|
||||
maven {
|
||||
// All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
|
||||
@ -44,7 +64,6 @@ allprojects {
|
||||
url "$rootDir/../node_modules/detox/Detox-android"
|
||||
}
|
||||
google()
|
||||
jcenter()
|
||||
maven { url 'https://www.jitpack.io' }
|
||||
}
|
||||
}
|
||||
@ -54,6 +73,9 @@ subprojects {
|
||||
if (project.hasProperty("android")) {
|
||||
android {
|
||||
compileSdkVersion 29
|
||||
defaultConfig {
|
||||
minSdkVersion 28
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -31,4 +31,4 @@ org.gradle.configureondemand=true
|
||||
org.gradle.jvmargs=-Xmx4g -XX:MaxPermSize=2048m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
|
||||
|
||||
# Version of flipper SDK to use with React Native
|
||||
FLIPPER_VERSION=0.54.0
|
||||
FLIPPER_VERSION=0.75.1
|
@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-6.3-all.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-all.zip
|
||||
|
7
android/gradlew.bat
vendored
7
android/gradlew.bat
vendored
@ -37,7 +37,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome
|
||||
|
||||
set JAVA_EXE=java.exe
|
||||
%JAVA_EXE% -version >NUL 2>&1
|
||||
if "%ERRORLEVEL%" == "0" goto init
|
||||
if "%ERRORLEVEL%" == "0" goto execute
|
||||
|
||||
echo.
|
||||
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||
@ -51,7 +51,7 @@ goto fail
|
||||
set JAVA_HOME=%JAVA_HOME:"=%
|
||||
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
|
||||
|
||||
if exist "%JAVA_EXE%" goto init
|
||||
if exist "%JAVA_EXE%" goto execute
|
||||
|
||||
echo.
|
||||
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
|
||||
@ -82,8 +82,7 @@ set CMD_LINE_ARGS=%*
|
||||
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
|
||||
|
||||
@rem Execute Gradle
|
||||
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
|
||||
|
||||
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
|
||||
:end
|
||||
@rem End local scope for the variables with windows NT shell
|
||||
if "%ERRORLEVEL%"=="0" goto mainEnd
|
||||
|
@ -298,9 +298,7 @@ function WalletImport() {
|
||||
|
||||
const s3 = new SLIP39SegwitBech32Wallet();
|
||||
s3.setSecret(importText);
|
||||
if (await s3.wasEverUsed()) {
|
||||
return WalletImport._saveWallet(s3);
|
||||
}
|
||||
return WalletImport._saveWallet(s3);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
import React, { useRef } from 'react';
|
||||
import { StyleSheet, Text, View } from 'react-native';
|
||||
import { useTheme } from '@react-navigation/native';
|
||||
import { useNavigation, useTheme } from '@react-navigation/native';
|
||||
import { ListItem } from 'react-native-elements';
|
||||
import PropTypes from 'prop-types';
|
||||
import { AddressTypeBadge } from './AddressTypeBadge';
|
||||
@ -9,11 +9,13 @@ import TooltipMenu from '../TooltipMenu';
|
||||
import Clipboard from '@react-native-clipboard/clipboard';
|
||||
import Share from 'react-native-share';
|
||||
|
||||
const AddressItem = ({ item, balanceUnit, onPress }) => {
|
||||
const AddressItem = ({ item, balanceUnit, walletID, allowSignVerifyMessage }) => {
|
||||
const { colors } = useTheme();
|
||||
const tooltip = useRef();
|
||||
const listItem = useRef();
|
||||
|
||||
const hasTransactions = item.transactions > 0;
|
||||
|
||||
const stylesHook = StyleSheet.create({
|
||||
container: {
|
||||
borderBottomColor: colors.lightBorder,
|
||||
@ -28,8 +30,33 @@ const AddressItem = ({ item, balanceUnit, onPress }) => {
|
||||
balance: {
|
||||
color: colors.alternativeTextColor,
|
||||
},
|
||||
address: {
|
||||
color: hasTransactions ? colors.darkGray : colors.buttonTextColor,
|
||||
},
|
||||
});
|
||||
|
||||
const { navigate } = useNavigation();
|
||||
|
||||
const navigateToReceive = () => {
|
||||
navigate('ReceiveDetailsRoot', {
|
||||
screen: 'ReceiveDetails',
|
||||
params: {
|
||||
walletID,
|
||||
address: item.address,
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
const navigateToSignVerify = () => {
|
||||
navigate('SignVerifyRoot', {
|
||||
screen: 'SignVerify',
|
||||
params: {
|
||||
walletID,
|
||||
address: item.address,
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
const showToolTipMenu = () => {
|
||||
tooltip.current.showMenu();
|
||||
};
|
||||
@ -44,30 +71,40 @@ const AddressItem = ({ item, balanceUnit, onPress }) => {
|
||||
Share.open({ message: item.address }).catch(error => console.log(error));
|
||||
};
|
||||
|
||||
const getAvailableActions = () => {
|
||||
const actions = [
|
||||
{
|
||||
id: 'copyToClipboard',
|
||||
text: loc.transactions.details_copy,
|
||||
onPress: handleCopyPress,
|
||||
},
|
||||
{
|
||||
id: 'share',
|
||||
text: loc.receive.details_share,
|
||||
onPress: handleSharePress,
|
||||
},
|
||||
];
|
||||
|
||||
if (allowSignVerifyMessage) {
|
||||
actions.push({
|
||||
id: 'signVerify',
|
||||
text: loc.addresses.sign_title,
|
||||
onPress: navigateToSignVerify,
|
||||
});
|
||||
}
|
||||
|
||||
return actions;
|
||||
};
|
||||
|
||||
const render = () => {
|
||||
return (
|
||||
<View>
|
||||
<TooltipMenu
|
||||
ref={tooltip}
|
||||
anchorRef={listItem}
|
||||
actions={[
|
||||
{
|
||||
id: 'copyToClipboard',
|
||||
text: loc.transactions.details_copy,
|
||||
onPress: handleCopyPress,
|
||||
},
|
||||
{
|
||||
id: 'share',
|
||||
text: loc.receive.details_share,
|
||||
onPress: handleSharePress,
|
||||
},
|
||||
]}
|
||||
/>
|
||||
<TooltipMenu ref={tooltip} anchorRef={listItem} actions={getAvailableActions()} />
|
||||
<ListItem
|
||||
ref={listItem}
|
||||
key={`${item.key}`}
|
||||
button
|
||||
onPress={onPress}
|
||||
onPress={navigateToReceive}
|
||||
containerStyle={stylesHook.container}
|
||||
onLongPress={showToolTipMenu}
|
||||
>
|
||||
@ -76,9 +113,16 @@ const AddressItem = ({ item, balanceUnit, onPress }) => {
|
||||
<Text style={[styles.index, stylesHook.index]}>{item.index + 1}</Text>{' '}
|
||||
<Text style={[stylesHook.address, styles.address]}>{item.address}</Text>
|
||||
</ListItem.Title>
|
||||
<ListItem.Subtitle style={[stylesHook.list, styles.balance, stylesHook.balance]}>{balance}</ListItem.Subtitle>
|
||||
<View style={styles.subtitle}>
|
||||
<Text style={[stylesHook.list, styles.balance, stylesHook.balance]}>{balance}</Text>
|
||||
</View>
|
||||
</ListItem.Content>
|
||||
<AddressTypeBadge isInternal={item.isInternal} />
|
||||
<View style={styles.labels}>
|
||||
<AddressTypeBadge isInternal={item.isInternal} hasTransactions={hasTransactions} />
|
||||
<Text style={[stylesHook.list, styles.balance, stylesHook.balance]}>
|
||||
{loc.addresses.transactions}: {item.transactions}
|
||||
</Text>
|
||||
</View>
|
||||
</ListItem>
|
||||
</View>
|
||||
);
|
||||
@ -89,7 +133,7 @@ const AddressItem = ({ item, balanceUnit, onPress }) => {
|
||||
|
||||
const styles = StyleSheet.create({
|
||||
address: {
|
||||
fontWeight: '600',
|
||||
fontWeight: 'bold',
|
||||
marginHorizontal: 40,
|
||||
},
|
||||
index: {
|
||||
@ -99,6 +143,12 @@ const styles = StyleSheet.create({
|
||||
marginTop: 8,
|
||||
marginLeft: 14,
|
||||
},
|
||||
subtitle: {
|
||||
flex: 1,
|
||||
flexDirection: 'row',
|
||||
justifyContent: 'space-between',
|
||||
width: '100%',
|
||||
},
|
||||
});
|
||||
|
||||
AddressItem.propTypes = {
|
||||
|
@ -9,27 +9,46 @@ const styles = StyleSheet.create({
|
||||
paddingVertical: 4,
|
||||
paddingHorizontal: 10,
|
||||
borderRadius: 20,
|
||||
alignSelf: 'flex-end',
|
||||
},
|
||||
badgeText: {
|
||||
fontSize: 12,
|
||||
textAlign: 'center',
|
||||
},
|
||||
});
|
||||
|
||||
const AddressTypeBadge = ({ isInternal }) => {
|
||||
const AddressTypeBadge = ({ isInternal, hasTransactions }) => {
|
||||
const { colors } = useTheme();
|
||||
|
||||
const stylesHook = StyleSheet.create({
|
||||
changeBadge: { backgroundColor: colors.changeBackground },
|
||||
receiveBadge: { backgroundColor: colors.receiveBackground },
|
||||
usedBadge: { backgroundColor: colors.buttonDisabledBackgroundColor },
|
||||
changeText: { color: colors.changeText },
|
||||
receiveText: { color: colors.receiveText },
|
||||
usedText: { color: colors.alternativeTextColor },
|
||||
});
|
||||
|
||||
const badgeLabel = isInternal ? loc.addresses.type_change : loc.addresses.type_receive;
|
||||
// eslint-disable-next-line prettier/prettier
|
||||
const badgeLabel = hasTransactions
|
||||
? loc.addresses.type_used
|
||||
: isInternal
|
||||
? loc.addresses.type_change
|
||||
: loc.addresses.type_receive;
|
||||
|
||||
const badgeStyle = isInternal ? stylesHook.changeBadge : stylesHook.receiveBadge;
|
||||
// eslint-disable-next-line prettier/prettier
|
||||
const badgeStyle = hasTransactions
|
||||
? stylesHook.usedBadge
|
||||
: isInternal
|
||||
? stylesHook.changeBadge
|
||||
: stylesHook.receiveBadge;
|
||||
|
||||
const textStyle = isInternal ? stylesHook.changeText : stylesHook.receiveText;
|
||||
// eslint-disable-next-line prettier/prettier
|
||||
const textStyle = hasTransactions
|
||||
? stylesHook.usedText
|
||||
: isInternal
|
||||
? stylesHook.changeText
|
||||
: stylesHook.receiveText;
|
||||
|
||||
return (
|
||||
<View style={[styles.container, badgeStyle]}>
|
||||
@ -40,6 +59,7 @@ const AddressTypeBadge = ({ isInternal }) => {
|
||||
|
||||
AddressTypeBadge.propTypes = {
|
||||
isInternal: PropTypes.bool,
|
||||
hasTransactions: PropTypes.bool,
|
||||
};
|
||||
|
||||
export { AddressTypeBadge };
|
||||
|
94
components/addresses/AddressTypeTabs.js
Normal file
94
components/addresses/AddressTypeTabs.js
Normal file
@ -0,0 +1,94 @@
|
||||
import { useTheme } from '@react-navigation/native';
|
||||
import React from 'react';
|
||||
import { View, Text, StyleSheet } from 'react-native';
|
||||
import loc from '../../loc';
|
||||
|
||||
export const TABS = {
|
||||
EXTERNAL: 'receive',
|
||||
INTERNAL: 'change',
|
||||
};
|
||||
|
||||
const AddressTypeTabs = ({ currentTab, setCurrentTab }) => {
|
||||
const { colors } = useTheme();
|
||||
|
||||
const stylesHook = StyleSheet.create({
|
||||
activeTab: {
|
||||
backgroundColor: colors.modal,
|
||||
},
|
||||
activeText: {
|
||||
fontWeight: 'bold',
|
||||
color: colors.foregroundColor,
|
||||
},
|
||||
inactiveTab: {
|
||||
fontWeight: 'normal',
|
||||
color: colors.foregroundColor,
|
||||
},
|
||||
backTabs: {
|
||||
backgroundColor: colors.buttonDisabledBackgroundColor,
|
||||
},
|
||||
});
|
||||
|
||||
const tabs = Object.entries(TABS).map(([key, value]) => {
|
||||
return {
|
||||
key,
|
||||
value,
|
||||
name: loc.addresses[`type_${value}`],
|
||||
};
|
||||
});
|
||||
|
||||
const changeToTab = tabKey => {
|
||||
if (tabKey in TABS) {
|
||||
setCurrentTab(TABS[tabKey]);
|
||||
}
|
||||
};
|
||||
|
||||
const render = () => {
|
||||
const tabsButtons = tabs.map(tab => {
|
||||
const isActive = tab.value === currentTab;
|
||||
|
||||
const tabStyle = isActive ? stylesHook.activeTab : stylesHook.inactiveTab;
|
||||
const textStyle = isActive ? stylesHook.activeText : stylesHook.inactiveTab;
|
||||
|
||||
return (
|
||||
<View key={tab.key} onPress={() => changeToTab(tab.key)} style={[styles.tab, tabStyle]}>
|
||||
<Text onPress={() => changeToTab(tab.key)} style={textStyle}>{tab.name}</Text>
|
||||
</View>
|
||||
);
|
||||
});
|
||||
|
||||
return (
|
||||
<View style={styles.container}>
|
||||
<View style={[stylesHook.backTabs, styles.backTabs]}>
|
||||
<View style={styles.tabs}>{tabsButtons}</View>
|
||||
</View>
|
||||
</View>
|
||||
);
|
||||
};
|
||||
|
||||
return render();
|
||||
};
|
||||
|
||||
const styles = StyleSheet.create({
|
||||
container: {
|
||||
flex: 1,
|
||||
flexDirection: 'row',
|
||||
justifyContent: 'center',
|
||||
},
|
||||
backTabs: {
|
||||
padding: 4,
|
||||
marginVertical: 8,
|
||||
borderRadius: 8,
|
||||
},
|
||||
tabs: {
|
||||
flex: 1,
|
||||
flexDirection: 'row',
|
||||
justifyContent: 'center',
|
||||
},
|
||||
tab: {
|
||||
borderRadius: 6,
|
||||
paddingVertical: 8,
|
||||
paddingHorizontal: 16,
|
||||
},
|
||||
});
|
||||
|
||||
export { AddressTypeTabs };
|
@ -50,7 +50,7 @@
|
||||
6DD410BF266CB13D0087DE03 /* Models.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6DEB4BFA254FBA0E00E9F9AA /* Models.swift */; };
|
||||
6DD410C0266CB1460087DE03 /* MarketWidget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D9946622555A660000E52E8 /* MarketWidget.swift */; };
|
||||
6DF25A9F249DB97E001D06F5 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 6DF25A9E249DB97E001D06F5 /* LaunchScreen.storyboard */; };
|
||||
6DFC807024EA0B6C007B8700 /* EFQRCode in Frameworks */ = {isa = PBXBuildFile; productRef = 6DFC806F24EA0B6C007B8700 /* EFQRCode */; };
|
||||
6DFC807024EA0B6C007B8700 /* BuildFile in Frameworks */ = {isa = PBXBuildFile; productRef = 6DFC806F24EA0B6C007B8700 /* SwiftPackageProductDependency */; };
|
||||
6DFC807224EA2FA9007B8700 /* ViewQRCodefaceController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6DFC807124EA2FA9007B8700 /* ViewQRCodefaceController.swift */; };
|
||||
764B49B1420D4AEB8109BF62 /* libsqlite3.0.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 7B468CC34D5B41F3950078EF /* libsqlite3.0.tbd */; };
|
||||
782F075B5DD048449E2DECE9 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B9D9B3A7B2CB4255876B67AF /* libz.tbd */; };
|
||||
@ -397,7 +397,7 @@
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
6DFC807024EA0B6C007B8700 /* EFQRCode in Frameworks */,
|
||||
6DFC807024EA0B6C007B8700 /* BuildFile in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@ -837,7 +837,7 @@
|
||||
);
|
||||
name = "BlueWalletWatch Extension";
|
||||
packageProductDependencies = (
|
||||
6DFC806F24EA0B6C007B8700 /* EFQRCode */,
|
||||
6DFC806F24EA0B6C007B8700 /* SwiftPackageProductDependency */,
|
||||
);
|
||||
productName = "BlueWalletWatch Extension";
|
||||
productReference = B40D4E3C225841ED00428FCC /* BlueWalletWatch Extension.appex */;
|
||||
@ -921,7 +921,7 @@
|
||||
);
|
||||
mainGroup = 83CBB9F61A601CBA00E9B192;
|
||||
packageReferences = (
|
||||
6DFC806E24EA0B6C007B8700 /* XCRemoteSwiftPackageReference "EFQRCode" */,
|
||||
6DFC806E24EA0B6C007B8700 /* RemoteSwiftPackageReference */,
|
||||
);
|
||||
productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */;
|
||||
projectDirPath = "";
|
||||
@ -1661,6 +1661,7 @@
|
||||
COPY_PHASE_STRIP = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
ENABLE_TESTABILITY = YES;
|
||||
"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "arm64 ";
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
@ -1717,6 +1718,7 @@
|
||||
COPY_PHASE_STRIP = YES;
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "arm64 ";
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
@ -1958,7 +1960,7 @@
|
||||
/* End XCConfigurationList section */
|
||||
|
||||
/* Begin XCRemoteSwiftPackageReference section */
|
||||
6DFC806E24EA0B6C007B8700 /* XCRemoteSwiftPackageReference "EFQRCode" */ = {
|
||||
6DFC806E24EA0B6C007B8700 /* RemoteSwiftPackageReference */ = {
|
||||
isa = XCRemoteSwiftPackageReference;
|
||||
repositoryURL = "https://github.com/EFPrefix/EFQRCode.git";
|
||||
requirement = {
|
||||
@ -1969,9 +1971,9 @@
|
||||
/* End XCRemoteSwiftPackageReference section */
|
||||
|
||||
/* Begin XCSwiftPackageProductDependency section */
|
||||
6DFC806F24EA0B6C007B8700 /* EFQRCode */ = {
|
||||
6DFC806F24EA0B6C007B8700 /* SwiftPackageProductDependency */ = {
|
||||
isa = XCSwiftPackageProductDependency;
|
||||
package = 6DFC806E24EA0B6C007B8700 /* XCRemoteSwiftPackageReference "EFQRCode" */;
|
||||
package = 6DFC806E24EA0B6C007B8700 /* RemoteSwiftPackageReference */;
|
||||
productName = EFQRCode;
|
||||
};
|
||||
/* End XCSwiftPackageProductDependency section */
|
||||
|
@ -60,7 +60,6 @@ class ComplicationController: NSObject, CLKComplicationDataSource {
|
||||
date = Date()
|
||||
}
|
||||
|
||||
let line1Text = CLKSimpleTextProvider(text:valueLabel)
|
||||
let line2Text = CLKSimpleTextProvider(text:currencySymbol)
|
||||
let line1SmallText = CLKSimpleTextProvider(text: valueSmallLabel)
|
||||
|
||||
@ -139,7 +138,7 @@ class ComplicationController: NSObject, CLKComplicationDataSource {
|
||||
if #available(watchOSApplicationExtension 6.0, *) {
|
||||
template.headerTextProvider = CLKTextProvider(format: "Bitcoin Price")
|
||||
template.body1TextProvider = CLKTextProvider(format: "%@%@", currencySymbol, valueLabel)
|
||||
template.body2TextProvider = CLKTextProvider(format: "%@", timeLabel)
|
||||
template.body2TextProvider = CLKTextProvider(format: "at %@", timeLabel)
|
||||
entry = CLKComplicationTimelineEntry(date: date, complicationTemplate: template)
|
||||
handler(entry)
|
||||
} else {
|
||||
@ -149,7 +148,7 @@ class ComplicationController: NSObject, CLKComplicationDataSource {
|
||||
let template = CLKComplicationTemplateExtraLargeStackText()
|
||||
if #available(watchOSApplicationExtension 6.0, *) {
|
||||
template.line1TextProvider = CLKTextProvider(format: "%@%@", currencySymbol, valueLabel)
|
||||
template.line2TextProvider = CLKTextProvider(format: "%@", timeLabel)
|
||||
template.line2TextProvider = CLKTextProvider(format: "at %@", timeLabel)
|
||||
entry = CLKComplicationTimelineEntry(date: date, complicationTemplate: template)
|
||||
handler(entry)
|
||||
} else {
|
||||
@ -160,7 +159,7 @@ class ComplicationController: NSObject, CLKComplicationDataSource {
|
||||
if #available(watchOSApplicationExtension 6.0, *) {
|
||||
template.headerTextProvider = CLKTextProvider(format: "Bitcoin Price")
|
||||
template.body1TextProvider = CLKTextProvider(format: "%@%@", currencySymbol, valueLabel)
|
||||
template.body2TextProvider = CLKTextProvider(format: "%@", timeLabel)
|
||||
template.body2TextProvider = CLKTextProvider(format: "at %@", timeLabel)
|
||||
entry = CLKComplicationTimelineEntry(date: date, complicationTemplate: template)
|
||||
handler(entry)
|
||||
} else {
|
||||
@ -170,7 +169,7 @@ class ComplicationController: NSObject, CLKComplicationDataSource {
|
||||
if #available(watchOSApplicationExtension 7.0, *) {
|
||||
let template = CLKComplicationTemplateGraphicExtraLargeCircularStackText()
|
||||
template.line1TextProvider = CLKTextProvider(format: "%@%@", currencySymbol, valueLabel)
|
||||
template.line1TextProvider = CLKTextProvider(format: "%@", timeLabel)
|
||||
template.line1TextProvider = CLKTextProvider(format: "at %@", timeLabel)
|
||||
entry = CLKComplicationTimelineEntry(date: date, complicationTemplate: template)
|
||||
handler(entry)
|
||||
} else {
|
||||
|
12
ios/Podfile
12
ios/Podfile
@ -2,19 +2,23 @@ platform :ios, '11.1'
|
||||
workspace 'BlueWallet'
|
||||
require_relative '../node_modules/react-native/scripts/react_native_pods'
|
||||
require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'
|
||||
|
||||
|
||||
target 'BlueWallet' do
|
||||
config = use_native_modules!
|
||||
|
||||
use_react_native!(:path => config["reactNativePath"])
|
||||
use_react_native!(
|
||||
:path => config[:reactNativePath],
|
||||
# to enable hermes on iOS, change `false` to `true` and then install pods
|
||||
:hermes_enabled => false
|
||||
)
|
||||
|
||||
# Enables Flipper.
|
||||
#
|
||||
# Note that if you have use_frameworks! enabled, Flipper will not work and
|
||||
# you should disable these next few lines.
|
||||
use_flipper!({ 'Flipper-Folly' => '2.5.3', 'Flipper' => '0.87.0', 'Flipper-RSocket' => '1.3.1' })
|
||||
use_flipper!()
|
||||
post_install do |installer|
|
||||
flipper_post_install(installer)
|
||||
react_native_post_install(installer)
|
||||
installer.pods_project.targets.each do |target|
|
||||
target.build_configurations.each do |config|
|
||||
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '10.0'
|
||||
|
570
ios/Podfile.lock
570
ios/Podfile.lock
@ -4,15 +4,15 @@ PODS:
|
||||
- React
|
||||
- CocoaAsyncSocket (7.6.5)
|
||||
- DoubleConversion (1.1.6)
|
||||
- FBLazyVector (0.63.4)
|
||||
- FBReactNativeSpec (0.63.4):
|
||||
- Folly (= 2020.01.13.00)
|
||||
- RCTRequired (= 0.63.4)
|
||||
- RCTTypeSafety (= 0.63.4)
|
||||
- React-Core (= 0.63.4)
|
||||
- React-jsi (= 0.63.4)
|
||||
- ReactCommon/turbomodule/core (= 0.63.4)
|
||||
- Flipper (0.87.0):
|
||||
- FBLazyVector (0.64.2)
|
||||
- FBReactNativeSpec (0.64.2):
|
||||
- RCT-Folly (= 2020.01.13.00)
|
||||
- RCTRequired (= 0.64.2)
|
||||
- RCTTypeSafety (= 0.64.2)
|
||||
- React-Core (= 0.64.2)
|
||||
- React-jsi (= 0.64.2)
|
||||
- ReactCommon/turbomodule/core (= 0.64.2)
|
||||
- Flipper (0.75.1):
|
||||
- Flipper-Folly (~> 2.5)
|
||||
- Flipper-RSocket (~> 1.3)
|
||||
- Flipper-DoubleConversion (1.1.7)
|
||||
@ -26,58 +26,38 @@ PODS:
|
||||
- Flipper-PeerTalk (0.0.4)
|
||||
- Flipper-RSocket (1.3.1):
|
||||
- Flipper-Folly (~> 2.5)
|
||||
- FlipperKit (0.87.0):
|
||||
- FlipperKit/Core (= 0.87.0)
|
||||
- FlipperKit/Core (0.87.0):
|
||||
- Flipper (~> 0.87.0)
|
||||
- FlipperKit (0.75.1):
|
||||
- FlipperKit/Core (= 0.75.1)
|
||||
- FlipperKit/Core (0.75.1):
|
||||
- Flipper (~> 0.75.1)
|
||||
- FlipperKit/CppBridge
|
||||
- FlipperKit/FBCxxFollyDynamicConvert
|
||||
- FlipperKit/FBDefines
|
||||
- FlipperKit/FKPortForwarding
|
||||
- FlipperKit/CppBridge (0.87.0):
|
||||
- Flipper (~> 0.87.0)
|
||||
- FlipperKit/FBCxxFollyDynamicConvert (0.87.0):
|
||||
- FlipperKit/CppBridge (0.75.1):
|
||||
- Flipper (~> 0.75.1)
|
||||
- FlipperKit/FBCxxFollyDynamicConvert (0.75.1):
|
||||
- Flipper-Folly (~> 2.5)
|
||||
- FlipperKit/FBDefines (0.87.0)
|
||||
- FlipperKit/FKPortForwarding (0.87.0):
|
||||
- FlipperKit/FBDefines (0.75.1)
|
||||
- FlipperKit/FKPortForwarding (0.75.1):
|
||||
- CocoaAsyncSocket (~> 7.6)
|
||||
- Flipper-PeerTalk (~> 0.0.4)
|
||||
- FlipperKit/FlipperKitHighlightOverlay (0.87.0)
|
||||
- FlipperKit/FlipperKitLayoutHelpers (0.87.0):
|
||||
- FlipperKit/FlipperKitHighlightOverlay (0.75.1)
|
||||
- FlipperKit/FlipperKitLayoutPlugin (0.75.1):
|
||||
- FlipperKit/Core
|
||||
- FlipperKit/FlipperKitHighlightOverlay
|
||||
- FlipperKit/FlipperKitLayoutTextSearchable
|
||||
- FlipperKit/FlipperKitLayoutIOSDescriptors (0.87.0):
|
||||
- FlipperKit/Core
|
||||
- FlipperKit/FlipperKitHighlightOverlay
|
||||
- FlipperKit/FlipperKitLayoutHelpers
|
||||
- YogaKit (~> 1.18)
|
||||
- FlipperKit/FlipperKitLayoutPlugin (0.87.0):
|
||||
- FlipperKit/FlipperKitLayoutTextSearchable (0.75.1)
|
||||
- FlipperKit/FlipperKitNetworkPlugin (0.75.1):
|
||||
- FlipperKit/Core
|
||||
- FlipperKit/FlipperKitHighlightOverlay
|
||||
- FlipperKit/FlipperKitLayoutHelpers
|
||||
- FlipperKit/FlipperKitLayoutIOSDescriptors
|
||||
- FlipperKit/FlipperKitLayoutTextSearchable
|
||||
- YogaKit (~> 1.18)
|
||||
- FlipperKit/FlipperKitLayoutTextSearchable (0.87.0)
|
||||
- FlipperKit/FlipperKitNetworkPlugin (0.87.0):
|
||||
- FlipperKit/FlipperKitReactPlugin (0.75.1):
|
||||
- FlipperKit/Core
|
||||
- FlipperKit/FlipperKitReactPlugin (0.87.0):
|
||||
- FlipperKit/FlipperKitUserDefaultsPlugin (0.75.1):
|
||||
- FlipperKit/Core
|
||||
- FlipperKit/FlipperKitUserDefaultsPlugin (0.87.0):
|
||||
- FlipperKit/Core
|
||||
- FlipperKit/SKIOSNetworkPlugin (0.87.0):
|
||||
- FlipperKit/SKIOSNetworkPlugin (0.75.1):
|
||||
- FlipperKit/Core
|
||||
- FlipperKit/FlipperKitNetworkPlugin
|
||||
- Folly (2020.01.13.00):
|
||||
- boost-for-react-native
|
||||
- DoubleConversion
|
||||
- Folly/Default (= 2020.01.13.00)
|
||||
- glog
|
||||
- Folly/Default (2020.01.13.00):
|
||||
- boost-for-react-native
|
||||
- DoubleConversion
|
||||
- glog
|
||||
- GCDWebServer (3.5.4):
|
||||
- GCDWebServer/Core (= 3.5.4)
|
||||
- GCDWebServer/Core (3.5.4)
|
||||
@ -90,172 +70,199 @@ PODS:
|
||||
- OpenSSL-Universal (1.1.180)
|
||||
- PasscodeAuth (1.0.0):
|
||||
- React
|
||||
- RCTRequired (0.63.4)
|
||||
- RCTTypeSafety (0.63.4):
|
||||
- FBLazyVector (= 0.63.4)
|
||||
- Folly (= 2020.01.13.00)
|
||||
- RCTRequired (= 0.63.4)
|
||||
- React-Core (= 0.63.4)
|
||||
- React (0.63.4):
|
||||
- React-Core (= 0.63.4)
|
||||
- React-Core/DevSupport (= 0.63.4)
|
||||
- React-Core/RCTWebSocket (= 0.63.4)
|
||||
- React-RCTActionSheet (= 0.63.4)
|
||||
- React-RCTAnimation (= 0.63.4)
|
||||
- React-RCTBlob (= 0.63.4)
|
||||
- React-RCTImage (= 0.63.4)
|
||||
- React-RCTLinking (= 0.63.4)
|
||||
- React-RCTNetwork (= 0.63.4)
|
||||
- React-RCTSettings (= 0.63.4)
|
||||
- React-RCTText (= 0.63.4)
|
||||
- React-RCTVibration (= 0.63.4)
|
||||
- React-callinvoker (0.63.4)
|
||||
- React-Core (0.63.4):
|
||||
- Folly (= 2020.01.13.00)
|
||||
- RCT-Folly (2020.01.13.00):
|
||||
- boost-for-react-native
|
||||
- DoubleConversion
|
||||
- glog
|
||||
- React-Core/Default (= 0.63.4)
|
||||
- React-cxxreact (= 0.63.4)
|
||||
- React-jsi (= 0.63.4)
|
||||
- React-jsiexecutor (= 0.63.4)
|
||||
- RCT-Folly/Default (= 2020.01.13.00)
|
||||
- RCT-Folly/Default (2020.01.13.00):
|
||||
- boost-for-react-native
|
||||
- DoubleConversion
|
||||
- glog
|
||||
- RCTRequired (0.64.2)
|
||||
- RCTTypeSafety (0.64.2):
|
||||
- FBLazyVector (= 0.64.2)
|
||||
- RCT-Folly (= 2020.01.13.00)
|
||||
- RCTRequired (= 0.64.2)
|
||||
- React-Core (= 0.64.2)
|
||||
- React (0.64.2):
|
||||
- React-Core (= 0.64.2)
|
||||
- React-Core/DevSupport (= 0.64.2)
|
||||
- React-Core/RCTWebSocket (= 0.64.2)
|
||||
- React-RCTActionSheet (= 0.64.2)
|
||||
- React-RCTAnimation (= 0.64.2)
|
||||
- React-RCTBlob (= 0.64.2)
|
||||
- React-RCTImage (= 0.64.2)
|
||||
- React-RCTLinking (= 0.64.2)
|
||||
- React-RCTNetwork (= 0.64.2)
|
||||
- React-RCTSettings (= 0.64.2)
|
||||
- React-RCTText (= 0.64.2)
|
||||
- React-RCTVibration (= 0.64.2)
|
||||
- React-callinvoker (0.64.2)
|
||||
- React-Core (0.64.2):
|
||||
- glog
|
||||
- RCT-Folly (= 2020.01.13.00)
|
||||
- React-Core/Default (= 0.64.2)
|
||||
- React-cxxreact (= 0.64.2)
|
||||
- React-jsi (= 0.64.2)
|
||||
- React-jsiexecutor (= 0.64.2)
|
||||
- React-perflogger (= 0.64.2)
|
||||
- Yoga
|
||||
- React-Core/CoreModulesHeaders (0.63.4):
|
||||
- Folly (= 2020.01.13.00)
|
||||
- React-Core/CoreModulesHeaders (0.64.2):
|
||||
- glog
|
||||
- RCT-Folly (= 2020.01.13.00)
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 0.63.4)
|
||||
- React-jsi (= 0.63.4)
|
||||
- React-jsiexecutor (= 0.63.4)
|
||||
- React-cxxreact (= 0.64.2)
|
||||
- React-jsi (= 0.64.2)
|
||||
- React-jsiexecutor (= 0.64.2)
|
||||
- React-perflogger (= 0.64.2)
|
||||
- Yoga
|
||||
- React-Core/Default (0.63.4):
|
||||
- Folly (= 2020.01.13.00)
|
||||
- React-Core/Default (0.64.2):
|
||||
- glog
|
||||
- React-cxxreact (= 0.63.4)
|
||||
- React-jsi (= 0.63.4)
|
||||
- React-jsiexecutor (= 0.63.4)
|
||||
- RCT-Folly (= 2020.01.13.00)
|
||||
- React-cxxreact (= 0.64.2)
|
||||
- React-jsi (= 0.64.2)
|
||||
- React-jsiexecutor (= 0.64.2)
|
||||
- React-perflogger (= 0.64.2)
|
||||
- Yoga
|
||||
- React-Core/DevSupport (0.63.4):
|
||||
- Folly (= 2020.01.13.00)
|
||||
- React-Core/DevSupport (0.64.2):
|
||||
- glog
|
||||
- React-Core/Default (= 0.63.4)
|
||||
- React-Core/RCTWebSocket (= 0.63.4)
|
||||
- React-cxxreact (= 0.63.4)
|
||||
- React-jsi (= 0.63.4)
|
||||
- React-jsiexecutor (= 0.63.4)
|
||||
- React-jsinspector (= 0.63.4)
|
||||
- RCT-Folly (= 2020.01.13.00)
|
||||
- React-Core/Default (= 0.64.2)
|
||||
- React-Core/RCTWebSocket (= 0.64.2)
|
||||
- React-cxxreact (= 0.64.2)
|
||||
- React-jsi (= 0.64.2)
|
||||
- React-jsiexecutor (= 0.64.2)
|
||||
- React-jsinspector (= 0.64.2)
|
||||
- React-perflogger (= 0.64.2)
|
||||
- Yoga
|
||||
- React-Core/RCTActionSheetHeaders (0.63.4):
|
||||
- Folly (= 2020.01.13.00)
|
||||
- React-Core/RCTActionSheetHeaders (0.64.2):
|
||||
- glog
|
||||
- RCT-Folly (= 2020.01.13.00)
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 0.63.4)
|
||||
- React-jsi (= 0.63.4)
|
||||
- React-jsiexecutor (= 0.63.4)
|
||||
- React-cxxreact (= 0.64.2)
|
||||
- React-jsi (= 0.64.2)
|
||||
- React-jsiexecutor (= 0.64.2)
|
||||
- React-perflogger (= 0.64.2)
|
||||
- Yoga
|
||||
- React-Core/RCTAnimationHeaders (0.63.4):
|
||||
- Folly (= 2020.01.13.00)
|
||||
- React-Core/RCTAnimationHeaders (0.64.2):
|
||||
- glog
|
||||
- RCT-Folly (= 2020.01.13.00)
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 0.63.4)
|
||||
- React-jsi (= 0.63.4)
|
||||
- React-jsiexecutor (= 0.63.4)
|
||||
- React-cxxreact (= 0.64.2)
|
||||
- React-jsi (= 0.64.2)
|
||||
- React-jsiexecutor (= 0.64.2)
|
||||
- React-perflogger (= 0.64.2)
|
||||
- Yoga
|
||||
- React-Core/RCTBlobHeaders (0.63.4):
|
||||
- Folly (= 2020.01.13.00)
|
||||
- React-Core/RCTBlobHeaders (0.64.2):
|
||||
- glog
|
||||
- RCT-Folly (= 2020.01.13.00)
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 0.63.4)
|
||||
- React-jsi (= 0.63.4)
|
||||
- React-jsiexecutor (= 0.63.4)
|
||||
- React-cxxreact (= 0.64.2)
|
||||
- React-jsi (= 0.64.2)
|
||||
- React-jsiexecutor (= 0.64.2)
|
||||
- React-perflogger (= 0.64.2)
|
||||
- Yoga
|
||||
- React-Core/RCTImageHeaders (0.63.4):
|
||||
- Folly (= 2020.01.13.00)
|
||||
- React-Core/RCTImageHeaders (0.64.2):
|
||||
- glog
|
||||
- RCT-Folly (= 2020.01.13.00)
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 0.63.4)
|
||||
- React-jsi (= 0.63.4)
|
||||
- React-jsiexecutor (= 0.63.4)
|
||||
- React-cxxreact (= 0.64.2)
|
||||
- React-jsi (= 0.64.2)
|
||||
- React-jsiexecutor (= 0.64.2)
|
||||
- React-perflogger (= 0.64.2)
|
||||
- Yoga
|
||||
- React-Core/RCTLinkingHeaders (0.63.4):
|
||||
- Folly (= 2020.01.13.00)
|
||||
- React-Core/RCTLinkingHeaders (0.64.2):
|
||||
- glog
|
||||
- RCT-Folly (= 2020.01.13.00)
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 0.63.4)
|
||||
- React-jsi (= 0.63.4)
|
||||
- React-jsiexecutor (= 0.63.4)
|
||||
- React-cxxreact (= 0.64.2)
|
||||
- React-jsi (= 0.64.2)
|
||||
- React-jsiexecutor (= 0.64.2)
|
||||
- React-perflogger (= 0.64.2)
|
||||
- Yoga
|
||||
- React-Core/RCTNetworkHeaders (0.63.4):
|
||||
- Folly (= 2020.01.13.00)
|
||||
- React-Core/RCTNetworkHeaders (0.64.2):
|
||||
- glog
|
||||
- RCT-Folly (= 2020.01.13.00)
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 0.63.4)
|
||||
- React-jsi (= 0.63.4)
|
||||
- React-jsiexecutor (= 0.63.4)
|
||||
- React-cxxreact (= 0.64.2)
|
||||
- React-jsi (= 0.64.2)
|
||||
- React-jsiexecutor (= 0.64.2)
|
||||
- React-perflogger (= 0.64.2)
|
||||
- Yoga
|
||||
- React-Core/RCTSettingsHeaders (0.63.4):
|
||||
- Folly (= 2020.01.13.00)
|
||||
- React-Core/RCTSettingsHeaders (0.64.2):
|
||||
- glog
|
||||
- RCT-Folly (= 2020.01.13.00)
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 0.63.4)
|
||||
- React-jsi (= 0.63.4)
|
||||
- React-jsiexecutor (= 0.63.4)
|
||||
- React-cxxreact (= 0.64.2)
|
||||
- React-jsi (= 0.64.2)
|
||||
- React-jsiexecutor (= 0.64.2)
|
||||
- React-perflogger (= 0.64.2)
|
||||
- Yoga
|
||||
- React-Core/RCTTextHeaders (0.63.4):
|
||||
- Folly (= 2020.01.13.00)
|
||||
- React-Core/RCTTextHeaders (0.64.2):
|
||||
- glog
|
||||
- RCT-Folly (= 2020.01.13.00)
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 0.63.4)
|
||||
- React-jsi (= 0.63.4)
|
||||
- React-jsiexecutor (= 0.63.4)
|
||||
- React-cxxreact (= 0.64.2)
|
||||
- React-jsi (= 0.64.2)
|
||||
- React-jsiexecutor (= 0.64.2)
|
||||
- React-perflogger (= 0.64.2)
|
||||
- Yoga
|
||||
- React-Core/RCTVibrationHeaders (0.63.4):
|
||||
- Folly (= 2020.01.13.00)
|
||||
- React-Core/RCTVibrationHeaders (0.64.2):
|
||||
- glog
|
||||
- RCT-Folly (= 2020.01.13.00)
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 0.63.4)
|
||||
- React-jsi (= 0.63.4)
|
||||
- React-jsiexecutor (= 0.63.4)
|
||||
- React-cxxreact (= 0.64.2)
|
||||
- React-jsi (= 0.64.2)
|
||||
- React-jsiexecutor (= 0.64.2)
|
||||
- React-perflogger (= 0.64.2)
|
||||
- Yoga
|
||||
- React-Core/RCTWebSocket (0.63.4):
|
||||
- Folly (= 2020.01.13.00)
|
||||
- React-Core/RCTWebSocket (0.64.2):
|
||||
- glog
|
||||
- React-Core/Default (= 0.63.4)
|
||||
- React-cxxreact (= 0.63.4)
|
||||
- React-jsi (= 0.63.4)
|
||||
- React-jsiexecutor (= 0.63.4)
|
||||
- RCT-Folly (= 2020.01.13.00)
|
||||
- React-Core/Default (= 0.64.2)
|
||||
- React-cxxreact (= 0.64.2)
|
||||
- React-jsi (= 0.64.2)
|
||||
- React-jsiexecutor (= 0.64.2)
|
||||
- React-perflogger (= 0.64.2)
|
||||
- Yoga
|
||||
- React-CoreModules (0.63.4):
|
||||
- FBReactNativeSpec (= 0.63.4)
|
||||
- Folly (= 2020.01.13.00)
|
||||
- RCTTypeSafety (= 0.63.4)
|
||||
- React-Core/CoreModulesHeaders (= 0.63.4)
|
||||
- React-jsi (= 0.63.4)
|
||||
- React-RCTImage (= 0.63.4)
|
||||
- ReactCommon/turbomodule/core (= 0.63.4)
|
||||
- React-cxxreact (0.63.4):
|
||||
- React-CoreModules (0.64.2):
|
||||
- FBReactNativeSpec (= 0.64.2)
|
||||
- RCT-Folly (= 2020.01.13.00)
|
||||
- RCTTypeSafety (= 0.64.2)
|
||||
- React-Core/CoreModulesHeaders (= 0.64.2)
|
||||
- React-jsi (= 0.64.2)
|
||||
- React-RCTImage (= 0.64.2)
|
||||
- ReactCommon/turbomodule/core (= 0.64.2)
|
||||
- React-cxxreact (0.64.2):
|
||||
- boost-for-react-native (= 1.63.0)
|
||||
- DoubleConversion
|
||||
- Folly (= 2020.01.13.00)
|
||||
- glog
|
||||
- React-callinvoker (= 0.63.4)
|
||||
- React-jsinspector (= 0.63.4)
|
||||
- React-jsi (0.63.4):
|
||||
- RCT-Folly (= 2020.01.13.00)
|
||||
- React-callinvoker (= 0.64.2)
|
||||
- React-jsi (= 0.64.2)
|
||||
- React-jsinspector (= 0.64.2)
|
||||
- React-perflogger (= 0.64.2)
|
||||
- React-runtimeexecutor (= 0.64.2)
|
||||
- React-jsi (0.64.2):
|
||||
- boost-for-react-native (= 1.63.0)
|
||||
- DoubleConversion
|
||||
- Folly (= 2020.01.13.00)
|
||||
- glog
|
||||
- React-jsi/Default (= 0.63.4)
|
||||
- React-jsi/Default (0.63.4):
|
||||
- RCT-Folly (= 2020.01.13.00)
|
||||
- React-jsi/Default (= 0.64.2)
|
||||
- React-jsi/Default (0.64.2):
|
||||
- boost-for-react-native (= 1.63.0)
|
||||
- DoubleConversion
|
||||
- Folly (= 2020.01.13.00)
|
||||
- glog
|
||||
- React-jsiexecutor (0.63.4):
|
||||
- RCT-Folly (= 2020.01.13.00)
|
||||
- React-jsiexecutor (0.64.2):
|
||||
- DoubleConversion
|
||||
- Folly (= 2020.01.13.00)
|
||||
- glog
|
||||
- React-cxxreact (= 0.63.4)
|
||||
- React-jsi (= 0.63.4)
|
||||
- React-jsinspector (0.63.4)
|
||||
- RCT-Folly (= 2020.01.13.00)
|
||||
- React-cxxreact (= 0.64.2)
|
||||
- React-jsi (= 0.64.2)
|
||||
- React-perflogger (= 0.64.2)
|
||||
- React-jsinspector (0.64.2)
|
||||
- react-native-blue-crypto (1.0.0):
|
||||
- React
|
||||
- react-native-blur (0.8.0):
|
||||
@ -289,66 +296,70 @@ PODS:
|
||||
- React-Core
|
||||
- react-native-widget-center (0.0.4):
|
||||
- React
|
||||
- React-RCTActionSheet (0.63.4):
|
||||
- React-Core/RCTActionSheetHeaders (= 0.63.4)
|
||||
- React-RCTAnimation (0.63.4):
|
||||
- FBReactNativeSpec (= 0.63.4)
|
||||
- Folly (= 2020.01.13.00)
|
||||
- RCTTypeSafety (= 0.63.4)
|
||||
- React-Core/RCTAnimationHeaders (= 0.63.4)
|
||||
- React-jsi (= 0.63.4)
|
||||
- ReactCommon/turbomodule/core (= 0.63.4)
|
||||
- React-RCTBlob (0.63.4):
|
||||
- FBReactNativeSpec (= 0.63.4)
|
||||
- Folly (= 2020.01.13.00)
|
||||
- React-Core/RCTBlobHeaders (= 0.63.4)
|
||||
- React-Core/RCTWebSocket (= 0.63.4)
|
||||
- React-jsi (= 0.63.4)
|
||||
- React-RCTNetwork (= 0.63.4)
|
||||
- ReactCommon/turbomodule/core (= 0.63.4)
|
||||
- React-RCTImage (0.63.4):
|
||||
- FBReactNativeSpec (= 0.63.4)
|
||||
- Folly (= 2020.01.13.00)
|
||||
- RCTTypeSafety (= 0.63.4)
|
||||
- React-Core/RCTImageHeaders (= 0.63.4)
|
||||
- React-jsi (= 0.63.4)
|
||||
- React-RCTNetwork (= 0.63.4)
|
||||
- ReactCommon/turbomodule/core (= 0.63.4)
|
||||
- React-RCTLinking (0.63.4):
|
||||
- FBReactNativeSpec (= 0.63.4)
|
||||
- React-Core/RCTLinkingHeaders (= 0.63.4)
|
||||
- React-jsi (= 0.63.4)
|
||||
- ReactCommon/turbomodule/core (= 0.63.4)
|
||||
- React-RCTNetwork (0.63.4):
|
||||
- FBReactNativeSpec (= 0.63.4)
|
||||
- Folly (= 2020.01.13.00)
|
||||
- RCTTypeSafety (= 0.63.4)
|
||||
- React-Core/RCTNetworkHeaders (= 0.63.4)
|
||||
- React-jsi (= 0.63.4)
|
||||
- ReactCommon/turbomodule/core (= 0.63.4)
|
||||
- React-RCTSettings (0.63.4):
|
||||
- FBReactNativeSpec (= 0.63.4)
|
||||
- Folly (= 2020.01.13.00)
|
||||
- RCTTypeSafety (= 0.63.4)
|
||||
- React-Core/RCTSettingsHeaders (= 0.63.4)
|
||||
- React-jsi (= 0.63.4)
|
||||
- ReactCommon/turbomodule/core (= 0.63.4)
|
||||
- React-RCTText (0.63.4):
|
||||
- React-Core/RCTTextHeaders (= 0.63.4)
|
||||
- React-RCTVibration (0.63.4):
|
||||
- FBReactNativeSpec (= 0.63.4)
|
||||
- Folly (= 2020.01.13.00)
|
||||
- React-Core/RCTVibrationHeaders (= 0.63.4)
|
||||
- React-jsi (= 0.63.4)
|
||||
- ReactCommon/turbomodule/core (= 0.63.4)
|
||||
- ReactCommon/turbomodule/core (0.63.4):
|
||||
- React-perflogger (0.64.2)
|
||||
- React-RCTActionSheet (0.64.2):
|
||||
- React-Core/RCTActionSheetHeaders (= 0.64.2)
|
||||
- React-RCTAnimation (0.64.2):
|
||||
- FBReactNativeSpec (= 0.64.2)
|
||||
- RCT-Folly (= 2020.01.13.00)
|
||||
- RCTTypeSafety (= 0.64.2)
|
||||
- React-Core/RCTAnimationHeaders (= 0.64.2)
|
||||
- React-jsi (= 0.64.2)
|
||||
- ReactCommon/turbomodule/core (= 0.64.2)
|
||||
- React-RCTBlob (0.64.2):
|
||||
- FBReactNativeSpec (= 0.64.2)
|
||||
- RCT-Folly (= 2020.01.13.00)
|
||||
- React-Core/RCTBlobHeaders (= 0.64.2)
|
||||
- React-Core/RCTWebSocket (= 0.64.2)
|
||||
- React-jsi (= 0.64.2)
|
||||
- React-RCTNetwork (= 0.64.2)
|
||||
- ReactCommon/turbomodule/core (= 0.64.2)
|
||||
- React-RCTImage (0.64.2):
|
||||
- FBReactNativeSpec (= 0.64.2)
|
||||
- RCT-Folly (= 2020.01.13.00)
|
||||
- RCTTypeSafety (= 0.64.2)
|
||||
- React-Core/RCTImageHeaders (= 0.64.2)
|
||||
- React-jsi (= 0.64.2)
|
||||
- React-RCTNetwork (= 0.64.2)
|
||||
- ReactCommon/turbomodule/core (= 0.64.2)
|
||||
- React-RCTLinking (0.64.2):
|
||||
- FBReactNativeSpec (= 0.64.2)
|
||||
- React-Core/RCTLinkingHeaders (= 0.64.2)
|
||||
- React-jsi (= 0.64.2)
|
||||
- ReactCommon/turbomodule/core (= 0.64.2)
|
||||
- React-RCTNetwork (0.64.2):
|
||||
- FBReactNativeSpec (= 0.64.2)
|
||||
- RCT-Folly (= 2020.01.13.00)
|
||||
- RCTTypeSafety (= 0.64.2)
|
||||
- React-Core/RCTNetworkHeaders (= 0.64.2)
|
||||
- React-jsi (= 0.64.2)
|
||||
- ReactCommon/turbomodule/core (= 0.64.2)
|
||||
- React-RCTSettings (0.64.2):
|
||||
- FBReactNativeSpec (= 0.64.2)
|
||||
- RCT-Folly (= 2020.01.13.00)
|
||||
- RCTTypeSafety (= 0.64.2)
|
||||
- React-Core/RCTSettingsHeaders (= 0.64.2)
|
||||
- React-jsi (= 0.64.2)
|
||||
- ReactCommon/turbomodule/core (= 0.64.2)
|
||||
- React-RCTText (0.64.2):
|
||||
- React-Core/RCTTextHeaders (= 0.64.2)
|
||||
- React-RCTVibration (0.64.2):
|
||||
- FBReactNativeSpec (= 0.64.2)
|
||||
- RCT-Folly (= 2020.01.13.00)
|
||||
- React-Core/RCTVibrationHeaders (= 0.64.2)
|
||||
- React-jsi (= 0.64.2)
|
||||
- ReactCommon/turbomodule/core (= 0.64.2)
|
||||
- React-runtimeexecutor (0.64.2):
|
||||
- React-jsi (= 0.64.2)
|
||||
- ReactCommon/turbomodule/core (0.64.2):
|
||||
- DoubleConversion
|
||||
- Folly (= 2020.01.13.00)
|
||||
- glog
|
||||
- React-callinvoker (= 0.63.4)
|
||||
- React-Core (= 0.63.4)
|
||||
- React-cxxreact (= 0.63.4)
|
||||
- React-jsi (= 0.63.4)
|
||||
- RCT-Folly (= 2020.01.13.00)
|
||||
- React-callinvoker (= 0.64.2)
|
||||
- React-Core (= 0.64.2)
|
||||
- React-cxxreact (= 0.64.2)
|
||||
- React-jsi (= 0.64.2)
|
||||
- React-perflogger (= 0.64.2)
|
||||
- RealmJS (10.4.2):
|
||||
- GCDWebServer
|
||||
- React
|
||||
@ -388,8 +399,8 @@ PODS:
|
||||
- DoubleConversion
|
||||
- FBLazyVector
|
||||
- FBReactNativeSpec
|
||||
- Folly
|
||||
- glog
|
||||
- RCT-Folly
|
||||
- RCTRequired
|
||||
- RCTTypeSafety
|
||||
- React
|
||||
@ -413,11 +424,12 @@ PODS:
|
||||
- React-RCTVibration
|
||||
- ReactCommon/turbomodule/core
|
||||
- Yoga
|
||||
- RNScreens (2.18.1):
|
||||
- RNScreens (3.4.0):
|
||||
- React-Core
|
||||
- React-RCTImage
|
||||
- RNSecureKeyStore (1.0.0):
|
||||
- React
|
||||
- RNSentry (2.5.2):
|
||||
- RNSentry (2.6.0):
|
||||
- React-Core
|
||||
- Sentry (= 7.0.0)
|
||||
- RNShare (6.2.1):
|
||||
@ -442,31 +454,31 @@ DEPENDENCIES:
|
||||
- BVLinearGradient (from `../node_modules/react-native-linear-gradient`)
|
||||
- DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`)
|
||||
- FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`)
|
||||
- FBReactNativeSpec (from `../node_modules/react-native/Libraries/FBReactNativeSpec`)
|
||||
- Flipper (= 0.87.0)
|
||||
- FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`)
|
||||
- Flipper (~> 0.75.1)
|
||||
- Flipper-DoubleConversion (= 1.1.7)
|
||||
- Flipper-Folly (= 2.5.3)
|
||||
- Flipper-Folly (~> 2.5.3)
|
||||
- Flipper-Glog (= 0.3.6)
|
||||
- Flipper-PeerTalk (~> 0.0.4)
|
||||
- Flipper-RSocket (= 1.3.1)
|
||||
- FlipperKit (= 0.87.0)
|
||||
- FlipperKit/Core (= 0.87.0)
|
||||
- FlipperKit/CppBridge (= 0.87.0)
|
||||
- FlipperKit/FBCxxFollyDynamicConvert (= 0.87.0)
|
||||
- FlipperKit/FBDefines (= 0.87.0)
|
||||
- FlipperKit/FKPortForwarding (= 0.87.0)
|
||||
- FlipperKit/FlipperKitHighlightOverlay (= 0.87.0)
|
||||
- FlipperKit/FlipperKitLayoutPlugin (= 0.87.0)
|
||||
- FlipperKit/FlipperKitLayoutTextSearchable (= 0.87.0)
|
||||
- FlipperKit/FlipperKitNetworkPlugin (= 0.87.0)
|
||||
- FlipperKit/FlipperKitReactPlugin (= 0.87.0)
|
||||
- FlipperKit/FlipperKitUserDefaultsPlugin (= 0.87.0)
|
||||
- FlipperKit/SKIOSNetworkPlugin (= 0.87.0)
|
||||
- Folly (from `../node_modules/react-native/third-party-podspecs/Folly.podspec`)
|
||||
- Flipper-RSocket (~> 1.3)
|
||||
- FlipperKit (~> 0.75.1)
|
||||
- FlipperKit/Core (~> 0.75.1)
|
||||
- FlipperKit/CppBridge (~> 0.75.1)
|
||||
- FlipperKit/FBCxxFollyDynamicConvert (~> 0.75.1)
|
||||
- FlipperKit/FBDefines (~> 0.75.1)
|
||||
- FlipperKit/FKPortForwarding (~> 0.75.1)
|
||||
- FlipperKit/FlipperKitHighlightOverlay (~> 0.75.1)
|
||||
- FlipperKit/FlipperKitLayoutPlugin (~> 0.75.1)
|
||||
- FlipperKit/FlipperKitLayoutTextSearchable (~> 0.75.1)
|
||||
- FlipperKit/FlipperKitNetworkPlugin (~> 0.75.1)
|
||||
- FlipperKit/FlipperKitReactPlugin (~> 0.75.1)
|
||||
- FlipperKit/FlipperKitUserDefaultsPlugin (~> 0.75.1)
|
||||
- FlipperKit/SKIOSNetworkPlugin (~> 0.75.1)
|
||||
- glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`)
|
||||
- lottie-ios (from `../node_modules/lottie-ios`)
|
||||
- lottie-react-native (from `../node_modules/lottie-react-native`)
|
||||
- PasscodeAuth (from `../node_modules/react-native-passcode-auth`)
|
||||
- RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`)
|
||||
- RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`)
|
||||
- RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`)
|
||||
- React (from `../node_modules/react-native/`)
|
||||
@ -492,6 +504,7 @@ DEPENDENCIES:
|
||||
- react-native-tor (from `../node_modules/react-native-tor`)
|
||||
- react-native-webview (from `../node_modules/react-native-webview`)
|
||||
- react-native-widget-center (from `../node_modules/react-native-widget-center`)
|
||||
- React-perflogger (from `../node_modules/react-native/ReactCommon/reactperflogger`)
|
||||
- React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`)
|
||||
- React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`)
|
||||
- React-RCTBlob (from `../node_modules/react-native/Libraries/Blob`)
|
||||
@ -501,6 +514,7 @@ DEPENDENCIES:
|
||||
- React-RCTSettings (from `../node_modules/react-native/Libraries/Settings`)
|
||||
- React-RCTText (from `../node_modules/react-native/Libraries/Text`)
|
||||
- React-RCTVibration (from `../node_modules/react-native/Libraries/Vibration`)
|
||||
- React-runtimeexecutor (from `../node_modules/react-native/ReactCommon/runtimeexecutor`)
|
||||
- ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`)
|
||||
- RealmJS (from `../node_modules/realm`)
|
||||
- "RemobileReactNativeQrcodeLocalImage (from `../node_modules/@remobile/react-native-qrcode-local-image`)"
|
||||
@ -556,9 +570,7 @@ EXTERNAL SOURCES:
|
||||
FBLazyVector:
|
||||
:path: "../node_modules/react-native/Libraries/FBLazyVector"
|
||||
FBReactNativeSpec:
|
||||
:path: "../node_modules/react-native/Libraries/FBReactNativeSpec"
|
||||
Folly:
|
||||
:podspec: "../node_modules/react-native/third-party-podspecs/Folly.podspec"
|
||||
:path: "../node_modules/react-native/React/FBReactNativeSpec"
|
||||
glog:
|
||||
:podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec"
|
||||
lottie-ios:
|
||||
@ -567,6 +579,8 @@ EXTERNAL SOURCES:
|
||||
:path: "../node_modules/lottie-react-native"
|
||||
PasscodeAuth:
|
||||
:path: "../node_modules/react-native-passcode-auth"
|
||||
RCT-Folly:
|
||||
:podspec: "../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec"
|
||||
RCTRequired:
|
||||
:path: "../node_modules/react-native/Libraries/RCTRequired"
|
||||
RCTTypeSafety:
|
||||
@ -613,6 +627,8 @@ EXTERNAL SOURCES:
|
||||
:path: "../node_modules/react-native-webview"
|
||||
react-native-widget-center:
|
||||
:path: "../node_modules/react-native-widget-center"
|
||||
React-perflogger:
|
||||
:path: "../node_modules/react-native/ReactCommon/reactperflogger"
|
||||
React-RCTActionSheet:
|
||||
:path: "../node_modules/react-native/Libraries/ActionSheetIOS"
|
||||
React-RCTAnimation:
|
||||
@ -631,6 +647,8 @@ EXTERNAL SOURCES:
|
||||
:path: "../node_modules/react-native/Libraries/Text"
|
||||
React-RCTVibration:
|
||||
:path: "../node_modules/react-native/Libraries/Vibration"
|
||||
React-runtimeexecutor:
|
||||
:path: "../node_modules/react-native/ReactCommon/runtimeexecutor"
|
||||
ReactCommon:
|
||||
:path: "../node_modules/react-native/ReactCommon"
|
||||
RealmJS:
|
||||
@ -700,17 +718,16 @@ SPEC CHECKSUMS:
|
||||
boost-for-react-native: 39c7adb57c4e60d6c5479dd8623128eb5b3f0f2c
|
||||
BVLinearGradient: e3aad03778a456d77928f594a649e96995f1c872
|
||||
CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99
|
||||
DoubleConversion: cde416483dac037923206447da6e1454df403714
|
||||
FBLazyVector: 3bb422f41b18121b71783a905c10e58606f7dc3e
|
||||
FBReactNativeSpec: f2c97f2529dd79c083355182cc158c9f98f4bd6e
|
||||
Flipper: 1bd2db48dcc31e4b167b9a33ec1df01c2ded4893
|
||||
DoubleConversion: cf9b38bf0b2d048436d9a82ad2abe1404f11e7de
|
||||
FBLazyVector: e686045572151edef46010a6f819ade377dfeb4b
|
||||
FBReactNativeSpec: da2b9104721789106ad3943049ccf61ef6f4db39
|
||||
Flipper: d3da1aa199aad94455ae725e9f3aa43f3ec17021
|
||||
Flipper-DoubleConversion: 38631e41ef4f9b12861c67d17cb5518d06badc41
|
||||
Flipper-Folly: 755929a4f851b2fb2c347d533a23f191b008554c
|
||||
Flipper-Glog: 1dfd6abf1e922806c52ceb8701a3599a79a200a6
|
||||
Flipper-PeerTalk: 116d8f857dc6ef55c7a5a75ea3ceaafe878aadc9
|
||||
Flipper-RSocket: 127954abe8b162fcaf68d2134d34dc2bd7076154
|
||||
FlipperKit: 651f50a42eb95c01b3e89a60996dd6aded529eeb
|
||||
Folly: b73c3869541e86821df3c387eb0af5f65addfab4
|
||||
FlipperKit: 8a20b5c5fcf9436cac58551dc049867247f64b00
|
||||
GCDWebServer: 2c156a56c8226e2d5c0c3f208a3621ccffbe3ce4
|
||||
glog: 40a13f7840415b9a77023fbcae0f1e6f43192af3
|
||||
libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913
|
||||
@ -718,16 +735,17 @@ SPEC CHECKSUMS:
|
||||
lottie-react-native: 4dff8fe8d10ddef9e7880e770080f4a56121397e
|
||||
OpenSSL-Universal: 1aa4f6a6ee7256b83db99ec1ccdaa80d10f9af9b
|
||||
PasscodeAuth: 1cc99b13d8e4de4716d7e2b4069af2f1a9de30b2
|
||||
RCTRequired: 082f10cd3f905d6c124597fd1c14f6f2655ff65e
|
||||
RCTTypeSafety: 8c9c544ecbf20337d069e4ae7fd9a377aadf504b
|
||||
React: b0a957a2c44da4113b0c4c9853d8387f8e64e615
|
||||
React-callinvoker: c3f44dd3cb195b6aa46621fff95ded79d59043fe
|
||||
React-Core: d3b2a1ac9a2c13c3bcde712d9281fc1c8a5b315b
|
||||
React-CoreModules: 0581ff36cb797da0943d424f69e7098e43e9be60
|
||||
React-cxxreact: c1480d4fda5720086c90df537ee7d285d4c57ac3
|
||||
React-jsi: a0418934cf48f25b485631deb27c64dc40fb4c31
|
||||
React-jsiexecutor: 93bd528844ad21dc07aab1c67cb10abae6df6949
|
||||
React-jsinspector: 58aef7155bc9a9683f5b60b35eccea8722a4f53a
|
||||
RCT-Folly: ec7a233ccc97cc556cf7237f0db1ff65b986f27c
|
||||
RCTRequired: 6d3e854f0e7260a648badd0d44fc364bc9da9728
|
||||
RCTTypeSafety: c1f31d19349c6b53085766359caac425926fafaa
|
||||
React: bda6b6d7ae912de97d7a61aa5c160db24aa2ad69
|
||||
React-callinvoker: 9840ea7e8e88ed73d438edb725574820b29b5baa
|
||||
React-Core: b5e385da7ce5f16a220fc60fd0749eae2c6120f0
|
||||
React-CoreModules: 17071a4e2c5239b01585f4aa8070141168ab298f
|
||||
React-cxxreact: 9be7b6340ed9f7c53e53deca7779f07cd66525ba
|
||||
React-jsi: 67747b9722f6dab2ffe15b011bcf6b3f2c3f1427
|
||||
React-jsiexecutor: 80c46bd381fd06e418e0d4f53672dc1d1945c4c3
|
||||
React-jsinspector: cc614ec18a9ca96fd275100c16d74d62ee11f0ae
|
||||
react-native-blue-crypto: 23f1558ad3d38d7a2edb7e2f6ed1bc520ed93e56
|
||||
react-native-blur: cad4d93b364f91e7b7931b3fa935455487e5c33c
|
||||
react-native-camera: 6e6d25f6318980dd2837747760628b4442aac01a
|
||||
@ -741,16 +759,18 @@ SPEC CHECKSUMS:
|
||||
react-native-tor: 4f389f5719dad633542b57ea32744e954730e7ef
|
||||
react-native-webview: 4288b81c682bca4dcc9037afb3ee118af2655c03
|
||||
react-native-widget-center: 0f81d17beb163e7fb5848b06754d7d277fe7d99a
|
||||
React-RCTActionSheet: 89a0ca9f4a06c1f93c26067af074ccdce0f40336
|
||||
React-RCTAnimation: 1bde3ecc0c104c55df246eda516e0deb03c4e49b
|
||||
React-RCTBlob: a97d378b527740cc667e03ebfa183a75231ab0f0
|
||||
React-RCTImage: c1b1f2d3f43a4a528c8946d6092384b5c880d2f0
|
||||
React-RCTLinking: 35ae4ab9dc0410d1fcbdce4d7623194a27214fb2
|
||||
React-RCTNetwork: 29ec2696f8d8cfff7331fac83d3e893c95ef43ae
|
||||
React-RCTSettings: 60f0691bba2074ef394f95d4c2265ec284e0a46a
|
||||
React-RCTText: 5c51df3f08cb9dedc6e790161195d12bac06101c
|
||||
React-RCTVibration: ae4f914cfe8de7d4de95ae1ea6cc8f6315d73d9d
|
||||
ReactCommon: 73d79c7039f473b76db6ff7c6b159c478acbbb3b
|
||||
React-perflogger: 25373e382fed75ce768a443822f07098a15ab737
|
||||
React-RCTActionSheet: af7796ba49ffe4ca92e7277a5d992d37203f7da5
|
||||
React-RCTAnimation: 6a2e76ab50c6f25b428d81b76a5a45351c4d77aa
|
||||
React-RCTBlob: 02a2887023e0eed99391b6445b2e23a2a6f9226d
|
||||
React-RCTImage: ce5bf8e7438f2286d9b646a05d6ab11f38b0323d
|
||||
React-RCTLinking: ccd20742de14e020cb5f99d5c7e0bf0383aefbd9
|
||||
React-RCTNetwork: dfb9d089ab0753e5e5f55fc4b1210858f7245647
|
||||
React-RCTSettings: b14aef2d83699e48b410fb7c3ba5b66cd3291ae2
|
||||
React-RCTText: 41a2e952dd9adc5caf6fb68ed46b275194d5da5f
|
||||
React-RCTVibration: 24600e3b1aaa77126989bc58b6747509a1ba14f3
|
||||
React-runtimeexecutor: a9904c6d0218fb9f8b19d6dd88607225927668f9
|
||||
ReactCommon: 149906e01aa51142707a10665185db879898e966
|
||||
RealmJS: 90f2a558fdda19ebb9fcbc0a52c7b1d1b049fb88
|
||||
RemobileReactNativeQrcodeLocalImage: 57aadc12896b148fb5e04bc7c6805f3565f5c3fa
|
||||
RNCAsyncStorage: 8324611026e8dc3706f829953aa6e3899f581589
|
||||
@ -768,10 +788,10 @@ SPEC CHECKSUMS:
|
||||
RNQuickAction: 6d404a869dc872cde841ad3147416a670d13fa93
|
||||
RNRate: e0af7e724e5fcf89578dbd22ab6395c85402ef29
|
||||
RNReactNativeHapticFeedback: 653a8c126a0f5e88ce15ffe280b3ff37e1fbb285
|
||||
RNReanimated: d9da990fc90123f4ffbfdda93d00fc15174863a8
|
||||
RNScreens: f7ad633b2e0190b77b6a7aab7f914fad6f198d8d
|
||||
RNReanimated: 9c13c86454bfd54dab7505c1a054470bfecd2563
|
||||
RNScreens: 21b73c94c9117e1110a79ee0ee80c93ccefed8ce
|
||||
RNSecureKeyStore: f1ad870e53806453039f650720d2845c678d89c8
|
||||
RNSentry: bfa1e2776c7413570e790cbbf79d2060dd0a565b
|
||||
RNSentry: a2b02b326ae4fce91ce7c57d3f7dcf8df4f72269
|
||||
RNShare: 5ac8f6532ca4cd80fc71caef1cfbba1854a6a045
|
||||
RNSVG: 551acb6562324b1d52a4e0758f7ca0ec234e278f
|
||||
RNVectorIcons: bc69e6a278b14842063605de32bec61f0b251a59
|
||||
@ -779,9 +799,9 @@ SPEC CHECKSUMS:
|
||||
Sentry: 89d26e036063b9cb9caa59b6951dd2f8277aa13b
|
||||
SwiftSocket: c8d482e867ae4d3eb4c769e9382e123c1f1f833b
|
||||
ToolTipMenu: 4d89d95ddffd7539230bdbe02ee51bbde362e37e
|
||||
Yoga: 4bd86afe9883422a7c4028c00e34790f560923d6
|
||||
Yoga: 575c581c63e0d35c9a83f4b46d01d63abc1100ac
|
||||
YogaKit: f782866e155069a2cca2517aafea43200b01fd5a
|
||||
|
||||
PODFILE CHECKSUM: 73464a154246ad233697748ecc693fe37cb2eacb
|
||||
PODFILE CHECKSUM: d6f6c7992cb83adb1c2ca00fa4d3e3a3402f4787
|
||||
|
||||
COCOAPODS: 1.10.1
|
||||
|
@ -579,7 +579,6 @@
|
||||
"sign_placeholder_signature": "التوقيع",
|
||||
"sign_aopp_title": "AOPP",
|
||||
"sign_aopp_confirm": "هل تريد إرسال رسالة موقعة إلى {hostname}؟",
|
||||
"address_balance": "الرصيد: {Balance} ساتوشي",
|
||||
"addresses_title": "العنوان",
|
||||
"type_change": "تغيير",
|
||||
"type_receive": "استلام"
|
||||
|
@ -579,7 +579,6 @@
|
||||
"sign_placeholder_signature": "Podpis",
|
||||
"sign_aopp_title": "AOPP",
|
||||
"sign_aopp_confirm": "Chcete poslat podepsanou zprávu uživateli {hostname}?",
|
||||
"address_balance": "Zůstatek: {balance} sats",
|
||||
"addresses_title": "Adresy",
|
||||
"type_change": "Změnit",
|
||||
"type_receive": "Příjmout"
|
||||
|
@ -283,7 +283,6 @@
|
||||
"sign_placeholder_address": "Cyfeiriad",
|
||||
"sign_placeholder_message": "Neges",
|
||||
"sign_placeholder_signature": "Llofnod",
|
||||
"address_balance": "Balans: {balance} sats",
|
||||
"addresses_title": "Cyfeiriadau",
|
||||
"type_change": "Newid",
|
||||
"type_receive": "Derbyn"
|
||||
|
@ -579,7 +579,6 @@
|
||||
"sign_placeholder_signature": "Signatur",
|
||||
"sign_aopp_title": "AOPP",
|
||||
"sign_aopp_confirm": "Senden der signierten Nachricht nach {hostname}?",
|
||||
"address_balance": "Guthaben: {balance} sats",
|
||||
"addresses_title": "Adressen",
|
||||
"type_change": "Wechsel",
|
||||
"type_receive": "Empfang"
|
||||
|
@ -579,10 +579,11 @@
|
||||
"sign_placeholder_signature": "Signature",
|
||||
"sign_aopp_title": "AOPP",
|
||||
"sign_aopp_confirm": "Do you want to send signed message to {hostname}?",
|
||||
"address_balance": "Balance: {balance} sats",
|
||||
"addresses_title": "Addresses",
|
||||
"type_change": "Change",
|
||||
"type_receive": "Receive"
|
||||
"type_receive": "Receive",
|
||||
"type_used": "Used",
|
||||
"transactions": "Transactions"
|
||||
},
|
||||
"aopp": {
|
||||
"title": "Select Address",
|
||||
|
@ -579,7 +579,6 @@
|
||||
"sign_placeholder_signature": "Firma",
|
||||
"sign_aopp_title": "AOPP",
|
||||
"sign_aopp_confirm": "¿Quieres enviar un mensaje firmado a {hostname}?",
|
||||
"address_balance": "Saldo: {balance} sats",
|
||||
"addresses_title": "Direcciones",
|
||||
"type_change": "Cambio",
|
||||
"type_receive": "Recibir"
|
||||
|
@ -579,7 +579,6 @@
|
||||
"sign_placeholder_signature": "امضا",
|
||||
"sign_aopp_title": "پروتکل اثبات مالکیت آدرس (AOPP)",
|
||||
"sign_aopp_confirm": "آیا مایل به ارسال پیام امضاشده به {hostname} هستید؟",
|
||||
"address_balance": "موجودی: {balance} ساتوشی",
|
||||
"addresses_title": "آدرسها",
|
||||
"type_change": "باقیمانده",
|
||||
"type_receive": "دریافت"
|
||||
|
@ -579,7 +579,6 @@
|
||||
"sign_placeholder_signature": "Signature",
|
||||
"sign_aopp_title": "AOPP",
|
||||
"sign_aopp_confirm": "Voulez-vous envoyer un message signé à {hostname} ?",
|
||||
"address_balance": "Solde : {balance} sats",
|
||||
"addresses_title": "Adresses",
|
||||
"type_change": "Monnaie",
|
||||
"type_receive": "Réception"
|
||||
|
@ -579,7 +579,6 @@
|
||||
"sign_placeholder_signature": "Podpis",
|
||||
"sign_aopp_title": "AOPP",
|
||||
"sign_aopp_confirm": "Czy chcesz wysłać podpisaną wiadomość do [hostname]?",
|
||||
"address_balance": "Saldo: {balance} sats",
|
||||
"addresses_title": "Adresy",
|
||||
"type_change": "Reszta",
|
||||
"type_receive": "Otrzymaj"
|
||||
|
@ -578,7 +578,6 @@
|
||||
"sign_placeholder_signature": "Assinatura",
|
||||
"sign_aopp_title": "AOPP",
|
||||
"sign_aopp_confirm": "Você deseja enviar a mensagem assinada para {hostname}?",
|
||||
"address_balance": "Saldo: {balance} sats",
|
||||
"addresses_title": "Endereços",
|
||||
"type_change": "Troco",
|
||||
"type_receive": "Receber"
|
||||
|
@ -578,7 +578,6 @@
|
||||
"sign_placeholder_signature": "Podpis",
|
||||
"sign_aopp_title": "AOPP",
|
||||
"sign_aopp_confirm": "Ali želite podpisano sporočilo poslati na {hostname}?",
|
||||
"address_balance": "Stanje: {balance} sats",
|
||||
"addresses_title": "Naslovi",
|
||||
"type_change": "Vračilo",
|
||||
"type_receive": "Prejemni"
|
||||
|
@ -4,24 +4,26 @@
|
||||
*
|
||||
* @format
|
||||
*/
|
||||
const path = require('path');
|
||||
const blacklist = require('metro-config/src/defaults/blacklist');
|
||||
|
||||
// const path = require('path');
|
||||
// const blacklist = require('metro-config/src/defaults/blacklist');
|
||||
|
||||
module.exports = {
|
||||
resolver: {
|
||||
blacklistRE: blacklist([
|
||||
// This stops "react-native run-windows" from causing the metro server to crash if its already running
|
||||
new RegExp(`${path.resolve(__dirname, 'windows').replace(/[/\\]/g, '/')}.*`),
|
||||
// This prevents "react-native run-windows" from hitting: EBUSY: resource busy or locked, open msbuild.ProjectImports.zip
|
||||
/.*\.ProjectImports\.zip/,
|
||||
]),
|
||||
},
|
||||
transformer: {
|
||||
getTransformOptions: async () => ({
|
||||
transform: {
|
||||
experimentalImportSupport: false,
|
||||
inlineRequires: false,
|
||||
},
|
||||
}),
|
||||
// blacklistRE: blacklist([
|
||||
// // This stops "react-native run-windows" from causing the metro server to crash if its already running
|
||||
// new RegExp(`${path.resolve(__dirname, 'windows').replace(/[/\\]/g, '/')}.*`),
|
||||
// // This prevents "react-native run-windows" from hitting: EBUSY: resource busy or locked, open msbuild.ProjectImports.zip
|
||||
// /.*\.ProjectImports\.zip/,
|
||||
// ]),
|
||||
// },
|
||||
transformer: {
|
||||
getTransformOptions: async () => ({
|
||||
transform: {
|
||||
experimentalImportSupport: false,
|
||||
inlineRequires: false,
|
||||
},
|
||||
}),
|
||||
},
|
||||
},
|
||||
};
|
||||
|
1967
package-lock.json
generated
1967
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
27
package.json
27
package.json
@ -7,13 +7,13 @@
|
||||
"url": "https://github.com/BlueWallet/BlueWallet.git"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.10.4",
|
||||
"@babel/core": "^7.12.9",
|
||||
"@babel/runtime": "^7.14.6",
|
||||
"@jest/reporters": "^26.4.1",
|
||||
"@react-native-community/eslint-config": "^2.0.0",
|
||||
"babel-cli": "^6.26.0",
|
||||
"babel-eslint": "^10.1.0",
|
||||
"babel-jest": "^26.1.0",
|
||||
"babel-jest": "^26.6.3",
|
||||
"eslint": "^7.25.0",
|
||||
"eslint-config-prettier": "^8.3.0",
|
||||
"eslint-config-standard": "^16.0.2",
|
||||
@ -28,7 +28,7 @@
|
||||
"eslint-plugin-standard": "^4.1.0",
|
||||
"jest": "^26.1.0",
|
||||
"prettier": "^2.2.1",
|
||||
"react-test-renderer": "16.13.1"
|
||||
"react-test-renderer": "17.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10.16.0",
|
||||
@ -48,7 +48,7 @@
|
||||
"jest": "jest -b -w 1 tests/integration/*",
|
||||
"maccatalystpatches": "./scripts/maccatalystpatches/applypatchesformaccatalyst.sh",
|
||||
"e2e:debug-build": "detox build -c android.emu.debug",
|
||||
"e2e:debug-test": "detox test -c android.emu.debug",
|
||||
"e2e:debug-test": "detox test -c android.emu.debug -l fatal",
|
||||
"e2e:debug": "(test -f android/app/build/outputs/apk/debug/app-debug.apk && test -f android/app/build/outputs/apk/androidTest/debug/app-debug-androidTest.apk) || npm run e2e:debug-build; npm run e2e:debug-test",
|
||||
"e2e:release-build": "detox build -c android.emu.release",
|
||||
"e2e:release-test": "detox test -c android.emu.release --record-videos all --take-screenshots all --headless --loglevel trace",
|
||||
@ -62,6 +62,9 @@
|
||||
"transform": {
|
||||
"^.+\\.js$": "<rootDir>/node_modules/react-native/jest/preprocessor.js"
|
||||
},
|
||||
"transformIgnorePatterns": [
|
||||
"node_modules/(?!((jest-)?react-native(-.*)?|@react-native(-community)?)/)"
|
||||
],
|
||||
"setupFiles": [
|
||||
"./tests/setup.js"
|
||||
],
|
||||
@ -83,7 +86,7 @@
|
||||
"@react-navigation/native": "5.9.4",
|
||||
"@react-navigation/stack": "5.14.5",
|
||||
"@remobile/react-native-qrcode-local-image": "https://github.com/BlueWallet/react-native-qrcode-local-image",
|
||||
"@sentry/react-native": "2.5.2",
|
||||
"@sentry/react-native": "2.6.0",
|
||||
"aez": "1.0.1",
|
||||
"amplitude-js": "7.4.4",
|
||||
"assert": "2.0.0",
|
||||
@ -103,7 +106,7 @@
|
||||
"coinselect": "3.1.12",
|
||||
"crypto-js": "4.0.0",
|
||||
"dayjs": "1.10.5",
|
||||
"detox": "18.17.0",
|
||||
"detox": "18.18.1",
|
||||
"ecurve": "1.0.6",
|
||||
"electrum-client": "https://github.com/BlueWallet/rn-electrum-client#99ebcc649d91a8dc39bea7964b02dd9ead464aa4",
|
||||
"electrum-mnemonic": "2.0.0",
|
||||
@ -118,9 +121,9 @@
|
||||
"pbkdf2": "3.1.1",
|
||||
"process": "0.11.10",
|
||||
"prop-types": "15.7.2",
|
||||
"react": "16.13.1",
|
||||
"react": "17.0.1",
|
||||
"react-native": "0.64.2",
|
||||
"react-localization": "1.0.17",
|
||||
"react-native": "0.63.4",
|
||||
"react-native-blue-crypto": "https://github.com/BlueWallet/react-native-blue-crypto",
|
||||
"react-native-camera": "3.44.1",
|
||||
"react-native-crypto": "2.2.0",
|
||||
@ -132,7 +135,7 @@
|
||||
"react-native-fs": "2.18.0",
|
||||
"react-native-gesture-handler": "1.10.3",
|
||||
"react-native-handoff": "https://github.com/marcosrdz/react-native-handoff#f5becc63f3e36bf2da1ed1fc60fc690323e73602",
|
||||
"react-native-haptic-feedback": "1.11.0",
|
||||
"react-native-haptic-feedback": "https://github.com/junina-de/react-native-haptic-feedback.git#8e4d598ad9be886325316b0e2140df8df624a91f",
|
||||
"react-native-idle-timer": "https://github.com/BlueWallet/react-native-idle-timer#8587876d68ab5920e79619726aeca9e672beaf2b",
|
||||
"react-native-image-picker": "3.8.1",
|
||||
"react-native-keychain": "7.0.0",
|
||||
@ -140,8 +143,8 @@
|
||||
"react-native-linear-gradient": "2.5.6",
|
||||
"react-native-localize": "2.1.1",
|
||||
"react-native-modal": "11.10.0",
|
||||
"react-native-navigation-bar-color": "https://github.com/BlueWallet/react-native-navigation-bar-color#34e44b8f44e442133de9d35c35f2679d40982804",
|
||||
"react-native-obscure": "1.2.1",
|
||||
"react-native-navigation-bar-color": "https://github.com/BlueWallet/react-native-navigation-bar-color#3b2894ae62fbce99a3bd24105f0921cebaef5c94",
|
||||
"react-native-obscure": "https://github.com/BlueWallet/react-native-obscure.git#f4b83b4a261e39b1f5ed4a45ac5bcabc8a59eadb",
|
||||
"react-native-passcode-auth": "https://github.com/BlueWallet/react-native-passcode-auth#a2ff977ba92b36f8d0a5567f59c05cc608e8bd12",
|
||||
"react-native-popup-menu-android": "1.0.3",
|
||||
"react-native-privacy-snapshot": "https://github.com/BlueWallet/react-native-privacy-snapshot#529e4627d93f67752a27e82a040ff7b64dca0783",
|
||||
@ -153,7 +156,7 @@
|
||||
"react-native-rate": "1.2.6",
|
||||
"react-native-reanimated": "2.2.0",
|
||||
"react-native-safe-area-context": "3.2.0",
|
||||
"react-native-screens": "2.18.1",
|
||||
"react-native-screens": "3.4.0",
|
||||
"react-native-secure-key-store": "https://github.com/BlueWallet/react-native-secure-key-store#63ab38c9d382a819844a086a69cc204c46aa93f9",
|
||||
"react-native-share": "6.2.1",
|
||||
"react-native-sortable-list": "https://github.com/BlueWallet/react-native-sortable-list.git#46e39a30ae0c4328e7c06c30b72b1af0b69e1aeb",
|
||||
|
@ -1,11 +1,12 @@
|
||||
import React, { useCallback, useState, useContext, useRef, useEffect } from 'react';
|
||||
import { ActivityIndicator, FlatList, StyleSheet, View, StatusBar } from 'react-native';
|
||||
import { useFocusEffect, useNavigation, useRoute, useTheme } from '@react-navigation/native';
|
||||
import { useFocusEffect, useRoute, useTheme } from '@react-navigation/native';
|
||||
import Privacy from '../../blue_modules/Privacy';
|
||||
import { BlueStorageContext } from '../../blue_modules/storage-context';
|
||||
import loc from '../../loc';
|
||||
import navigationStyle from '../../components/navigationStyle';
|
||||
import { AddressItem } from '../../components/addresses/AddressItem';
|
||||
import { AddressTypeTabs, TABS } from '../../components/addresses/AddressTypeTabs';
|
||||
import { WatchOnlyWallet } from '../../class';
|
||||
|
||||
export const totalBalance = ({ c, u } = { c: 0, u: 0 }) => c + u;
|
||||
@ -13,13 +14,16 @@ export const totalBalance = ({ c, u } = { c: 0, u: 0 }) => c + u;
|
||||
export const getAddress = (wallet, index, isInternal) => {
|
||||
let address;
|
||||
let balance = 0;
|
||||
let transactions = 0;
|
||||
|
||||
if (isInternal) {
|
||||
address = wallet._getInternalAddressByIndex(index);
|
||||
balance = totalBalance(wallet._balances_by_internal_index[index]);
|
||||
transactions = wallet._txs_by_internal_index[index].length;
|
||||
} else {
|
||||
address = wallet._getExternalAddressByIndex(index);
|
||||
balance = totalBalance(wallet._balances_by_external_index[index]);
|
||||
transactions = wallet._txs_by_external_index[index].length;
|
||||
}
|
||||
|
||||
return {
|
||||
@ -28,16 +32,22 @@ export const getAddress = (wallet, index, isInternal) => {
|
||||
address,
|
||||
isInternal,
|
||||
balance,
|
||||
transactions: 0,
|
||||
transactions,
|
||||
};
|
||||
};
|
||||
|
||||
export const sortByIndexAndType = (a, b) => {
|
||||
if (a.isInternal > b.isInternal) return 1;
|
||||
if (a.isInternal < b.isInternal) return -1;
|
||||
export const sortByAddressIndex = (a, b) => {
|
||||
if (a.index > b.index) {
|
||||
return 1;
|
||||
}
|
||||
return -1;
|
||||
};
|
||||
|
||||
if (a.index > b.index) return 1;
|
||||
if (a.index < b.index) return -1;
|
||||
export const filterByAddressType = (type, isInternal, currentType) => {
|
||||
if (currentType === type) {
|
||||
return isInternal === true;
|
||||
}
|
||||
return isInternal === false;
|
||||
};
|
||||
|
||||
const WalletAddresses = () => {
|
||||
@ -45,6 +55,8 @@ const WalletAddresses = () => {
|
||||
|
||||
const [addresses, setAddresses] = useState([]);
|
||||
|
||||
const [currentTab, setCurrentTab] = useState(TABS.EXTERNAL);
|
||||
|
||||
const { wallets } = useContext(BlueStorageContext);
|
||||
|
||||
const { walletID } = useRoute().params;
|
||||
@ -55,18 +67,25 @@ const WalletAddresses = () => {
|
||||
|
||||
const balanceUnit = wallet.getPreferredBalanceUnit();
|
||||
|
||||
const walletInstance = wallet.type === WatchOnlyWallet.type ? wallet._hdWalletInstance : wallet;
|
||||
const isWatchOnly = wallet.type === WatchOnlyWallet.type;
|
||||
|
||||
const walletInstance = isWatchOnly ? wallet._hdWalletInstance : wallet;
|
||||
|
||||
const allowSignVerifyMessage = 'allowSignVerifyMessage' in wallet && wallet.allowSignVerifyMessage();
|
||||
|
||||
const { colors } = useTheme();
|
||||
|
||||
const { navigate } = useNavigation();
|
||||
|
||||
const stylesHook = StyleSheet.create({
|
||||
root: {
|
||||
backgroundColor: colors.elevated,
|
||||
},
|
||||
});
|
||||
|
||||
// computed property
|
||||
const filteredAddresses = addresses
|
||||
.filter(address => filterByAddressType(TABS.INTERNAL, address.isInternal, currentTab))
|
||||
.sort(sortByAddressIndex);
|
||||
|
||||
useEffect(() => {
|
||||
if (showAddresses) {
|
||||
addressList.current.scrollToIndex({ animated: false, index: 0 });
|
||||
@ -76,7 +95,7 @@ const WalletAddresses = () => {
|
||||
const getAddresses = () => {
|
||||
const addressList = [];
|
||||
|
||||
for (let index = 0; index < walletInstance.next_free_change_address_index + walletInstance.gap_limit; index++) {
|
||||
for (let index = 0; index <= walletInstance.next_free_change_address_index; index++) {
|
||||
const address = getAddress(walletInstance, index, true);
|
||||
|
||||
addressList.push(address);
|
||||
@ -88,7 +107,7 @@ const WalletAddresses = () => {
|
||||
addressList.push(address);
|
||||
}
|
||||
|
||||
setAddresses(addressList.sort(sortByIndexAndType));
|
||||
setAddresses(addressList);
|
||||
setShowAddresses(true);
|
||||
};
|
||||
|
||||
@ -102,18 +121,8 @@ const WalletAddresses = () => {
|
||||
}, []),
|
||||
);
|
||||
|
||||
const navigateToReceive = item => {
|
||||
navigate('ReceiveDetailsRoot', {
|
||||
screen: 'ReceiveDetails',
|
||||
params: {
|
||||
walletID,
|
||||
address: item.item.address,
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
const renderRow = item => {
|
||||
return <AddressItem {...item} balanceUnit={balanceUnit} onPress={() => navigateToReceive(item)} />;
|
||||
return <AddressItem {...item} balanceUnit={balanceUnit} walletID={walletID} allowSignVerifyMessage={allowSignVerifyMessage} />;
|
||||
};
|
||||
|
||||
return (
|
||||
@ -122,13 +131,14 @@ const WalletAddresses = () => {
|
||||
<FlatList
|
||||
contentContainerStyle={stylesHook.root}
|
||||
ref={addressList}
|
||||
data={addresses}
|
||||
extraData={addresses}
|
||||
initialNumToRender={40}
|
||||
data={filteredAddresses}
|
||||
extraData={filteredAddresses}
|
||||
initialNumToRender={20}
|
||||
renderItem={renderRow}
|
||||
ListEmptyComponent={<ActivityIndicator />}
|
||||
centerContent={!showAddresses}
|
||||
contentInsetAdjustmentBehavior="automatic"
|
||||
ListHeaderComponent={<AddressTypeTabs currentTab={currentTab} setCurrentTab={setCurrentTab} />}
|
||||
/>
|
||||
</View>
|
||||
);
|
||||
|
@ -26,7 +26,7 @@ import WalletImport from '../../class/wallet-import';
|
||||
import ActionSheet from '../ActionSheet';
|
||||
import loc from '../../loc';
|
||||
import { FContainer, FButton } from '../../components/FloatButtons';
|
||||
import { useFocusEffect, useNavigation, useRoute, useTheme } from '@react-navigation/native';
|
||||
import { useFocusEffect, useIsFocused, useNavigation, useRoute, useTheme } from '@react-navigation/native';
|
||||
import { BlueStorageContext } from '../../blue_modules/storage-context';
|
||||
import { isDesktop, isMacCatalina, isTablet } from '../../blue_modules/environment';
|
||||
import BlueClipboard from '../../blue_modules/clipboard';
|
||||
@ -46,6 +46,7 @@ const WalletsList = () => {
|
||||
const { width } = useWindowDimensions();
|
||||
const { colors, scanImage } = useTheme();
|
||||
const { navigate, setOptions } = useNavigation();
|
||||
const isFocused = useIsFocused();
|
||||
const routeName = useRoute().name;
|
||||
const [isLoading, setIsLoading] = useState(false);
|
||||
const [isLargeScreen, setIsLargeScreen] = useState(
|
||||
@ -202,6 +203,8 @@ const WalletsList = () => {
|
||||
};
|
||||
|
||||
const onSnapToItem = e => {
|
||||
if (!isFocused) return;
|
||||
|
||||
const contentOffset = e.nativeEvent.contentOffset;
|
||||
const index = Math.ceil(contentOffset.x / width);
|
||||
console.log('onSnapToItem', index);
|
||||
@ -277,6 +280,7 @@ const WalletsList = () => {
|
||||
ref={walletsCarousel}
|
||||
testID="WalletsList"
|
||||
horizontal
|
||||
scrollEnabled={isFocused}
|
||||
/>
|
||||
);
|
||||
};
|
||||
|
@ -4,7 +4,7 @@ import { BluePrivateBalance } from '../../BlueComponents';
|
||||
import SortableList from 'react-native-sortable-list';
|
||||
import LinearGradient from 'react-native-linear-gradient';
|
||||
import ReactNativeHapticFeedback from 'react-native-haptic-feedback';
|
||||
import { useTheme } from '@react-navigation/native';
|
||||
import { useNavigation, useTheme } from '@react-navigation/native';
|
||||
|
||||
import navigationStyle from '../../components/navigationStyle';
|
||||
import { PlaceholderWallet, LightningCustodianWallet, MultisigHDWallet } from '../../class';
|
||||
@ -77,6 +77,7 @@ const ReorderWallets = () => {
|
||||
const sortableList = useRef();
|
||||
const { colors } = useTheme();
|
||||
const { wallets, setWalletsWithNewOrder } = useContext(BlueStorageContext);
|
||||
const navigation = useNavigation();
|
||||
const stylesHook = {
|
||||
root: {
|
||||
backgroundColor: colors.elevated,
|
||||
@ -87,15 +88,19 @@ const ReorderWallets = () => {
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
if (sortableList.current?.state.data.length === data.length && hasMovedARow) {
|
||||
const newWalletsOrderArray = [];
|
||||
sortableList.current.state.order.forEach(element => {
|
||||
newWalletsOrderArray.push(data[element]);
|
||||
});
|
||||
setWalletsWithNewOrder(newWalletsOrderArray);
|
||||
}
|
||||
const unsubscribe = navigation.addListener('blur', () => {
|
||||
if (sortableList.current?.state.data.length === data.length && hasMovedARow) {
|
||||
const newWalletsOrderArray = [];
|
||||
sortableList.current.state.order.forEach(element => {
|
||||
newWalletsOrderArray.push(data[element]);
|
||||
});
|
||||
setWalletsWithNewOrder(newWalletsOrderArray);
|
||||
}
|
||||
});
|
||||
|
||||
return unsubscribe;
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
}, [hasMovedARow]);
|
||||
}, [navigation, hasMovedARow]);
|
||||
|
||||
useEffect(() => {
|
||||
const loadWallets = wallets.filter(wallet => wallet.type !== PlaceholderWallet.type);
|
||||
|
@ -185,7 +185,7 @@ describe('BlueWallet UI Tests', () => {
|
||||
await yo('BitcoinAddressQRCodeContainer');
|
||||
await yo('BlueCopyTextToClipboard');
|
||||
await element(by.id('SetCustomAmountButton')).tap();
|
||||
await element(by.id('BitcoinAmountInput')).typeText('1');
|
||||
await element(by.id('BitcoinAmountInput')).replaceText('1');
|
||||
await element(by.id('CustomAmountDescription')).typeText('test');
|
||||
await element(by.id('CustomAmountSaveButton')).tap();
|
||||
await sup('1 BTC');
|
||||
@ -835,11 +835,11 @@ describe('BlueWallet UI Tests', () => {
|
||||
await expect(element(by.id('BitcoinAddressQRCodeContainer'))).toBeVisible();
|
||||
await expect(element(by.text('bc1qtc9zquvq7lgq87kzsgltvv4etwm9uxphfkvkay'))).toBeVisible();
|
||||
await element(by.id('SetCustomAmountButton')).tap();
|
||||
await element(by.id('BitcoinAmountInput')).typeText('1');
|
||||
await element(by.id('BitcoinAmountInput')).replaceText('1');
|
||||
await element(by.id('CustomAmountDescription')).typeText('Test');
|
||||
await element(by.id('CustomAmountSaveButton')).tap();
|
||||
await expect(element(by.text('1 BTC'))).toBeVisible();
|
||||
await expect(element(by.text('Test'))).toBeVisible();
|
||||
await sup('1 BTC');
|
||||
await sup('Test');
|
||||
await expect(element(by.id('BitcoinAddressQRCodeContainer'))).toBeVisible();
|
||||
|
||||
await expect(element(by.text('bitcoin:bc1qtc9zquvq7lgq87kzsgltvv4etwm9uxphfkvkay?amount=1&label=Test'))).toBeVisible();
|
||||
|
@ -1,21 +1,49 @@
|
||||
import assert from 'assert';
|
||||
import { getAddress, sortByIndexAndType, totalBalance } from '../../screen/wallets/addresses';
|
||||
import { getAddress, sortByAddressIndex, totalBalance, filterByAddressType } from '../../screen/wallets/addresses';
|
||||
import { TABS } from '../../components/addresses/AddressTypeTabs';
|
||||
|
||||
const mockAddressesList = [
|
||||
{ index: 2, isInternal: false, key: 'third_external_address' },
|
||||
{ index: 0, isInternal: true, key: 'first_internal_address' },
|
||||
{ index: 1, isInternal: false, key: 'second_external_address' },
|
||||
{ index: 1, isInternal: true, key: 'second_internal_address' },
|
||||
{ index: 0, isInternal: false, key: 'first_external_address' },
|
||||
];
|
||||
|
||||
describe('Addresses', () => {
|
||||
it('Sort by index ASC and externals first', () => {
|
||||
const originalList = [
|
||||
{ index: 0, isInternal: true, key: 'first_internal_address' },
|
||||
{ index: 1, isInternal: false, key: 'second_external_address' },
|
||||
{ index: 1, isInternal: true, key: 'second_internal_address' },
|
||||
{ index: 0, isInternal: false, key: 'first_external_address' },
|
||||
];
|
||||
it('Sort by index', () => {
|
||||
const sortedList = mockAddressesList.sort(sortByAddressIndex);
|
||||
|
||||
const sortedList = originalList.sort(sortByIndexAndType);
|
||||
assert.strictEqual(sortedList[0].index, 0);
|
||||
assert.strictEqual(sortedList[2].index, 1);
|
||||
assert.strictEqual(sortedList[4].index, 2);
|
||||
});
|
||||
|
||||
assert.strictEqual(sortedList[0].key, 'first_external_address');
|
||||
assert.strictEqual(sortedList[1].key, 'second_external_address');
|
||||
assert.strictEqual(sortedList[2].key, 'first_internal_address');
|
||||
assert.strictEqual(sortedList[3].key, 'second_internal_address');
|
||||
it('Have tabs defined', () => {
|
||||
const tabsEnum = {
|
||||
EXTERNAL: 'receive',
|
||||
INTERNAL: 'change',
|
||||
};
|
||||
|
||||
assert.deepStrictEqual(TABS, tabsEnum);
|
||||
});
|
||||
|
||||
it('Filter by type', () => {
|
||||
let currentTab = TABS.EXTERNAL;
|
||||
|
||||
const externalAddresses = mockAddressesList.filter(address => filterByAddressType(TABS.INTERNAL, address.isInternal, currentTab));
|
||||
|
||||
currentTab = TABS.INTERNAL;
|
||||
|
||||
const internalAddresses = mockAddressesList.filter(address => filterByAddressType(TABS.INTERNAL, address.isInternal, currentTab));
|
||||
|
||||
externalAddresses.forEach(address => {
|
||||
assert.strictEqual(address.isInternal, false);
|
||||
});
|
||||
|
||||
internalAddresses.forEach(address => {
|
||||
assert.strictEqual(address.isInternal, true);
|
||||
});
|
||||
});
|
||||
|
||||
it('Sum confirmed/unconfirmed balance', () => {
|
||||
@ -34,6 +62,8 @@ describe('Addresses', () => {
|
||||
_getInternalAddressByIndex: index => `internal_address_${index}`,
|
||||
_balances_by_external_index: [{ c: 0, u: 0 }],
|
||||
_balances_by_internal_index: [{ c: 0, u: 0 }],
|
||||
_txs_by_external_index: { 0: [{}] },
|
||||
_txs_by_internal_index: { 0: [{}, {}] },
|
||||
};
|
||||
|
||||
const firstExternalAddress = getAddress(fakeWallet, 0, false);
|
||||
@ -45,7 +75,7 @@ describe('Addresses', () => {
|
||||
index: 0,
|
||||
isInternal: false,
|
||||
key: 'external_address_0',
|
||||
transactions: 0,
|
||||
transactions: 1,
|
||||
});
|
||||
|
||||
assert.deepStrictEqual(firstInternalAddress, {
|
||||
@ -54,7 +84,7 @@ describe('Addresses', () => {
|
||||
index: 0,
|
||||
isInternal: true,
|
||||
key: 'internal_address_0',
|
||||
transactions: 0,
|
||||
transactions: 2,
|
||||
});
|
||||
});
|
||||
});
|
||||
|
Loading…
Reference in New Issue
Block a user