├── .babelrc
├── .eslintignore
├── .eslintrc.json
├── .flowconfig
├── .gitattributes
├── .gitignore
├── .prettierrc
├── .vscode
└── settings.json
├── LICENSE
├── README.md
├── android
├── .gitignore
├── app
│ ├── .gitignore
│ ├── CMakeLists.txt
│ ├── build.gradle
│ ├── dic.txt
│ ├── proguard-rules.pro
│ └── src
│ │ ├── inhouse
│ │ └── res
│ │ │ └── values
│ │ │ └── appname.xml
│ │ └── main
│ │ ├── AndroidManifest.xml
│ │ ├── assets
│ │ ├── en-mnemonic-word-list.txt
│ │ └── fonts
│ │ │ ├── DIN Alternate_bold.ttf
│ │ │ ├── Helvetica Neu_medium.ttf
│ │ │ ├── Helvetica Neue.ttf
│ │ │ ├── Helvetica Neue_bold.ttf
│ │ │ └── iconfont.ttf
│ │ ├── cpp
│ │ └── log.cpp
│ │ ├── ic_launcher-web.png
│ │ ├── java
│ │ ├── android
│ │ │ └── support
│ │ │ │ └── v4
│ │ │ │ └── content
│ │ │ │ └── PublicFileProvider.java
│ │ └── com
│ │ │ ├── blankj
│ │ │ └── utilcode
│ │ │ │ ├── constant
│ │ │ │ ├── CacheConstants.java
│ │ │ │ ├── MemoryConstants.java
│ │ │ │ ├── PermissionConstants.java
│ │ │ │ ├── RegexConstants.java
│ │ │ │ └── TimeConstants.java
│ │ │ │ └── util
│ │ │ │ ├── ActivityUtils.java
│ │ │ │ ├── AppUtils.java
│ │ │ │ ├── BarUtils.java
│ │ │ │ ├── CacheDiskUtils.java
│ │ │ │ ├── CacheDoubleUtils.java
│ │ │ │ ├── CacheMemoryUtils.java
│ │ │ │ ├── CacheUtils.java
│ │ │ │ ├── CleanUtils.java
│ │ │ │ ├── CloseUtils.java
│ │ │ │ ├── ConvertUtils.java
│ │ │ │ ├── CrashUtils.java
│ │ │ │ ├── DeviceUtils.java
│ │ │ │ ├── EncodeUtils.java
│ │ │ │ ├── EncryptUtils.java
│ │ │ │ ├── FileIOUtils.java
│ │ │ │ ├── FileUtils.java
│ │ │ │ ├── FragmentUtils.java
│ │ │ │ ├── ImageUtils.java
│ │ │ │ ├── IntentUtils.java
│ │ │ │ ├── KeyboardUtils.java
│ │ │ │ ├── LogUtils.java
│ │ │ │ ├── NetworkUtils.java
│ │ │ │ ├── ObjectUtils.java
│ │ │ │ ├── PermissionUtils.java
│ │ │ │ ├── PhoneUtils.java
│ │ │ │ ├── ProcessUtils.java
│ │ │ │ ├── ReflectUtils.java
│ │ │ │ ├── RegexUtils.java
│ │ │ │ ├── ResourceUtils.java
│ │ │ │ ├── SDCardUtils.java
│ │ │ │ ├── SPUtils.java
│ │ │ │ ├── ScreenUtils.java
│ │ │ │ ├── ServiceUtils.java
│ │ │ │ ├── ShellUtils.java
│ │ │ │ ├── SizeUtils.java
│ │ │ │ ├── SnackbarUtils.java
│ │ │ │ ├── SpanUtils.java
│ │ │ │ ├── StringUtils.java
│ │ │ │ ├── ThreadUtils.java
│ │ │ │ ├── TimeUtils.java
│ │ │ │ ├── ToastUtils.java
│ │ │ │ ├── UriUtils.java
│ │ │ │ ├── Utils.java
│ │ │ │ └── ZipUtils.java
│ │ │ └── renrenbit
│ │ │ └── rrwallet
│ │ │ ├── MainActivity.java
│ │ │ ├── MainApplication.java
│ │ │ ├── MeizuPushReceiver.java
│ │ │ ├── model
│ │ │ └── BtcUnSpendItem.java
│ │ │ ├── network
│ │ │ ├── Callback.java
│ │ │ ├── ICommonApi.kt
│ │ │ ├── LimitCountCache.kt
│ │ │ ├── NetworkClient.kt
│ │ │ ├── NetworkManager.kt
│ │ │ ├── RetrofitClient.kt
│ │ │ ├── RetrofitResponseAdapter.java
│ │ │ ├── RetrofitUtils.kt
│ │ │ ├── SSLSocketFactoryUtils.java
│ │ │ └── cookie
│ │ │ │ ├── CookieHandler.java
│ │ │ │ ├── CookieManager.java
│ │ │ │ ├── GuardedAsyncTask.java
│ │ │ │ └── GuardedResultAsyncTask.java
│ │ │ ├── react
│ │ │ ├── ReactNativeActivity.java
│ │ │ ├── ReactNativeApplicationAdapter.java
│ │ │ └── module
│ │ │ │ ├── NotificationModule.java
│ │ │ │ ├── RRRNAnalysisModule.java
│ │ │ │ ├── RRRNBitcoinModule.java
│ │ │ │ ├── RRRNDeviceModule.java
│ │ │ │ ├── RRRNEthereumModule.kt
│ │ │ │ ├── RRRNNetworkModule.java
│ │ │ │ ├── RRRNQRDecoderModule.java
│ │ │ │ ├── RRRNSplash.java
│ │ │ │ ├── WalletNativePackage.java
│ │ │ │ └── webview
│ │ │ │ ├── MessageEvent.java
│ │ │ │ ├── NavigationStateChangeEvent.java
│ │ │ │ ├── RNWebView.java
│ │ │ │ ├── RNWebViewManager.java
│ │ │ │ ├── RNWebViewModule.java
│ │ │ │ ├── RNWebViewPackage.java
│ │ │ │ └── ShouldOverrideUrlLoadingEvent.java
│ │ │ ├── service
│ │ │ ├── push
│ │ │ │ ├── ActivityHookService.java
│ │ │ │ ├── MessageHandler.java
│ │ │ │ ├── PushEvent.java
│ │ │ │ ├── PushManager.java
│ │ │ │ └── PushReceiveActivity.java
│ │ │ ├── statistics
│ │ │ │ └── UmengAnalyticsAgent.java
│ │ │ └── wallet
│ │ │ │ ├── AndroidMnemonicUtils.java
│ │ │ │ ├── CoinType.java
│ │ │ │ ├── IWalletCreator.java
│ │ │ │ ├── SecureRandomUtils.java
│ │ │ │ ├── SignChecker.java
│ │ │ │ ├── Transaction.java
│ │ │ │ ├── Wallet.java
│ │ │ │ ├── WalletCreatorFactory.java
│ │ │ │ ├── WalletException.java
│ │ │ │ ├── btc
│ │ │ │ ├── BtcWalletCreator.kt
│ │ │ │ ├── BtcWalletHelper.java
│ │ │ │ ├── BtcWalletService.java
│ │ │ │ ├── HexUtils.java
│ │ │ │ └── net
│ │ │ │ │ ├── BtcEnv.java
│ │ │ │ │ ├── FormalEnv.java
│ │ │ │ │ └── TestEnv.java
│ │ │ │ ├── db
│ │ │ │ ├── WalletDbHelper.java
│ │ │ │ ├── WalletDbMigration.java
│ │ │ │ └── entry
│ │ │ │ │ └── Account.java
│ │ │ │ └── ether
│ │ │ │ ├── EthWalletCreator.kt
│ │ │ │ ├── EthWalletHelper.kt
│ │ │ │ ├── EtherService.kt
│ │ │ │ └── RawTransactionIT.java
│ │ │ └── utils
│ │ │ ├── Constants.java
│ │ │ ├── DeviceUuidFactory.java
│ │ │ ├── DialogHelper.java
│ │ │ ├── Md5.java
│ │ │ ├── PermissionHelper.java
│ │ │ ├── QRDecoder.java
│ │ │ ├── RNUtils.java
│ │ │ ├── RootUtils.java
│ │ │ ├── SharedPreferenceUtils.java
│ │ │ ├── StringOutputStream.java
│ │ │ ├── ThreadScheduleUtils.java
│ │ │ ├── WalletEncryptUtils.java
│ │ │ └── WeakHandler.java
│ │ ├── jni
│ │ └── wsc.c
│ │ └── res
│ │ ├── drawable-hdpi
│ │ └── umeng_push_notification_default_small_icon.png
│ │ ├── drawable-mdpi
│ │ └── umeng_push_notification_default_small_icon.png
│ │ ├── drawable-xhdpi
│ │ ├── splash_logo.png
│ │ └── umeng_push_notification_default_small_icon.png
│ │ ├── drawable-xxhdpi
│ │ ├── splash_logo.png
│ │ └── umeng_push_notification_default_small_icon.png
│ │ ├── drawable
│ │ └── umeng_push_notification_default_large_icon.png
│ │ ├── layout
│ │ ├── activity_project_mode.xml
│ │ ├── activity_push.xml
│ │ ├── launch_screen.xml
│ │ └── splash_page.xml
│ │ ├── mipmap-hdpi
│ │ └── ic_launcher.png
│ │ ├── mipmap-mdpi
│ │ └── ic_launcher.png
│ │ ├── mipmap-xhdpi
│ │ └── ic_launcher.png
│ │ ├── mipmap-xxhdpi
│ │ └── ic_launcher.png
│ │ ├── mipmap-xxxhdpi
│ │ └── ic_launcher.png
│ │ ├── raw
│ │ └── bitrenren_ssl.cer
│ │ ├── values
│ │ ├── colors.xml
│ │ ├── strings.xml
│ │ └── styles.xml
│ │ └── xml
│ │ ├── network_security_config.xml
│ │ └── util_code_provider_paths.xml
├── build.gradle
├── config.gradle
├── gradle.properties
├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── keystores
│ └── debug.keystore.properties
└── settings.gradle
├── app.json
├── fix_podspec_bug.sh
├── index.js
├── ios
├── Gemfile
├── Gemfile.lock
├── Podfile
├── Podfile.lock
├── local-podspec
│ ├── TouchID.podspec
│ └── react-native-navigation.podspec.json
├── rrwallet.xcodeproj
│ ├── project.pbxproj
│ └── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
├── rrwallet.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
└── rrwallet
│ ├── AppDelegate.h
│ ├── AppDelegate.m
│ ├── Asset.xcassets
│ ├── Contents.json
│ └── splash_logo.imageset
│ │ ├── Contents.json
│ │ ├── splash_logo@2x.png
│ │ └── splash_logo@3x.png
│ ├── Category
│ ├── DFHexCategory.h
│ ├── DFHexCategory.m
│ ├── DFMacro.h
│ ├── NSDictionary+MFCategory.h
│ ├── NSDictionary+MFCategory.m
│ ├── RCCTabBarController+Swizzle.h
│ ├── RCCTabBarController+Swizzle.m
│ ├── RCCViewController+Swizzle.h
│ ├── RCCViewController+Swizzle.m
│ ├── RCTStatusBarManager+Swizzle.h
│ └── RCTStatusBarManager+Swizzle.m
│ ├── Images.xcassets
│ ├── AppIcon.appiconset
│ │ ├── 1024X1024.png
│ │ ├── 120X120-1.png
│ │ ├── 120X120.png
│ │ ├── 180x180.png
│ │ ├── 40X40.png
│ │ ├── 58X58.png
│ │ ├── 60X60.png
│ │ ├── 80X80.png
│ │ ├── 87X87.png
│ │ └── Contents.json
│ ├── Contents.json
│ ├── cloud-receive.imageset
│ │ ├── Contents.json
│ │ ├── cloud-receive.@2x.png
│ │ └── cloud-receive.@3x.png
│ ├── cloud-transfer.imageset
│ │ ├── Contents.json
│ │ ├── cloud-transfer@2x.png
│ │ └── cloud-transfer@3x.png
│ ├── hd-receive.imageset
│ │ ├── Contents.json
│ │ ├── hd-receive@2x.png
│ │ └── hd-receive@3x.png
│ └── hd-transfer.imageset
│ │ ├── Contents.json
│ │ ├── hd-transfer@2x.png
│ │ └── hd-transfer@3x.png
│ ├── LaunchScreen.xib
│ ├── RNBridgeModule
│ ├── RRRNAnalysis.h
│ ├── RRRNAnalysis.m
│ ├── RRRNBitcoin.h
│ ├── RRRNBitcoin.m
│ ├── RRRNDevice.h
│ ├── RRRNDevice.m
│ ├── RRRNEthereum.h
│ ├── RRRNEthereum.m
│ ├── RRRNNetwork.h
│ ├── RRRNNetwork.m
│ ├── RRRNQRDecoder.h
│ ├── RRRNQRDecoder.m
│ ├── RRRNQuickAction.h
│ ├── RRRNQuickAction.m
│ ├── RRRNSplash.h
│ └── RRRNSplash.m
│ ├── Resources
│ └── bitrenren_ssl.cer
│ ├── Service
│ ├── BlockChain
│ │ ├── Bitcoin
│ │ │ ├── DFBTCWallet.h
│ │ │ ├── DFBTCWallet.m
│ │ │ ├── RRBTCutxo.h
│ │ │ └── RRBTCutxo.m
│ │ ├── DFBaseWallet.h
│ │ ├── DFBaseWallet.m
│ │ ├── DFWalletDefine.h
│ │ └── Ethereum
│ │ │ ├── DFContractTransaction.h
│ │ │ ├── DFContractTransaction.m
│ │ │ ├── DFEthereumRPCProvider.h
│ │ │ └── DFEthereumRPCProvider.m
│ ├── Network
│ │ ├── DFHTTPRequestSerializer.h
│ │ ├── DFHTTPRequestSerializer.m
│ │ ├── DFJSONResponseSerializer.h
│ │ ├── DFJSONResponseSerializer.m
│ │ ├── DFNetworkDefine.h
│ │ ├── DFNetworkManager.h
│ │ ├── DFNetworkManager.m
│ │ ├── DFSecurityPolicy.h
│ │ ├── DFSecurityPolicy.m
│ │ ├── DFUserAgent.h
│ │ └── DFUserAgent.m
│ ├── Splash
│ │ ├── RRSplashViewController.h
│ │ └── RRSplashViewController.m
│ └── Wallet
│ │ ├── DFETHWallet.h
│ │ ├── DFETHWallet.m
│ │ ├── DFWallet.h
│ │ ├── DFWallet.m
│ │ └── ethers
│ │ ├── ethers.xcodeproj
│ │ ├── project.pbxproj
│ │ └── project.xcworkspace
│ │ │ └── contents.xcworkspacedata
│ │ └── ethers
│ │ ├── Info.plist
│ │ ├── ThirdParty
│ │ ├── BreadWallet
│ │ │ └── ccMemory.h
│ │ ├── libtommath-1.0
│ │ │ ├── mpi.c
│ │ │ ├── tommath.h
│ │ │ ├── tommath_class.h
│ │ │ ├── tommath_private.h
│ │ │ └── tommath_superclass.h
│ │ ├── scrypt-1.1.6
│ │ │ ├── crypto_scrypt-nosse.c
│ │ │ ├── crypto_scrypt-ref.c
│ │ │ ├── crypto_scrypt-sse.c
│ │ │ ├── crypto_scrypt.h
│ │ │ ├── scrypt_sha256.c
│ │ │ ├── scrypt_sha256.h
│ │ │ └── sysendian.h
│ │ └── trezor-crypto
│ │ │ ├── aes.h
│ │ │ ├── aes_modes.c
│ │ │ ├── aescrypt.c
│ │ │ ├── aeskey.c
│ │ │ ├── aesopt.h
│ │ │ ├── aestab.c
│ │ │ ├── aestab.h
│ │ │ ├── base58.c
│ │ │ ├── base58.h
│ │ │ ├── bignum.c
│ │ │ ├── bignum.h
│ │ │ ├── bip32.c
│ │ │ ├── bip32.h
│ │ │ ├── bip39.c
│ │ │ ├── bip39.h
│ │ │ ├── bip39_english.h
│ │ │ ├── curves.c
│ │ │ ├── curves.h
│ │ │ ├── ecdsa.c
│ │ │ ├── ecdsa.h
│ │ │ ├── hmac.c
│ │ │ ├── hmac.h
│ │ │ ├── macros.h
│ │ │ ├── options.h
│ │ │ ├── pbkdf2.c
│ │ │ ├── pbkdf2.h
│ │ │ ├── rand.c
│ │ │ ├── rand.h
│ │ │ ├── ripemd160.c
│ │ │ ├── ripemd160.h
│ │ │ ├── secp256k1.c
│ │ │ ├── secp256k1.h
│ │ │ ├── secp256k1.table
│ │ │ ├── sha2.c
│ │ │ ├── sha2.h
│ │ │ ├── sha3.c
│ │ │ └── sha3.h
│ │ ├── ethers.h
│ │ └── src
│ │ ├── Account.h
│ │ ├── Account.m
│ │ ├── Address.h
│ │ ├── Address.m
│ │ ├── BlockInfo.h
│ │ ├── BlockInfo.m
│ │ ├── Hash.h
│ │ ├── Hash.m
│ │ ├── Payment.h
│ │ ├── Payment.m
│ │ ├── Providers
│ │ ├── ApiProviders
│ │ │ ├── ApiProvider.h
│ │ │ ├── ApiProvider.m
│ │ │ ├── EtherchainProvider.h
│ │ │ ├── EtherchainProvider.m
│ │ │ ├── EtherscanProvider.h
│ │ │ ├── EtherscanProvider.m
│ │ │ ├── InfuraProvider.h
│ │ │ ├── InfuraProvider.m
│ │ │ ├── JsonRpcProvider.h
│ │ │ └── JsonRpcProvider.m
│ │ ├── FallbackProvider.h
│ │ ├── FallbackProvider.m
│ │ ├── LightClientProvider.h
│ │ ├── LightClientProvider.m
│ │ ├── Provider.h
│ │ ├── Provider.m
│ │ ├── RoundRobinProvider.h
│ │ └── RoundRobinProvider.m
│ │ ├── Signature.h
│ │ ├── Signature.m
│ │ ├── Transaction.h
│ │ ├── Transaction.m
│ │ ├── TransactionInfo.h
│ │ ├── TransactionInfo.m
│ │ └── Utilities
│ │ ├── BigNumber.h
│ │ ├── BigNumber.m
│ │ ├── Promise.h
│ │ ├── Promise.m
│ │ ├── RLPSerialization.h
│ │ ├── RLPSerialization.m
│ │ ├── RegEx.h
│ │ ├── RegEx.m
│ │ ├── SecureData.h
│ │ ├── SecureData.m
│ │ ├── Utilities.h
│ │ └── Utilities.m
│ ├── Target
│ ├── rrwallet-inhouse
│ │ ├── ExportOptions.plist
│ │ ├── Info.plist
│ │ └── rrwallet-inhouse.entitlements
│ └── rrwallet
│ │ ├── ExportOptions.plist
│ │ ├── Info.plist
│ │ └── rrwallet.entitlements
│ └── main.m
├── jsconfig.json
├── metro.config.js
├── package-lock.json
├── package.json
├── resources
├── iconfont
│ ├── iconfont.js
│ ├── iconfont.json
│ └── iconfont.ttf
└── img
│ ├── empty
│ ├── empty_recorder@2x.png
│ ├── empty_recorder@3x.png
│ ├── network_error@2x.png
│ └── network_error@3x.png
│ ├── home
│ ├── logo@2x.png
│ ├── logo@3x.png
│ ├── touch-guid@2x.png
│ └── touch-guid@3x.png
│ ├── icon
│ ├── alert-error@2x.png
│ ├── alert-error@3x.png
│ ├── alert-success@2x.png
│ ├── alert-success@3x.png
│ ├── alert-warning@2x.png
│ ├── alert-warning@3x.png
│ ├── arrow-down-triangle@2x.png
│ ├── arrow-down-triangle@3x.png
│ ├── arrow-down@3x.png
│ ├── arrow-right@2x.png
│ ├── arrow-right@3x.png
│ ├── arrow-up-solid-round@2x.png
│ ├── arrow-up-solid-round@3x.png
│ ├── arrow-up@2x.png
│ ├── arrow-up@3x.png
│ ├── arrow_down@2x.png
│ ├── arrow_down@3x.png
│ ├── arrow_up@2x.png
│ ├── arrow_up@3x.png
│ ├── asset_invisual_white@2x.png
│ ├── asset_invisual_white@3x.png
│ ├── asset_visual_white@2x.png
│ ├── asset_visual_white@3x.png
│ ├── check_selected@2x.png
│ ├── check_selected@3x.png
│ ├── checked@2x.png
│ ├── checked@3x.png
│ ├── close@2x.png
│ ├── close@3x.png
│ ├── copy@2x.png
│ ├── copy@3x.png
│ ├── dotted-line-thin@2x.png
│ ├── dotted-line-thin@3x.png
│ ├── icon_nav_add@2x.png
│ ├── icon_nav_add@3x.png
│ ├── loading-circle@2x.png
│ ├── loading-circle@3x.png
│ ├── loading-icon@2x.png
│ ├── loading-icon@3x.png
│ ├── progress_hud_toast_failed@2x.png
│ ├── progress_hud_toast_failed@3x.png
│ ├── progress_hud_toast_success@2x.png
│ ├── progress_hud_toast_success@3x.png
│ ├── pwd_lv0@2x.png
│ ├── pwd_lv0@3x.png
│ ├── pwd_lv2@2x.png
│ ├── pwd_lv2@3x.png
│ ├── pwd_lv3@2x.png
│ ├── pwd_lv3@3x.png
│ ├── pwd_lv4@2x.png
│ ├── pwd_lv4@3x.png
│ ├── question-icon@2x.png
│ ├── question-icon@3x.png
│ ├── right_arrow@2x.png
│ ├── right_arrow@3x.png
│ ├── rrwallet-logo@2x.png
│ ├── rrwallet-logo@3x.png
│ ├── search@2x.png
│ ├── search@3x.png
│ ├── unchecked@2x.png
│ ├── unchecked@3x.png
│ ├── waiting@2x.png
│ └── waiting@3x.png
│ ├── mine
│ ├── app_update@2x.png
│ ├── app_update@3x.png
│ ├── contact@2x.png
│ ├── contact@3x.png
│ ├── empty_contact@2x.png
│ ├── empty_contact@3x.png
│ ├── empty_data@2x.png
│ ├── empty_data@3x.png
│ ├── empty_message@2x.png
│ ├── empty_message@3x.png
│ ├── faceid@2x.png
│ ├── faceid@3x.png
│ ├── icon-help@2x.png
│ ├── icon-help@3x.png
│ ├── icon_pic_close@2x.png
│ ├── icon_pic_close@3x.png
│ ├── mine_about@2x.png
│ ├── mine_about@3x.png
│ ├── mine_contact@2x.png
│ ├── mine_contact@3x.png
│ ├── mine_create_wallet@2x.png
│ ├── mine_create_wallet@3x.png
│ ├── mine_currency@2x.png
│ ├── mine_currency@3x.png
│ ├── mine_currency_selected@2x.png
│ ├── mine_currency_selected@3x.png
│ ├── mine_display_mnemonic@2x.png
│ ├── mine_display_mnemonic@3x.png
│ ├── mine_faceid@2x.png
│ ├── mine_faceid@3x.png
│ ├── mine_import@2x.png
│ ├── mine_import@3x.png
│ ├── mine_language@2x.png
│ ├── mine_language@3x.png
│ ├── mine_lock@2x.png
│ ├── mine_lock@3x.png
│ ├── mine_login@2x.png
│ ├── mine_login@3x.png
│ ├── mine_message@2x.png
│ ├── mine_message@3x.png
│ ├── msg
│ │ ├── msg_multisig@2x.png
│ │ ├── msg_multisig@3x.png
│ │ ├── msg_type_wallet@2x.png
│ │ ├── msg_type_wallet@3x.png
│ │ ├── notification_shadow@2x.png
│ │ └── notification_shadow@3x.png
│ ├── touchid@2x.png
│ └── touchid@3x.png
│ ├── nav
│ ├── msg-black-empty@2x.png
│ ├── msg-black-empty@3x.png
│ ├── msg-black-full@2x.png
│ ├── msg-black-full@3x.png
│ ├── msg-white-empty@2x.png
│ ├── msg-white-empty@3x.png
│ ├── msg-white-full@2x.png
│ ├── msg-white-full@3x.png
│ ├── nav-back@2x.png
│ ├── nav-back@3x.png
│ ├── nav_close@2x.png
│ ├── nav_close@3x.png
│ ├── nav_menu@2x.png
│ ├── nav_menu@3x.png
│ ├── nav_menu_bill@2x.png
│ ├── nav_menu_bill@3x.png
│ ├── nav_menu_search@2x.png
│ ├── nav_menu_search@3x.png
│ ├── nav_menu_set@2x.png
│ ├── nav_menu_set@3x.png
│ ├── nav_scan@2x.png
│ └── nav_scan@3x.png
│ ├── qunfabao
│ ├── alert-error@2x.png
│ ├── alert-error@3x.png
│ ├── alert-success@2x.png
│ ├── alert-success@3x.png
│ ├── alert-warning@2x.png
│ ├── alert-warning@3x.png
│ ├── icon_arrow@2x.png
│ ├── icon_arrow@3x.png
│ ├── icon_clip@2x.png
│ ├── icon_clip@3x.png
│ ├── icon_cp@2x.png
│ ├── icon_cp@3x.png
│ ├── icon_green@2x.png
│ ├── icon_green@3x.png
│ ├── icon_list@2x.png
│ ├── icon_list@3x.png
│ ├── icon_no@2x.png
│ ├── icon_no@3x.png
│ ├── icon_radio@2x.png
│ ├── icon_radio@3x.png
│ ├── icon_radio_s@2x.png
│ ├── icon_radio_s@3x.png
│ ├── icon_scan@2x.png
│ ├── icon_scan@3x.png
│ ├── icon_suc@2x.png
│ ├── icon_suc@3x.png
│ ├── icon_x@2x.png
│ ├── icon_x@3x.png
│ ├── pc_preview@2x.png
│ ├── pc_preview@3x.png
│ ├── roll-out@2x.png
│ └── roll-out@3x.png
│ ├── tab
│ ├── home-normal@2x.png
│ ├── home-normal@3x.png
│ ├── home-selected@2x.png
│ ├── home-selected@3x.png
│ ├── loan-normal@2x.png
│ ├── loan-normal@3x.png
│ ├── loan-selected@2x.png
│ ├── loan-selected@3x.png
│ ├── mine-normal@2x.png
│ ├── mine-normal@3x.png
│ ├── mine-selected@2x.png
│ ├── mine-selected@3x.png
│ ├── multisig-normal@2x.png
│ ├── multisig-normal@3x.png
│ ├── multisig-selected@2x.png
│ ├── multisig-selected@3x.png
│ ├── trade-normal@2x.png
│ ├── trade-normal@3x.png
│ ├── trade-selected@2x.png
│ ├── trade-selected@3x.png
│ ├── wallet-normal@2x.png
│ ├── wallet-normal@3x.png
│ ├── wallet-selected@2x.png
│ ├── wallet-selected@3x.png
│ ├── x-plan-normal@2x.png
│ ├── x-plan-normal@3x.png
│ ├── x-plan-selected@2x.png
│ └── x-plan-selected@3x.png
│ └── wallet
│ ├── arrow_down@2x.png
│ ├── arrow_down@3x.png
│ ├── asset_invisual@2x.png
│ ├── asset_invisual@3x.png
│ ├── asset_visual@2x.png
│ ├── asset_visual@3x.png
│ ├── backup_dialog@2x.png
│ ├── backup_dialog@3x.png
│ ├── close_icon@2x.png
│ ├── close_icon@3x.png
│ ├── erc20@2x.png
│ ├── erc20@3x.png
│ ├── guide_segwit@2x.png
│ ├── guide_segwit@3x.png
│ ├── hd_default_img@2x.png
│ ├── hd_default_img@3x.png
│ ├── icon_wallet_add@2x.png
│ ├── icon_wallet_add@3x.png
│ ├── mn_pic__allow@2x.png
│ ├── mn_pic__allow@3x.png
│ ├── mn_pic__copy@2x.png
│ ├── mn_pic__copy@3x.png
│ ├── mn_pic__forbidden@2x.png
│ ├── mn_pic__forbidden@3x.png
│ ├── mn_pic__photo@2x.png
│ ├── mn_pic__photo@3x.png
│ ├── mn_pic__record@2x.png
│ ├── mn_pic__record@3x.png
│ ├── mn_pic__wifi@2x.png
│ ├── mn_pic__wifi@3x.png
│ ├── multisig-info-founder@2x.png
│ ├── multisig-info-founder@3x.png
│ ├── multisig_default_img@2x.png
│ ├── multisig_default_img@3x.png
│ ├── multisig_sign_icon@2x.png
│ ├── multisig_sign_icon@3x.png
│ ├── multisig_tx_author@2x.png
│ ├── multisig_tx_author@3x.png
│ ├── multisig_tx_fail@2x.png
│ ├── multisig_tx_fail@3x.png
│ ├── multisig_wallet_icon@2x.png
│ ├── multisig_wallet_icon@3x.png
│ ├── normal_address@2x.png
│ ├── normal_address@3x.png
│ ├── quick_group@2x.png
│ ├── quick_group@3x.png
│ ├── quick_put@2x.png
│ ├── quick_put@3x.png
│ ├── quick_qr@2x.png
│ ├── quick_qr@3x.png
│ ├── quick_send@2x.png
│ ├── quick_send@3x.png
│ ├── round_check@2x.png
│ ├── round_check@3x.png
│ ├── round_check_fill@2x.png
│ ├── round_check_fill@3x.png
│ ├── segwit_address@2x.png
│ ├── segwit_address@3x.png
│ ├── shadow-card@2x.png
│ ├── shadow-card@3x.png
│ ├── tip_round@2x.png
│ ├── tip_round@3x.png
│ ├── tx_in@2x.png
│ ├── tx_in@3x.png
│ ├── tx_out@2x.png
│ ├── tx_out@3x.png
│ ├── tx_progress_reach@2x.png
│ ├── tx_progress_reach@3x.png
│ ├── tx_progress_unreach@2x.png
│ ├── tx_progress_unreach@3x.png
│ ├── tx_status_failed@2x.png
│ ├── tx_status_failed@3x.png
│ ├── tx_status_progress@2x.png
│ ├── tx_status_progress@3x.png
│ ├── tx_status_success@2x.png
│ ├── tx_status_success@3x.png
│ ├── wallet_add_asset@2x.png
│ ├── wallet_add_asset@3x.png
│ ├── wallet_backup@2x.png
│ ├── wallet_backup@3x.png
│ ├── wallet_batch@2x.png
│ ├── wallet_batch@3x.png
│ ├── wallet_copy@2x.png
│ ├── wallet_copy@3x.png
│ ├── wallet_receive@2x.png
│ ├── wallet_receive@3x.png
│ ├── wallet_scan@2x.png
│ ├── wallet_scan@3x.png
│ ├── wallet_screenshot_warning@2x.png
│ ├── wallet_screenshot_warning@3x.png
│ ├── wallet_send@2x.png
│ └── wallet_send@3x.png
├── script
├── jenkins_build_android.sh
└── jenkins_build_ios.sh
└── src
├── component
├── common
│ ├── ActionSheetCell.js
│ ├── BizModal.js
│ ├── Button.js
│ ├── Cell.js
│ ├── Dialog.js
│ ├── EmptyView.js
│ ├── FlatListLoadMoreView.js
│ ├── Footer.js
│ ├── ForumItem.js
│ ├── GrowingTextInput.js
│ ├── Header.js
│ ├── MessageBox.js
│ ├── PasswordInput.js
│ ├── ProgressHUD.js
│ └── Tip.js
├── image
│ └── RRImage.js
├── tab
│ ├── TabBar.js
│ ├── TabBarItem.js
│ └── TabContainer.js
└── webview
│ ├── HybridWebView.js
│ └── webview.js
├── config
└── const.js
├── module
├── app
│ ├── AppInfo.js
│ ├── AppUpdateModal.js
│ ├── AppWarningModal.js
│ ├── DetectionRisk.android.js
│ └── DetectionRisk.ios.js
├── common
│ └── network.js
├── contact
│ └── index.js
├── crypto
│ └── crypto.js
├── i18n
│ ├── const.js
│ ├── excel
│ │ └── renrenbit.xlsx
│ ├── i18n.js
│ ├── script
│ │ ├── excel2json.js
│ │ ├── json2excel.js
│ │ └── replace.js
│ └── translations
│ │ ├── common
│ │ ├── en.json
│ │ └── zh.json
│ │ ├── en.js
│ │ ├── mine
│ │ ├── en.json
│ │ └── zh.json
│ │ ├── qunfabao
│ │ ├── en.json
│ │ └── zh.json
│ │ ├── wallet
│ │ ├── en.json
│ │ └── zh.json
│ │ └── zh.js
├── launch
│ ├── SkeletonScreen.js
│ ├── launch.android.js
│ ├── launch.ios.js
│ └── splash.js
├── msg-center
│ └── MessageCenter.js
├── multi-sender
│ └── index.js
├── notification
│ ├── InAppNotification.js
│ ├── notification.android.js
│ ├── notification.ios.js
│ ├── notificationHandler.js
│ └── quickAction.js
├── security
│ └── DeviceSecurity.js
└── wallet
│ ├── account
│ ├── Account.js
│ ├── AccountStorage.js
│ ├── AccountStore.js
│ ├── HDAccount.js
│ └── MultiSigAccount.js
│ └── wallet
│ ├── BCHWallet.js
│ ├── BSVWallet.js
│ ├── BTCWallet.js
│ ├── Coin.js
│ ├── CoinStore.js
│ ├── ETCRPCProvider.js
│ ├── ETCWallet.js
│ ├── ETHRPCProvider.js
│ ├── ETHWallet.js
│ ├── Fees.js
│ ├── MultiSigWallet.js
│ ├── Wallet.js
│ ├── WalletTxStore.js
│ ├── bch
│ └── BCHTransaction.js
│ ├── btc
│ ├── BTCMultiSigWallet.js
│ ├── BTCSegwit.js
│ ├── BTCTransaction.js
│ └── USDTTransaction.js
│ └── util
│ ├── MnemonicWordMap.js
│ ├── address.js
│ ├── base58.js
│ ├── baseX.js
│ ├── opcode.js
│ └── serialize.js
├── page
├── RiskWarningScreen.js
├── Screen.js
├── hd-wallet
│ ├── AddAssets.js
│ ├── AddressScreen.js
│ ├── BackupWalletScreen.js
│ ├── CoinDetailScreen.js
│ ├── ConfirmMnemonicWordScreen.js
│ ├── CreateWalletScreen.js
│ ├── ExportMnemonicWordScreen.js
│ ├── HDSendTransactionScreen.js
│ ├── HDWalletComponent.js
│ ├── HDWalletScreen.js
│ ├── ImportHDWalletScreen.js
│ ├── MyAddressesScreen.js
│ ├── SegwitQAScreen.js
│ ├── SelectCoinScreen.js
│ ├── TransactionDetailScreen.js
│ ├── TransferConfrimScreen.js
│ ├── WalletSettingsScreen.js
│ ├── component
│ │ ├── AssetsHeader.js
│ │ ├── BackupSection.js
│ │ ├── FunctionSection.js
│ │ ├── MultiSigTxTimeline.js
│ │ ├── PasswordDialog.js
│ │ ├── ScreenShotWarningModal.js
│ │ ├── WalletRecoveryModal.js
│ │ └── WalletTxCell.js
│ └── print.js
├── mine
│ ├── AboutScreen.js
│ ├── AddContactScreen.js
│ ├── ContactScreen.js
│ ├── CurrencyScreen.js
│ ├── LanguageScreen.js
│ ├── MineScreen.js
│ ├── MsgListScreen.js
│ ├── ScanQRCodeScreen.js
│ ├── UnlockPasswordSettingScreen.js
│ └── component
│ │ ├── PasswordComponent.js
│ │ └── TouchIDComponent.js
├── multi-sender
│ ├── GuideScreen.js
│ ├── SelectCoinScreen.js
│ ├── TaskDetailScreen.js
│ ├── TaskExecutorScreen.js
│ ├── TaskListScreen.js
│ └── component
│ │ ├── ClipboardModal.js
│ │ ├── GetStartedComponent.js
│ │ ├── PasswordModal.js
│ │ ├── ProgressBarComponent.js
│ │ ├── RecipientsComponent.js
│ │ ├── TaskListComponent.js
│ │ └── TaskProgressModal.js
├── multisig-wallet
│ ├── MultiSigCreateScreen.js
│ ├── MultiSigJoinScreen.js
│ ├── MultiSigManageWalletScreen.js
│ ├── MultiSigPendingWalletScreen.js
│ ├── MultiSigRecoveryScreen.js
│ ├── MultiSigTxAuthorizationScreen.js
│ ├── MultiSigWalletComponent.js
│ ├── MultiSigWalletInfoScreen.js
│ ├── MultiSigWalletScreen.js
│ └── MultisigFAQScreen.js
├── rrwalletRegisterScreens.js
└── splash
│ ├── SplashPortal.js
│ └── SplashUtil.js
└── util
├── ErrorHandler.js
├── ImageUtil.js
├── LocalDataName.js
├── NetworkReachability.js
├── NumberUtil.js
├── PasswordUtil.js
├── Storage.js
├── Theme.js
├── Timer.js
├── UIAdapter.js
├── URLRouter.js
├── Version.js
├── device.js
├── ethereum.js
├── iban.js
├── localStorage.js
└── logger.js
/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": ["module:metro-react-native-babel-preset"],
3 | "plugins": [
4 | "@babel/plugin-transform-flow-strip-types",
5 | ["@babel/plugin-proposal-decorators", { "legacy": true}],
6 | ["@babel/plugin-proposal-class-properties", { "loose": true}],
7 | ["transform-inline-environment-variables", { "include": [ "RN_JS_VERSION", "RN_ENV", "RN_CID" ] }],
8 | ["module-resolver", {
9 | "root": ["./src"],
10 | "extensions": [".js"],
11 | "alias": {
12 | "@img": "./resources/img",
13 | "@CC": "./src/component/common",
14 | "@i18n": "./src/module/i18n/i18n",
15 | "@theme": "./src/util/Theme",
16 | "@util": "./src/util",
17 | "@page": "./src/page",
18 | "@module": "./src/module",
19 | "underscore": "lodash"
20 | }
21 | }]
22 | ],
23 | "env": {
24 | "production": {
25 | "plugins": ["transform-remove-console"]
26 | }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/.eslintignore:
--------------------------------------------------------------------------------
1 | src/lib/im/*
--------------------------------------------------------------------------------
/.eslintrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "env": {
3 | "es6": true,
4 | "node": true,
5 | "react-native/react-native": true
6 | },
7 | "parser": "babel-eslint",
8 | "extends": "eslint:recommended",
9 | "globals": {
10 | "Atomics": "readonly",
11 | "SharedArrayBuffer": "readonly"
12 | },
13 | "parserOptions": {
14 | "ecmaFeatures": {
15 | "jsx": true,
16 | "legacyDecorators": true
17 | },
18 | "ecmaVersion": 2018,
19 | "sourceType": "module"
20 | },
21 | "plugins": [
22 | "react",
23 | "react-native"
24 | ],
25 | "rules": {
26 | "no-unused-vars": "off",
27 | "no-console": "off",
28 | "no-useless-escape": "off",
29 | "no-empty": ["error", { "allowEmptyCatch": true }],
30 | "no-extra-boolean-cast": "off",
31 | "no-control-regex": "off",
32 | "getter-return": "off"
33 | }
34 | }
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | *.java linguist-language=JavaScript
2 | *.kt linguist-language=JavaScript
--------------------------------------------------------------------------------
/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "printWidth": 120,
3 | "tabWidth": 2,
4 | "useTabs": false,
5 | "semi": true,
6 | "singleQuote": false,
7 | "trailingComma": "es5",
8 | "bracketSpacing": true,
9 | "jsxBracketSameLine": true,
10 | "arrowParens": "avoid"
11 | }
12 |
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "search.exclude": {
3 | "**/android": true,
4 | "**/ios": true
5 | },
6 | "path-intellisense.mappings": {
7 | "@img": "${workspaceRoot}/resources/img",
8 | "@CC": "${workspaceRoot}/src/component/common",
9 | "@i18n": "${workspaceRoot}/src/module/i18n/i18n",
10 | "@theme": "${workspaceRoot}/src/util/Theme",
11 | "@util": "${workspaceRoot}/src/util",
12 | "@page": "${workspaceRoot}/src/page",
13 | "@module": "${workspaceRoot}/src/module",
14 | "underscore": "lodash"
15 | },
16 | "files.associations": {
17 | "*.js": "javascriptreact"
18 | },
19 | "prettier.jsxBracketSameLine": true,
20 | "prettier.configPath": ".prettierrc"
21 | }
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2020 RenrenBit
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ## ARCHIVED
2 |
3 | * For some unfortunate reasons, this repository has been archived. Please move to [RenrenBit/RRWallet](https://github.com/RenrenBit/RRWallet)
4 | * 本仓库已归档, 请迁移至[RenrenBit/RRWallet](https://github.com/RenrenBit/RRWallet)
5 |
6 |
7 | RRWallet是一款On-Chain数字货币钱包, 支持多个币种, 可同时运行在iOS, Android上.
8 |
9 |
10 |
11 | ## 主要特点⚡️
12 |
13 | * 支持BTC, USDT, ETH, BCH, BSV, ETC等多个币种
14 | * 支持BTC和USDT多签
15 | * 智能合约批量发送交易
16 | * 助记词加密存储在本地
17 | * 使用React Native开发, 一套代码同时支持iOS, Android
18 | * 门限签名(即将支持)
19 |
20 |
21 |
22 | ## 本地运行🚀
23 |
24 | 确保已经安装了Node.js, iOS 和 Android开发环境
25 |
26 | 1.安装依赖
27 |
28 | ```shell
29 | npm ci #前端依赖
30 | cd ios #以下为iOS依赖, 如不需要可以跳过
31 | pod install
32 | ```
33 |
34 | 2.启动服务
35 |
36 | ```shell
37 | npm start
38 | ```
39 |
40 | 3.打开Xcode或者Android Studio 运行即可
41 |
42 |
43 |
44 | ## 编译Release😈
45 | ### iOS
46 |
47 | ```shell
48 | #确保Xcode中的证书有效
49 | npm run build-ios
50 | ```
51 |
52 | ### Android
53 |
54 | ```shell
55 | #需要替换掉build.gradle中的Keystore以及对应的密码
56 | npm run build-android
57 | ```
58 |
59 |
60 |
61 | ## 社区
62 |
63 | 欢迎到社区里与我们讨论任何技术问题
64 |
65 | [RenrenBit Developer Group(Telegram)](http://t.me/renrenbit_developer)
66 |
67 | ## License
68 |
69 | MIT License
70 |
71 | Copyright (c) 2020 RenrenBit
72 |
73 |
--------------------------------------------------------------------------------
/android/.gitignore:
--------------------------------------------------------------------------------
1 | build/
2 | .gradle/
3 | .idea/
4 | *.iml
5 | local.properties
6 | .DS_Store
7 | .navigation/
--------------------------------------------------------------------------------
/android/app/.gitignore:
--------------------------------------------------------------------------------
1 | build/
--------------------------------------------------------------------------------
/android/app/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | cmake_minimum_required(VERSION 3.4.1)
2 | add_library( # Sets the name of the library.
3 | wsc
4 |
5 | # Sets the library as a shared library.
6 | SHARED
7 |
8 | # Provides a relative path to your source file(s).
9 | src/main/jni/wsc.c)
10 |
11 | find_library(
12 | log-lib
13 | log )
14 |
15 |
16 | target_link_libraries(
17 | wsc
18 | ${log-lib} )
--------------------------------------------------------------------------------
/android/app/src/inhouse/res/values/appname.xml:
--------------------------------------------------------------------------------
1 |
2 | RRWallet-test
3 |
4 |
5 |
--------------------------------------------------------------------------------
/android/app/src/main/assets/fonts/DIN Alternate_bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/android/app/src/main/assets/fonts/DIN Alternate_bold.ttf
--------------------------------------------------------------------------------
/android/app/src/main/assets/fonts/Helvetica Neu_medium.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/android/app/src/main/assets/fonts/Helvetica Neu_medium.ttf
--------------------------------------------------------------------------------
/android/app/src/main/assets/fonts/Helvetica Neue.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/android/app/src/main/assets/fonts/Helvetica Neue.ttf
--------------------------------------------------------------------------------
/android/app/src/main/assets/fonts/Helvetica Neue_bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/android/app/src/main/assets/fonts/Helvetica Neue_bold.ttf
--------------------------------------------------------------------------------
/android/app/src/main/assets/fonts/iconfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/android/app/src/main/assets/fonts/iconfont.ttf
--------------------------------------------------------------------------------
/android/app/src/main/cpp/log.cpp:
--------------------------------------------------------------------------------
1 | //
2 | // Created by 钱虹 on 2018/7/25.
3 | //
4 |
--------------------------------------------------------------------------------
/android/app/src/main/ic_launcher-web.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/android/app/src/main/ic_launcher-web.png
--------------------------------------------------------------------------------
/android/app/src/main/java/android/support/v4/content/PublicFileProvider.java:
--------------------------------------------------------------------------------
1 | package android.support.v4.content;
2 |
3 | import com.imagepicker.FileProvider;
4 |
5 | import io.realm.internal.Keep;
6 |
7 | /**
8 | * Created by jackQ on 2018/7/25.
9 | */
10 | @Keep
11 | public class PublicFileProvider extends FileProvider {
12 | }
13 |
--------------------------------------------------------------------------------
/android/app/src/main/java/com/blankj/utilcode/constant/CacheConstants.java:
--------------------------------------------------------------------------------
1 | package com.blankj.utilcode.constant;
2 |
3 | /**
4 | *
5 | * author: Blankj
6 | * blog : http://blankj.com
7 | * time : 2018/06/13
8 | * desc : constants of cache
9 | *
10 | */
11 | public interface CacheConstants {
12 | int SEC = 1;
13 | int MIN = 60;
14 | int HOUR = 3600;
15 | int DAY = 86400;
16 | }
17 |
--------------------------------------------------------------------------------
/android/app/src/main/java/com/blankj/utilcode/constant/MemoryConstants.java:
--------------------------------------------------------------------------------
1 | package com.blankj.utilcode.constant;
2 |
3 | import android.support.annotation.IntDef;
4 |
5 | import java.lang.annotation.Retention;
6 | import java.lang.annotation.RetentionPolicy;
7 |
8 | /**
9 | *
10 | * author: Blankj
11 | * blog : http://blankj.com
12 | * time : 2017/03/13
13 | * desc : constants of memory
14 | *
15 | */
16 | public final class MemoryConstants {
17 |
18 | public static final int BYTE = 1;
19 | public static final int KB = 1024;
20 | public static final int MB = 1048576;
21 | public static final int GB = 1073741824;
22 |
23 | @IntDef({BYTE, KB, MB, GB})
24 | @Retention(RetentionPolicy.SOURCE)
25 | public @interface Unit {
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/android/app/src/main/java/com/blankj/utilcode/constant/TimeConstants.java:
--------------------------------------------------------------------------------
1 | package com.blankj.utilcode.constant;
2 |
3 | import android.support.annotation.IntDef;
4 |
5 | import java.lang.annotation.Retention;
6 | import java.lang.annotation.RetentionPolicy;
7 |
8 | /**
9 | *
10 | * author: Blankj
11 | * blog : http://blankj.com
12 | * time : 2017/03/13
13 | * desc : constants of time
14 | *
15 | */
16 | public final class TimeConstants {
17 |
18 | public static final int MSEC = 1;
19 | public static final int SEC = 1000;
20 | public static final int MIN = 60000;
21 | public static final int HOUR = 3600000;
22 | public static final int DAY = 86400000;
23 |
24 | @IntDef({MSEC, SEC, MIN, HOUR, DAY})
25 | @Retention(RetentionPolicy.SOURCE)
26 | public @interface Unit {
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/android/app/src/main/java/com/renrenbit/rrwallet/MainActivity.java:
--------------------------------------------------------------------------------
1 | package com.renrenbit.rrwallet;
2 |
3 | import android.graphics.Color;
4 | import android.os.Bundle;
5 | import android.support.annotation.Nullable;
6 | import android.view.View;
7 | import android.view.WindowManager;
8 |
9 | import com.renrenbit.rrwallet.react.module.RRRNSplash;
10 | import com.reactnativenavigation.controllers.SplashActivity;
11 |
12 | public class MainActivity extends SplashActivity {
13 |
14 | @Override
15 | protected void onCreate(@Nullable Bundle savedInstanceState) {
16 | super.onCreate(savedInstanceState);
17 | getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
18 | getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
19 | getWindow().setStatusBarColor(Color.TRANSPARENT);
20 | }
21 |
22 | @Override
23 | public View createSplashLayout() {
24 | if (BuildConfig.DEBUG) {
25 | return super.createSplashLayout();
26 | }
27 | return RRRNSplash.getSplashLayout(this);
28 | }
29 | }
--------------------------------------------------------------------------------
/android/app/src/main/java/com/renrenbit/rrwallet/MeizuPushReceiver.java:
--------------------------------------------------------------------------------
1 | package com.renrenbit.rrwallet;
2 |
3 | import com.umeng.message.meizu.UmengMeizuPushReceiver;
4 |
5 | /**
6 | * Created by jackQ on 2018/6/18.
7 | */
8 |
9 | public class MeizuPushReceiver extends UmengMeizuPushReceiver {
10 | }
11 |
--------------------------------------------------------------------------------
/android/app/src/main/java/com/renrenbit/rrwallet/network/Callback.java:
--------------------------------------------------------------------------------
1 | package com.renrenbit.rrwallet.network;
2 |
3 | /**
4 | * Created by jackQ on 2018/6/2.
5 | */
6 |
7 | public interface Callback {
8 | void onResponse(String response);
9 |
10 | void onFailure(Throwable throwable);
11 | }
12 |
--------------------------------------------------------------------------------
/android/app/src/main/java/com/renrenbit/rrwallet/network/ICommonApi.kt:
--------------------------------------------------------------------------------
1 | package com.renrenbit.rrwallet.network
2 |
3 | import retrofit2.Call
4 | import retrofit2.http.*
5 | import retrofit2.http.POST
6 |
7 |
8 |
9 | /**
10 | * Created by jackQ on 2018/6/1.
11 | */
12 | interface ICommonApi {
13 | @GET
14 | fun get(@Url relativePath: String, @HeaderMap headers: Map): Call
15 |
16 | @POST
17 | @FormUrlEncoded
18 | fun post(@Url relativePath: String,
19 | @FieldMap(encoded = true) fields: Map,
20 | @HeaderMap headers: Map): Call
21 |
22 |
23 | @POST
24 | fun post(@Url relativePath: String,
25 | @Body data: String,
26 | @HeaderMap headers: Map): Call
27 |
28 |
29 | }
--------------------------------------------------------------------------------
/android/app/src/main/java/com/renrenbit/rrwallet/network/NetworkClient.kt:
--------------------------------------------------------------------------------
1 | package com.renrenbit.rrwallet.network
2 |
3 | import org.json.JSONObject
4 |
5 | /**
6 | * Created by jackQ on 2018/6/1.
7 | */
8 | interface NetworkClient {
9 | fun get(url: String, headers: MutableMap?): String?
10 |
11 | fun getAsync(url: String, headers: MutableMap?, callback: Callback)
12 |
13 | fun post(url: String, headers: MutableMap?, params: MutableMap?): JSONObject?
14 |
15 | fun postAsync(url: String, headers: MutableMap?, params: MutableMap?, callback: Callback)
16 |
17 | fun post(url: String, headers: MutableMap?, data: String?): String?
18 |
19 | fun postAsync(url: String, headers: MutableMap?, data: String?, callback: Callback)
20 | }
--------------------------------------------------------------------------------
/android/app/src/main/java/com/renrenbit/rrwallet/network/RetrofitResponseAdapter.java:
--------------------------------------------------------------------------------
1 | package com.renrenbit.rrwallet.network;
2 |
3 | import retrofit2.Call;
4 | import retrofit2.Response;
5 |
6 | /**
7 | * Created by jackQ on 2018/6/2.
8 | */
9 |
10 | @SuppressWarnings("unchecked")
11 | public class RetrofitResponseAdapter implements retrofit2.Callback {
12 |
13 | private final Callback mCallback;
14 |
15 | public RetrofitResponseAdapter(Callback callback) {
16 | mCallback = callback;
17 | }
18 |
19 | @Override
20 | public void onResponse(Call call, Response response) {
21 | try {
22 | if (response.isSuccessful()) {
23 | mCallback.onResponse(response.body());
24 | } else {
25 | String errorResp = response.errorBody() != null ? response.errorBody().string() : "";
26 | mCallback.onResponse(errorResp);
27 | }
28 | } catch (Throwable e) {
29 | mCallback.onFailure(e);
30 | }
31 | }
32 |
33 | @Override
34 | public void onFailure(Call call, Throwable t) {
35 | mCallback.onFailure(t);
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/android/app/src/main/java/com/renrenbit/rrwallet/network/cookie/GuardedAsyncTask.java:
--------------------------------------------------------------------------------
1 | package com.renrenbit.rrwallet.network.cookie;
2 |
3 | import android.os.AsyncTask;
4 |
5 | /**
6 | * Created by jackQ on 2018/6/2.
7 | */
8 | abstract class GuardedAsyncTask
9 | extends AsyncTask {
10 |
11 |
12 | protected GuardedAsyncTask() {
13 | }
14 |
15 | @Override
16 | protected final Void doInBackground(Params... params) {
17 | try {
18 | doInBackgroundGuarded(params);
19 | } catch (RuntimeException e) {
20 | e.printStackTrace();
21 | }
22 | return null;
23 | }
24 |
25 | protected abstract void doInBackgroundGuarded(Params... params);
26 | }
27 |
--------------------------------------------------------------------------------
/android/app/src/main/java/com/renrenbit/rrwallet/network/cookie/GuardedResultAsyncTask.java:
--------------------------------------------------------------------------------
1 | package com.renrenbit.rrwallet.network.cookie;
2 |
3 | import android.os.AsyncTask;
4 |
5 | /**
6 | * Created by jackQ on 2018/6/2.
7 | */
8 |
9 | abstract class GuardedResultAsyncTask
10 | extends AsyncTask {
11 |
12 | protected GuardedResultAsyncTask() {
13 |
14 | }
15 |
16 | @Override
17 | protected final Result doInBackground(Void... params) {
18 | try {
19 | return doInBackgroundGuarded();
20 | } catch (RuntimeException e) {
21 | e.printStackTrace();
22 | throw e;
23 | }
24 | }
25 |
26 | @Override
27 | protected final void onPostExecute(Result result) {
28 | try {
29 | onPostExecuteGuarded(result);
30 | } catch (RuntimeException e) {
31 | e.printStackTrace();
32 | }
33 | }
34 |
35 | protected abstract Result doInBackgroundGuarded();
36 |
37 | protected abstract void onPostExecuteGuarded(Result result);
38 | }
39 |
--------------------------------------------------------------------------------
/android/app/src/main/java/com/renrenbit/rrwallet/react/ReactNativeActivity.java:
--------------------------------------------------------------------------------
1 | package com.renrenbit.rrwallet.react;
2 |
3 | import com.facebook.react.ReactActivity;
4 |
5 | /**
6 | * Created by jackQ on 2018/5/31.
7 | */
8 |
9 | public class ReactNativeActivity extends ReactActivity {
10 |
11 | @Override
12 | protected String getMainComponentName() {
13 | return "rrwallet";
14 | }
15 | }
--------------------------------------------------------------------------------
/android/app/src/main/java/com/renrenbit/rrwallet/react/module/WalletNativePackage.java:
--------------------------------------------------------------------------------
1 | package com.renrenbit.rrwallet.react.module;
2 |
3 | import com.facebook.react.ReactPackage;
4 | import com.facebook.react.bridge.NativeModule;
5 | import com.facebook.react.bridge.ReactApplicationContext;
6 | import com.facebook.react.uimanager.ViewManager;
7 |
8 | import java.util.Arrays;
9 | import java.util.Collections;
10 | import java.util.List;
11 |
12 | /**
13 | * Created by jackQ on 2018/5/31.
14 | */
15 |
16 | public class WalletNativePackage implements ReactPackage {
17 |
18 | @Override
19 | public List createNativeModules(ReactApplicationContext reactContext) {
20 | return Arrays.asList(
21 | new RRRNNetworkModule(reactContext),
22 | new RRRNDeviceModule(reactContext),
23 | new RRRNEthereumModule(reactContext),
24 | new NotificationModule(reactContext),
25 | new RRRNBitcoinModule(reactContext),
26 | new RRRNQRDecoderModule(reactContext),
27 | new RRRNAnalysisModule(reactContext),
28 | new RRRNSplash(reactContext)
29 | );
30 | }
31 |
32 | @Override
33 | public List createViewManagers(ReactApplicationContext reactContext) {
34 | return Collections.emptyList();
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/android/app/src/main/java/com/renrenbit/rrwallet/react/module/webview/MessageEvent.java:
--------------------------------------------------------------------------------
1 | package com.renrenbit.rrwallet.react.module.webview;
2 |
3 | import com.facebook.react.bridge.Arguments;
4 | import com.facebook.react.bridge.WritableMap;
5 | import com.facebook.react.uimanager.events.Event;
6 | import com.facebook.react.uimanager.events.RCTEventEmitter;
7 |
8 | public class MessageEvent extends Event {
9 |
10 | public static final String EVENT_NAME = "messageEvent";
11 |
12 | private final String message;
13 |
14 | public MessageEvent(int viewId, String message) {
15 | super(viewId);
16 |
17 | this.message = message;
18 | }
19 |
20 | @Override
21 | public String getEventName() {
22 | return EVENT_NAME;
23 | }
24 |
25 | @Override
26 | public void dispatch(RCTEventEmitter rctEventEmitter) {
27 | rctEventEmitter.receiveEvent(getViewTag(), getEventName(), serializeEventData());
28 | }
29 |
30 | private WritableMap serializeEventData() {
31 | WritableMap eventData = Arguments.createMap();
32 | eventData.putString("message", this.message);
33 |
34 | return eventData;
35 | }
36 |
37 | }
--------------------------------------------------------------------------------
/android/app/src/main/java/com/renrenbit/rrwallet/react/module/webview/ShouldOverrideUrlLoadingEvent.java:
--------------------------------------------------------------------------------
1 | package com.renrenbit.rrwallet.react.module.webview;
2 |
3 | import com.facebook.react.bridge.Arguments;
4 | import com.facebook.react.bridge.WritableMap;
5 | import com.facebook.react.uimanager.events.Event;
6 | import com.facebook.react.uimanager.events.RCTEventEmitter;
7 |
8 | public class ShouldOverrideUrlLoadingEvent extends Event {
9 |
10 | public static final String EVENT_NAME = "shouldOverrideUrlLoading";
11 |
12 | private final String mUrl;
13 | private final int mNavigationType;
14 |
15 | public ShouldOverrideUrlLoadingEvent(int viewId, long timestampMs, String url, int navigationType) {
16 | super(viewId);
17 |
18 | mUrl = url;
19 | mNavigationType = navigationType;
20 | }
21 |
22 | @Override
23 | public String getEventName() {
24 | return EVENT_NAME;
25 | }
26 |
27 | @Override
28 | public void dispatch(RCTEventEmitter rctEventEmitter) {
29 | rctEventEmitter.receiveEvent(getViewTag(), getEventName(), serializeEventData());
30 | }
31 |
32 | private WritableMap serializeEventData() {
33 | WritableMap eventData = Arguments.createMap();
34 | eventData.putString("url", mUrl);
35 | eventData.putInt("navigationType", mNavigationType);
36 |
37 | return eventData;
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/android/app/src/main/java/com/renrenbit/rrwallet/service/push/ActivityHookService.java:
--------------------------------------------------------------------------------
1 | package com.renrenbit.rrwallet.service.push;
2 |
3 | import android.app.Activity;
4 | import android.os.Bundle;
5 |
6 | import com.renrenbit.rrwallet.service.statistics.UmengAnalyticsAgent;
7 | import com.umeng.message.PushAgent;
8 |
9 | /**
10 | * Created by jackQ on 2018/6/18.
11 | */
12 |
13 | class ActivityHookService {
14 | void onActivityCreated(Activity activity, Bundle savedInstanceState) {
15 | PushAgent.getInstance(activity).onAppStart();
16 | }
17 |
18 | void onActivityStarted(Activity activity) {
19 |
20 | }
21 |
22 | void onActivityResumed(Activity activity) {
23 | UmengAnalyticsAgent.onResume(activity);
24 | }
25 |
26 | void onActivityPaused(Activity activity) {
27 | UmengAnalyticsAgent.onPause(activity);
28 | }
29 |
30 | void onActivityStopped(Activity activity) {
31 |
32 | }
33 |
34 | void onActivitySaveInstanceState(Activity activity, Bundle outState) {
35 |
36 | }
37 |
38 | void onActivityDestroyed(Activity activity) {
39 |
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/android/app/src/main/java/com/renrenbit/rrwallet/service/push/MessageHandler.java:
--------------------------------------------------------------------------------
1 | package com.renrenbit.rrwallet.service.push;
2 |
3 | import android.app.Notification;
4 | import android.content.Context;
5 |
6 | import com.umeng.message.UmengMessageHandler;
7 | import com.umeng.message.entity.UMessage;
8 |
9 | /**
10 | * Created by jackQ on 2018/6/18.
11 | */
12 |
13 | public class MessageHandler extends UmengMessageHandler {
14 |
15 | /**
16 | * 通知的回调方法
17 | *
18 | * @param context
19 | * @param msg
20 | */
21 | @Override
22 | public void dealWithNotificationMessage(Context context, UMessage msg) {
23 | //调用super则会走通知展示流程,不调用super则不展示通知
24 | super.dealWithNotificationMessage(context, msg);
25 | }
26 |
27 | @Override
28 | public void dealWithCustomMessage(Context context, UMessage uMessage) {
29 | PushEvent event = new PushEvent(uMessage.extra, uMessage.custom, uMessage.title, uMessage.text);
30 | PushManager.inst().handleMessage(context, event);
31 | }
32 |
33 | @Override
34 | public Notification getNotification(Context context, UMessage uMessage) {
35 | PushEvent event = new PushEvent(uMessage.extra, uMessage.custom, uMessage.title, uMessage.text);
36 | PushManager.inst().onReceiveMessage(context, event);
37 | return super.getNotification(context, uMessage);
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/android/app/src/main/java/com/renrenbit/rrwallet/service/statistics/UmengAnalyticsAgent.java:
--------------------------------------------------------------------------------
1 | package com.renrenbit.rrwallet.service.statistics;
2 |
3 | import android.app.Activity;
4 | import android.content.Context;
5 |
6 | import com.umeng.analytics.MobclickAgent;
7 |
8 | /**
9 | * Created by jackQ on 2018/8/11.
10 | */
11 |
12 | public class UmengAnalyticsAgent {
13 | public static void init(Context context) {
14 | MobclickAgent.setScenarioType(context, MobclickAgent.EScenarioType.E_UM_NORMAL);
15 | }
16 |
17 | public static void onResume(Activity activity) {
18 | MobclickAgent.onResume(activity);
19 | }
20 |
21 |
22 | public static void onPause(Activity activity) {
23 | MobclickAgent.onPause(activity);
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/android/app/src/main/java/com/renrenbit/rrwallet/service/wallet/CoinType.java:
--------------------------------------------------------------------------------
1 | package com.renrenbit.rrwallet.service.wallet;
2 |
3 | import com.renrenbit.rrwallet.service.wallet.db.entry.Account;
4 |
5 | /**
6 | * Created by jackQ on 2018/6/16.
7 | */
8 |
9 | public enum CoinType {
10 | eth("m/44'/60'/0'/0/0", Account.ETHER),
11 | btc("m/44'/0'/0'/0/0", Account.BTC),
12 | btcTest("m/44'/1'/0'/0/0", Account.BTC_TEST);
13 |
14 | private final String mPath;
15 | private final int mAccountType;
16 |
17 |
18 | CoinType(String path, int accountType) {
19 | this.mPath = path;
20 | this.mAccountType = accountType;
21 | }
22 |
23 | public static CoinType of(int type) {
24 | switch (type) {
25 | case Account.ETHER:
26 | return eth;
27 | case Account.BTC:
28 | return btc;
29 | case Account.BTC_TEST:
30 | return btcTest;
31 | }
32 | throw new IllegalArgumentException("not support coin type : " + type);
33 | }
34 |
35 | public String getPath() {
36 | return mPath;
37 | }
38 |
39 | public int getAccountType() {
40 | return mAccountType;
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/android/app/src/main/java/com/renrenbit/rrwallet/service/wallet/IWalletCreator.java:
--------------------------------------------------------------------------------
1 | package com.renrenbit.rrwallet.service.wallet;
2 |
3 | import org.jetbrains.annotations.NotNull;
4 |
5 | /**
6 | * Created by jackQ on 2018/6/16.
7 | */
8 |
9 | public interface IWalletCreator {
10 | @NotNull
11 | Wallet createNewWallet();
12 |
13 | @NotNull
14 | Wallet createWalletFromWords(@NotNull String mnemonic);
15 |
16 | Wallet createWallet(String privateKey);
17 |
18 | String getPrivateKey(String mnemonic);
19 |
20 | String getAddress(String privateKey);
21 |
22 | String getPublicKey(String privateKey);
23 | }
24 |
--------------------------------------------------------------------------------
/android/app/src/main/java/com/renrenbit/rrwallet/service/wallet/SecureRandomUtils.java:
--------------------------------------------------------------------------------
1 | package com.renrenbit.rrwallet.service.wallet;
2 |
3 | import org.web3j.crypto.LinuxSecureRandom;
4 |
5 | import java.security.SecureRandom;
6 |
7 | /**
8 | * Created by jackQ on 2018/6/4.
9 | */
10 |
11 | public class SecureRandomUtils {
12 | private static final SecureRandom SECURE_RANDOM;
13 | // Taken from BitcoinJ implementation
14 | // https://github.com/bitcoinj/bitcoinj/blob/3cb1f6c6c589f84fe6e1fb56bf26d94cccc85429/core/src/main/java/org/bitcoinj/core/Utils.java#L573
15 | private static int isAndroid = -1;
16 |
17 | static {
18 | if (isAndroidRuntime()) {
19 | new LinuxSecureRandom();
20 | }
21 | SECURE_RANDOM = new SecureRandom();
22 | }
23 |
24 | private SecureRandomUtils() {
25 | }
26 |
27 | public static SecureRandom secureRandom() {
28 | return SECURE_RANDOM;
29 | }
30 |
31 | static boolean isAndroidRuntime() {
32 | if (isAndroid == -1) {
33 | final String runtime = System.getProperty("java.runtime.name");
34 | isAndroid = (runtime != null && runtime.equals("Android Runtime")) ? 1 : 0;
35 | }
36 | return isAndroid == 1;
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/android/app/src/main/java/com/renrenbit/rrwallet/service/wallet/SignChecker.java:
--------------------------------------------------------------------------------
1 | package com.renrenbit.rrwallet.service.wallet;
2 |
3 | /**
4 | * Created by jackQ on 2018/7/25.
5 | */
6 |
7 | public class SignChecker {
8 | static {
9 | try {
10 | System.loadLibrary("wsc");
11 | } catch (Throwable ignored) {
12 | ignored.printStackTrace();
13 | }
14 | }
15 |
16 | public static void init() {
17 | init_native();
18 | }
19 |
20 |
21 | private static native void init_native();
22 | }
23 |
--------------------------------------------------------------------------------
/android/app/src/main/java/com/renrenbit/rrwallet/service/wallet/Transaction.java:
--------------------------------------------------------------------------------
1 | package com.renrenbit.rrwallet.service.wallet;
2 |
3 | import java.math.BigInteger;
4 |
5 | /**
6 | * Created by jackQ on 2018/6/14.
7 | */
8 |
9 | public class Transaction {
10 | public String transactionHash;
11 | public BigInteger nonce;
12 | public String contract;
13 | public String from;
14 | public String to;
15 | public BigInteger amount;
16 | public BigInteger gasLimit;
17 | public BigInteger gasPrice;
18 | public String rawData;
19 | }
20 |
--------------------------------------------------------------------------------
/android/app/src/main/java/com/renrenbit/rrwallet/service/wallet/WalletCreatorFactory.java:
--------------------------------------------------------------------------------
1 | package com.renrenbit.rrwallet.service.wallet;
2 |
3 | import com.renrenbit.rrwallet.service.wallet.btc.BtcWalletCreator;
4 | import com.renrenbit.rrwallet.service.wallet.ether.EthWalletCreator;
5 |
6 | import java.util.Map;
7 | import java.util.concurrent.ConcurrentHashMap;
8 |
9 | /**
10 | * Created by jackQ on 2018/6/16.
11 | */
12 |
13 | public class WalletCreatorFactory {
14 | private static Map sMap;
15 |
16 | public static IWalletCreator getCreator(CoinType type) {
17 | if (sMap == null) {
18 | synchronized (WalletCreatorFactory.class) {
19 | if (sMap == null) {
20 | sMap = new ConcurrentHashMap<>();
21 | initMap();
22 | }
23 | }
24 | }
25 | return sMap.get(type);
26 | }
27 |
28 | private static void initMap() {
29 | sMap.put(CoinType.eth, new EthWalletCreator());
30 | sMap.put(CoinType.btc, new BtcWalletCreator());
31 | sMap.put(CoinType.btcTest, new BtcWalletCreator());
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/android/app/src/main/java/com/renrenbit/rrwallet/service/wallet/WalletException.java:
--------------------------------------------------------------------------------
1 | package com.renrenbit.rrwallet.service.wallet;
2 |
3 | /**
4 | * Created by jackQ on 2018/7/9.
5 | */
6 |
7 | public class WalletException extends Exception {
8 |
9 | public WalletException(String msg) {
10 | super(msg);
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/android/app/src/main/java/com/renrenbit/rrwallet/service/wallet/btc/net/BtcEnv.java:
--------------------------------------------------------------------------------
1 | package com.renrenbit.rrwallet.service.wallet.btc.net;
2 |
3 | import com.renrenbit.rrwallet.service.wallet.CoinType;
4 |
5 | import org.bitcoinj.core.NetworkParameters;
6 |
7 | /**
8 | * Created by jackQ on 2018/7/7.
9 | */
10 |
11 | public interface BtcEnv {
12 |
13 | NetworkParameters getNetParams();
14 |
15 | String getPath();
16 |
17 | CoinType getCoinType();
18 |
19 | }
20 |
--------------------------------------------------------------------------------
/android/app/src/main/java/com/renrenbit/rrwallet/service/wallet/btc/net/FormalEnv.java:
--------------------------------------------------------------------------------
1 | package com.renrenbit.rrwallet.service.wallet.btc.net;
2 |
3 | import com.renrenbit.rrwallet.service.wallet.CoinType;
4 |
5 | import org.bitcoinj.core.NetworkParameters;
6 | import org.bitcoinj.params.MainNetParams;
7 |
8 |
9 | /**
10 | * Created by jackQ on 2018/7/7.
11 | */
12 |
13 | public class FormalEnv implements BtcEnv {
14 |
15 | @Override
16 | public NetworkParameters getNetParams() {
17 | return MainNetParams.get();
18 | }
19 |
20 | @Override
21 | public String getPath() {
22 | return CoinType.btc.getPath();
23 | }
24 |
25 | @Override
26 | public CoinType getCoinType() {
27 | return CoinType.btc;
28 | }
29 |
30 | }
31 |
--------------------------------------------------------------------------------
/android/app/src/main/java/com/renrenbit/rrwallet/service/wallet/btc/net/TestEnv.java:
--------------------------------------------------------------------------------
1 | package com.renrenbit.rrwallet.service.wallet.btc.net;
2 |
3 | import com.renrenbit.rrwallet.service.wallet.CoinType;
4 |
5 | import org.bitcoinj.core.NetworkParameters;
6 | import org.bitcoinj.params.TestNet3Params;
7 |
8 | /**
9 | * Created by jackQ on 2018/7/7.
10 | */
11 |
12 | public class TestEnv implements BtcEnv {
13 |
14 | @Override
15 | public NetworkParameters getNetParams() {
16 | return TestNet3Params.get();
17 | }
18 |
19 | @Override
20 | public String getPath() {
21 | return CoinType.btcTest.getPath();
22 | }
23 |
24 | @Override
25 | public CoinType getCoinType() {
26 | return CoinType.btcTest;
27 | }
28 |
29 | }
30 |
--------------------------------------------------------------------------------
/android/app/src/main/java/com/renrenbit/rrwallet/service/wallet/db/WalletDbMigration.java:
--------------------------------------------------------------------------------
1 | package com.renrenbit.rrwallet.service.wallet.db;
2 |
3 | import io.realm.DynamicRealm;
4 | import io.realm.RealmMigration;
5 |
6 | /**
7 | * Created by jackQ on 2018/6/23.
8 | */
9 |
10 | class WalletDbMigration implements RealmMigration {
11 | @Override
12 | public void migrate(DynamicRealm realm, long oldVersion, long newVersion) {
13 | // RealmSchema schema = realm.getSchema();
14 | // if (oldVersion == 0) {
15 | // schema.get(Constants.WALLET_DB_TABLE)
16 | // .addField("private_key", String.class);
17 | // oldVersion++;
18 | // }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/android/app/src/main/java/com/renrenbit/rrwallet/utils/Md5.java:
--------------------------------------------------------------------------------
1 | package com.renrenbit.rrwallet.utils;
2 |
3 | import android.text.TextUtils;
4 |
5 | import java.security.MessageDigest;
6 | import java.security.NoSuchAlgorithmException;
7 |
8 | /**
9 | * Created by jackQ on 2018/6/12.
10 | */
11 |
12 | public class Md5 {
13 | public static String md5(String str) {
14 | if (TextUtils.isEmpty(str)) {
15 | return "";
16 | }
17 | MessageDigest md5 = null;
18 | try {
19 | md5 = MessageDigest.getInstance("MD5");
20 | byte[] bytes = md5.digest(str.getBytes());
21 | StringBuilder result = new StringBuilder();
22 | for (byte b : bytes) {
23 | String temp = Integer.toHexString(b & 0xff);
24 | if (temp.length() == 1) {
25 | temp = "0" + temp;
26 | }
27 | result.append(temp);
28 | }
29 | return result.toString();
30 | } catch (NoSuchAlgorithmException e) {
31 | e.printStackTrace();
32 | }
33 | return "";
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/android/app/src/main/java/com/renrenbit/rrwallet/utils/StringOutputStream.java:
--------------------------------------------------------------------------------
1 | package com.renrenbit.rrwallet.utils;
2 |
3 | import java.io.IOException;
4 | import java.io.OutputStream;
5 |
6 | /**
7 | * Created by jackQ on 2018/6/14.
8 | */
9 |
10 | public class StringOutputStream extends OutputStream {
11 | private StringBuilder string = new StringBuilder();
12 |
13 | @Override
14 | public void write(int b) throws IOException {
15 | this.string.append((char) b);
16 | }
17 |
18 | public String toString() {
19 | return this.string.toString();
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/android/app/src/main/java/com/renrenbit/rrwallet/utils/ThreadScheduleUtils.java:
--------------------------------------------------------------------------------
1 | package com.renrenbit.rrwallet.utils;
2 |
3 | import rx.Observable;
4 | import rx.android.schedulers.AndroidSchedulers;
5 | import rx.schedulers.Schedulers;
6 |
7 | public class ThreadScheduleUtils {
8 | public static Observable observeOnMainThread(Observable obs) {
9 | return obs.observeOn(AndroidSchedulers.mainThread());
10 | }
11 |
12 | public static Observable subscribeOnIoThread(Observable obs) {
13 | return obs.subscribeOn(Schedulers.io());
14 | }
15 |
16 | public static Observable simpleScheduleThread(Observable obs) {
17 | return subscribeOnIoThread(observeOnMainThread(obs));
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/android/app/src/main/java/com/renrenbit/rrwallet/utils/WeakHandler.java:
--------------------------------------------------------------------------------
1 | package com.renrenbit.rrwallet.utils;
2 |
3 | import android.os.Handler;
4 | import android.os.Looper;
5 | import android.os.Message;
6 |
7 | import java.lang.ref.WeakReference;
8 |
9 | public class WeakHandler extends Handler {
10 |
11 | public interface IHandler {
12 | public void handleMsg(Message msg);
13 | }
14 |
15 | WeakReference mRef;
16 |
17 | public WeakHandler(IHandler handler) {
18 | mRef = new WeakReference(handler);
19 | }
20 |
21 | public WeakHandler(Looper looper, IHandler handler) {
22 | super(looper);
23 | mRef = new WeakReference(handler);
24 | }
25 |
26 | @Override
27 | public void handleMessage(Message msg) {
28 | IHandler handler = mRef.get();
29 | if (handler != null && msg != null)
30 | handler.handleMsg(msg);
31 | }
32 | }
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-hdpi/umeng_push_notification_default_small_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/android/app/src/main/res/drawable-hdpi/umeng_push_notification_default_small_icon.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-mdpi/umeng_push_notification_default_small_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/android/app/src/main/res/drawable-mdpi/umeng_push_notification_default_small_icon.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-xhdpi/splash_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/android/app/src/main/res/drawable-xhdpi/splash_logo.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-xhdpi/umeng_push_notification_default_small_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/android/app/src/main/res/drawable-xhdpi/umeng_push_notification_default_small_icon.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-xxhdpi/splash_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/android/app/src/main/res/drawable-xxhdpi/splash_logo.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-xxhdpi/umeng_push_notification_default_small_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/android/app/src/main/res/drawable-xxhdpi/umeng_push_notification_default_small_icon.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable/umeng_push_notification_default_large_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/android/app/src/main/res/drawable/umeng_push_notification_default_large_icon.png
--------------------------------------------------------------------------------
/android/app/src/main/res/layout/activity_push.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
--------------------------------------------------------------------------------
/android/app/src/main/res/layout/launch_screen.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
--------------------------------------------------------------------------------
/android/app/src/main/res/layout/splash_page.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
17 |
18 |
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/raw/bitrenren_ssl.cer:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/android/app/src/main/res/raw/bitrenren_ssl.cer
--------------------------------------------------------------------------------
/android/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #FFFFFF
4 |
--------------------------------------------------------------------------------
/android/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | RRWallet
3 | 测试入口
4 |
5 | 你已拒绝了权限申请,所以该功能不能正常使用!请授权后再试
6 | We need some of the permissions you rejected or the system failed to apply failed, please manually set to the page authorize, otherwise the function can\'t be used normally!
7 |
8 |
9 |
--------------------------------------------------------------------------------
/android/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
8 |
20 |
23 |
24 |
--------------------------------------------------------------------------------
/android/app/src/main/res/xml/network_security_config.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | testnet.blockchain.info
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/android/app/src/main/res/xml/util_code_provider_paths.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/android/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 |
3 | # IDE (e.g. Android Studio) users:
4 | # Gradle settings configured through the IDE *will override*
5 | # any settings specified in this file.
6 |
7 | # For more details on how to configure your build environment visit
8 | # http://www.gradle.org/docs/current/userguide/build_environment.html
9 |
10 | # Specifies the JVM arguments used for the daemon process.
11 | # The setting is particularly useful for tweaking memory settings.
12 | # Default value: -Xmx10248m -XX:MaxPermSize=256m
13 | # org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
14 |
15 | # When configured, Gradle will run in incubating parallel mode.
16 | # This option should only be used with decoupled projects. More details, visit
17 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
18 | # org.gradle.parallel=true
19 |
20 | android.useDeprecatedNdk=true
21 |
22 | android.enableAapt2=false
23 | org.gradle.jvmargs=-Xmx1536M
--------------------------------------------------------------------------------
/android/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/android/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/android/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Mon Jul 16 20:35:27 CST 2018
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.2-all.zip
7 |
--------------------------------------------------------------------------------
/android/keystores/debug.keystore.properties:
--------------------------------------------------------------------------------
1 | key.store=debug.keystore
2 | key.alias=androiddebugkey
3 | key.store.password=android
4 | key.alias.password=android
5 |
--------------------------------------------------------------------------------
/app.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "rrwallet",
3 | "displayName": "rrwallet"
4 | }
--------------------------------------------------------------------------------
/fix_podspec_bug.sh:
--------------------------------------------------------------------------------
1 | sed -i '' 's/Libraries\/Text\/\*\./Libraries\/Text\/**\/\*\./g' \
2 | ./node_modules/react-native/React.podspec
3 | sed -i '' "s/\'ios\/\*\.{h,m}\'/\'ios\/RN\/**\/\*\.{h,m}\', \'ios\/RCT\/**\/\*\.{h,m}\'/g" \
4 | ./node_modules/react-native-camera/react-native-camera.podspec
5 | sed -i "" "/^ s.resources/d" \
6 | ./node_modules/react-native-vector-icons/RNVectorIcons.podspec
--------------------------------------------------------------------------------
/ios/Gemfile:
--------------------------------------------------------------------------------
1 | source "https://rubygems.org"
2 |
3 | gem "fastlane", "2.128.1"
4 | gem "cocoapods", "1.7.5"
5 | gem "xcpretty", "0.3.0"
6 | gem "xcodeproj", "1.12.0"
7 |
8 | plugins_path = File.join(File.dirname(__FILE__), 'fastlane', 'Pluginfile')
9 | eval_gemfile(plugins_path) if File.exist?(plugins_path)
10 |
--------------------------------------------------------------------------------
/ios/local-podspec/TouchID.podspec:
--------------------------------------------------------------------------------
1 | require 'json'
2 |
3 | package = JSON.parse(File.read(File.join(__dir__, '../../node_modules/react-native-touch-id/package.json')))
4 |
5 | Pod::Spec.new do |s|
6 | s.name = "TouchID"
7 | s.version = package['version']
8 | s.summary = "A React Native library for authenticating users with Touch ID"
9 | s.homepage = "https://github.com/naoufal/react-native-touch-id"
10 | s.license = "MIT"
11 |
12 | s.author = { "Naoufal Kadhom" => "naoufalkadhom@gmail.com" }
13 | s.platform = :ios, "7.0"
14 | s.source = { :git => "https://github.com/naoufal/react-native-touch-id.git" }
15 |
16 | s.source_files = "*.{h,m}"
17 | s.dependency "React"
18 | end
19 |
--------------------------------------------------------------------------------
/ios/local-podspec/react-native-navigation.podspec.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "react-native-navigation",
3 | "version": "1.1.493",
4 | "summary": "React Native Navigation - truly native navigation for iOS and Android",
5 | "homepage": "https://github.com/wix/react-native-navigation",
6 | "license": {
7 | "type": "MIT",
8 | "file": "LICENSE"
9 | },
10 | "authors": {
11 | "Tal Kol": "talkol@gmail.com"
12 | },
13 | "source": {
14 | "git": "https://github.com/wix/react-native-navigation.git",
15 | "tag": "v1.1.493"
16 | },
17 | "platforms": {
18 | "ios": "8.0"
19 | },
20 | "source_files": [
21 | "ios/**/*.{h,m}"
22 | ],
23 | "requires_arc": true,
24 | "dependencies": {
25 | "React": [
26 |
27 | ]
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/ios/rrwallet.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/ios/rrwallet.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios/rrwallet.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/ios/rrwallet.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios/rrwallet/AppDelegate.h:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) 2015-present, Facebook, Inc.
3 | * All rights reserved.
4 | *
5 | * This source code is licensed under the BSD-style license found in the
6 | * LICENSE file in the root directory of this source tree. An additional grant
7 | * of patent rights can be found in the PATENTS file in the same directory.
8 | */
9 |
10 | #import
11 |
12 | @interface AppDelegate : UIResponder
13 |
14 | @property (nonatomic, strong) UIWindow *window;
15 |
16 | @end
17 |
--------------------------------------------------------------------------------
/ios/rrwallet/Asset.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/ios/rrwallet/Asset.xcassets/splash_logo.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "splash_logo@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "splash_logo@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/ios/rrwallet/Asset.xcassets/splash_logo.imageset/splash_logo@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/ios/rrwallet/Asset.xcassets/splash_logo.imageset/splash_logo@2x.png
--------------------------------------------------------------------------------
/ios/rrwallet/Asset.xcassets/splash_logo.imageset/splash_logo@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/ios/rrwallet/Asset.xcassets/splash_logo.imageset/splash_logo@3x.png
--------------------------------------------------------------------------------
/ios/rrwallet/Category/DFHexCategory.h:
--------------------------------------------------------------------------------
1 | //
2 | // DFHexCategory.h
3 | // rrwallet
4 | //
5 | // Created by muhuai on 2018/3/3.
6 | // Copyright © 2018年 Facebook. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NSData* MFDataFromHex(NSString* hex, NSInteger byteLength);
12 | @interface NSData(df_hex)
13 |
14 | + (instancetype)df_dataWithHexString:(NSString *)hex;
15 |
16 | - (NSString *)df_hexString;
17 |
18 | - (NSData *)df_fillToLength:(NSInteger)length;
19 |
20 | @end
21 |
22 | @interface NSString(df_hex)
23 |
24 | - (NSInteger)df_hexToInt;
25 |
26 | @end
27 |
--------------------------------------------------------------------------------
/ios/rrwallet/Category/DFMacro.h:
--------------------------------------------------------------------------------
1 | //
2 | // DFMacro.h
3 | // rrwallet
4 | //
5 | // Created by muhuai on 2018/2/16.
6 | // Copyright © 2018年 Facebook. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | #define isEmptyString(str) (!str || ![str isKindOfClass:[NSString class]] || str.length == 0)
12 |
13 |
--------------------------------------------------------------------------------
/ios/rrwallet/Category/NSDictionary+MFCategory.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSDictionary+MFCategory.h
3 | // rrwallet
4 | //
5 | // Created by muhuai on 06/02/2017.
6 | // Copyright © 2017 MH. All rights reserved.
7 | //
8 |
9 | #import
10 | @interface NSDictionary(MFCategory)
11 |
12 | - (id)mf_objectForKey:(id)aKey ofClass:(Class)aClass defaultObj:(id)defaultObj;
13 |
14 | - (NSInteger)mf_integerValueForKey:(NSString *)key;
15 | - (NSInteger)mf_integerValueForKey:(NSString *)key defaultValue:(NSInteger)defaultValue;
16 |
17 | - (BOOL)mf_boolValueForKey:(NSString *)key;
18 |
19 | - (NSString *)mf_stringValueForKey:(NSString *)key defaultValue:(NSString *)defaultValue;
20 | - (NSString *)mf_stringValueForKey:(NSString *)key;
21 |
22 | - (NSArray *)mf_arrayValueForKey:(NSString *)key defaultValue:(NSArray *)defaultValue;
23 | - (NSArray *)mf_arrayValueForKey:(NSString *)key;
24 |
25 | - (NSDictionary *)mf_dictionaryValueForKey:(NSString *)key defalutValue:(NSDictionary *)defaultValue;
26 | - (NSDictionary *)mf_dictionaryValueForKey:(NSString *)key;
27 |
28 | @end
29 |
--------------------------------------------------------------------------------
/ios/rrwallet/Category/RCCTabBarController+Swizzle.h:
--------------------------------------------------------------------------------
1 | //
2 | // RCCTabBarController+Swizzle.h
3 | // rrwallet
4 | //
5 | // Created by muhuai on 2018/3/23.
6 | // Copyright © 2018年 Facebook. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 |
12 | @interface RCCTabBarController (Swizzle)
13 |
14 | @end
15 |
--------------------------------------------------------------------------------
/ios/rrwallet/Category/RCCViewController+Swizzle.h:
--------------------------------------------------------------------------------
1 | //
2 | // RCCViewController+Swizzle.h
3 | // rrwallet
4 | //
5 | // Created by muhuai on 2018/8/3.
6 | // Copyright © 2018 Facebook. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 |
12 | @interface RCCViewController (Swizzle)
13 | @end
14 |
--------------------------------------------------------------------------------
/ios/rrwallet/Category/RCTStatusBarManager+Swizzle.h:
--------------------------------------------------------------------------------
1 | //
2 | // RCTStatusBarManager+Swizzle.h
3 | // rrwallet
4 | //
5 | // Created by muhuai on 2018/8/4.
6 | // Copyright © 2018 Facebook. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 |
12 | @interface RCTStatusBarManager (Swizzle)
13 |
14 | @end
15 |
--------------------------------------------------------------------------------
/ios/rrwallet/Category/RCTStatusBarManager+Swizzle.m:
--------------------------------------------------------------------------------
1 | //
2 | // RCTStatusBarManager+Swizzle.m
3 | // rrwallet
4 | //
5 | // Created by muhuai on 2018/8/4.
6 | // Copyright © 2018 Facebook. All rights reserved.
7 | //
8 |
9 | #import "RCTStatusBarManager+Swizzle.h"
10 | #import
11 |
12 | @implementation RCTStatusBarManager (Swizzle)
13 |
14 | + (void)load {
15 | static dispatch_once_t onceToken;
16 | dispatch_once(&onceToken, ^{
17 | RCTSwapInstanceMethods([RCTStatusBarManager class], @selector(setStyle:animated:), @selector(df_setStyle:animated:));
18 | RCTSwapInstanceMethods([RCTStatusBarManager class], @selector(setHidden:withAnimation:), @selector(df_setHidden:withAnimation:));
19 | });
20 | }
21 |
22 | - (void)df_setStyle:(UIStatusBarStyle)statusBarStyle animated:(BOOL)animated {
23 | [RCTSharedApplication() setStatusBarStyle:statusBarStyle animated:animated];
24 | }
25 |
26 | - (void)df_setHidden:(BOOL)hidden withAnimation:(UIStatusBarAnimation)animation {
27 | [RCTSharedApplication() setStatusBarHidden:hidden withAnimation:animation];
28 | }
29 | @end
30 |
--------------------------------------------------------------------------------
/ios/rrwallet/Images.xcassets/AppIcon.appiconset/1024X1024.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/ios/rrwallet/Images.xcassets/AppIcon.appiconset/1024X1024.png
--------------------------------------------------------------------------------
/ios/rrwallet/Images.xcassets/AppIcon.appiconset/120X120-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/ios/rrwallet/Images.xcassets/AppIcon.appiconset/120X120-1.png
--------------------------------------------------------------------------------
/ios/rrwallet/Images.xcassets/AppIcon.appiconset/120X120.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/ios/rrwallet/Images.xcassets/AppIcon.appiconset/120X120.png
--------------------------------------------------------------------------------
/ios/rrwallet/Images.xcassets/AppIcon.appiconset/180x180.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/ios/rrwallet/Images.xcassets/AppIcon.appiconset/180x180.png
--------------------------------------------------------------------------------
/ios/rrwallet/Images.xcassets/AppIcon.appiconset/40X40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/ios/rrwallet/Images.xcassets/AppIcon.appiconset/40X40.png
--------------------------------------------------------------------------------
/ios/rrwallet/Images.xcassets/AppIcon.appiconset/58X58.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/ios/rrwallet/Images.xcassets/AppIcon.appiconset/58X58.png
--------------------------------------------------------------------------------
/ios/rrwallet/Images.xcassets/AppIcon.appiconset/60X60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/ios/rrwallet/Images.xcassets/AppIcon.appiconset/60X60.png
--------------------------------------------------------------------------------
/ios/rrwallet/Images.xcassets/AppIcon.appiconset/80X80.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/ios/rrwallet/Images.xcassets/AppIcon.appiconset/80X80.png
--------------------------------------------------------------------------------
/ios/rrwallet/Images.xcassets/AppIcon.appiconset/87X87.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/ios/rrwallet/Images.xcassets/AppIcon.appiconset/87X87.png
--------------------------------------------------------------------------------
/ios/rrwallet/Images.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/ios/rrwallet/Images.xcassets/cloud-receive.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "cloud-receive.@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "cloud-receive.@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/ios/rrwallet/Images.xcassets/cloud-receive.imageset/cloud-receive.@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/ios/rrwallet/Images.xcassets/cloud-receive.imageset/cloud-receive.@2x.png
--------------------------------------------------------------------------------
/ios/rrwallet/Images.xcassets/cloud-receive.imageset/cloud-receive.@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/ios/rrwallet/Images.xcassets/cloud-receive.imageset/cloud-receive.@3x.png
--------------------------------------------------------------------------------
/ios/rrwallet/Images.xcassets/cloud-transfer.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "cloud-transfer@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "cloud-transfer@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/ios/rrwallet/Images.xcassets/cloud-transfer.imageset/cloud-transfer@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/ios/rrwallet/Images.xcassets/cloud-transfer.imageset/cloud-transfer@2x.png
--------------------------------------------------------------------------------
/ios/rrwallet/Images.xcassets/cloud-transfer.imageset/cloud-transfer@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/ios/rrwallet/Images.xcassets/cloud-transfer.imageset/cloud-transfer@3x.png
--------------------------------------------------------------------------------
/ios/rrwallet/Images.xcassets/hd-receive.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "hd-receive@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "hd-receive@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/ios/rrwallet/Images.xcassets/hd-receive.imageset/hd-receive@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/ios/rrwallet/Images.xcassets/hd-receive.imageset/hd-receive@2x.png
--------------------------------------------------------------------------------
/ios/rrwallet/Images.xcassets/hd-receive.imageset/hd-receive@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/ios/rrwallet/Images.xcassets/hd-receive.imageset/hd-receive@3x.png
--------------------------------------------------------------------------------
/ios/rrwallet/Images.xcassets/hd-transfer.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "hd-transfer@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "hd-transfer@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/ios/rrwallet/Images.xcassets/hd-transfer.imageset/hd-transfer@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/ios/rrwallet/Images.xcassets/hd-transfer.imageset/hd-transfer@2x.png
--------------------------------------------------------------------------------
/ios/rrwallet/Images.xcassets/hd-transfer.imageset/hd-transfer@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/ios/rrwallet/Images.xcassets/hd-transfer.imageset/hd-transfer@3x.png
--------------------------------------------------------------------------------
/ios/rrwallet/LaunchScreen.xib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/ios/rrwallet/RNBridgeModule/RRRNAnalysis.h:
--------------------------------------------------------------------------------
1 | //
2 | // RRRNAnalysis.h
3 | // rrwallet
4 | //
5 | // Created by muhuai on 2018/11/19.
6 | // Copyright © 2018 Facebook. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 |
12 | NS_ASSUME_NONNULL_BEGIN
13 |
14 | @interface RRRNAnalysis : NSObject
15 |
16 |
17 | @end
18 |
19 | NS_ASSUME_NONNULL_END
20 |
--------------------------------------------------------------------------------
/ios/rrwallet/RNBridgeModule/RRRNAnalysis.m:
--------------------------------------------------------------------------------
1 | //
2 | // RRRNAnalysis.m
3 | // rrwallet
4 | //
5 | // Created by muhuai on 2018/11/19.
6 | // Copyright © 2018 Facebook. All rights reserved.
7 | //
8 |
9 | #import "RRRNAnalysis.h"
10 | #import
11 |
12 | @implementation RRRNAnalysis
13 | RCT_EXPORT_MODULE();
14 |
15 | RCT_REMAP_METHOD(event, event:(NSString *)event attributes:(NSDictionary *)attributes) {
16 | if (attributes.count == 0) {
17 | [MobClick event:event];
18 | } else {
19 | [MobClick event:event attributes:attributes];
20 | }
21 | }
22 |
23 | RCT_REMAP_METHOD(counter, event:(NSString *)event attributes:(NSDictionary *)attributes counter:(NSString *)counter) {
24 | [MobClick event:event attributes:attributes counter:counter.intValue];
25 | }
26 |
27 | @end
28 |
--------------------------------------------------------------------------------
/ios/rrwallet/RNBridgeModule/RRRNBitcoin.h:
--------------------------------------------------------------------------------
1 | //
2 | // DFRNBTCWallet.h
3 | // rrwallet
4 | //
5 | // Created by muhuai on 2018/4/11.
6 | // Copyright © 2018年 Facebook. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 |
12 | @interface RRRNBitcoin : NSObject
13 |
14 | @end
15 |
--------------------------------------------------------------------------------
/ios/rrwallet/RNBridgeModule/RRRNDevice.h:
--------------------------------------------------------------------------------
1 | //
2 | // DFRNDevice.h
3 | // rrwallet
4 | //
5 | // Created by muhuai on 2018/3/1.
6 | // Copyright © 2018年 Facebook. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 |
12 | @interface RRRNDevice : NSObject
13 |
14 | @end
15 |
--------------------------------------------------------------------------------
/ios/rrwallet/RNBridgeModule/RRRNEthereum.h:
--------------------------------------------------------------------------------
1 | //
2 | // DFRNWallet.h
3 | // rrwallet
4 | //
5 | // Created by muhuai on 2018/2/25.
6 | // Copyright © 2018年 Facebook. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 |
12 | @interface RRRNEthereum : NSObject
13 |
14 | @end
15 |
--------------------------------------------------------------------------------
/ios/rrwallet/RNBridgeModule/RRRNNetwork.h:
--------------------------------------------------------------------------------
1 | //
2 | // MFNetwork.h
3 | // rrwallet
4 | //
5 | // Created by muhuai on 2018/2/16.
6 | // Copyright © 2018年 Facebook. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 |
12 | @interface RRRNNetwork : NSObject
13 |
14 | @end
15 |
--------------------------------------------------------------------------------
/ios/rrwallet/RNBridgeModule/RRRNQRDecoder.h:
--------------------------------------------------------------------------------
1 | //
2 | // DFRNQRDecoder.h
3 | // rrwallet
4 | //
5 | // Created by 杨然 on 2018/10/31.
6 | // Copyright © 2018 Facebook. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 |
12 | @interface RRRNQRDecoder : NSObject
13 |
14 | @end
15 |
--------------------------------------------------------------------------------
/ios/rrwallet/RNBridgeModule/RRRNQRDecoder.m:
--------------------------------------------------------------------------------
1 | //
2 | // DFRNQRDecoder.m
3 | // rrwallet
4 | //
5 | // Created by 杨然 on 2018/10/31.
6 | // Copyright © 2018 Facebook. All rights reserved.
7 | //
8 |
9 | #import "RRRNQRDecoder.h"
10 | #import
11 | #import
12 |
13 | @implementation RRRNQRDecoder
14 |
15 | RCT_EXPORT_MODULE();
16 |
17 | RCT_REMAP_METHOD(decode, decode:(NSString *)path WithResolver:(RCTPromiseResolveBlock)resolve
18 | rejecter:(RCTPromiseRejectBlock)reject) {
19 | UIImage *pickImage = [[UIImage alloc] initWithContentsOfFile:[path stringByReplacingOccurrencesOfString:@"file://" withString:@""]];
20 | NSData *imageData = UIImagePNGRepresentation(pickImage);
21 | CIImage *ciImage = [CIImage imageWithData:imageData];
22 | CIContext *context = [CIContext contextWithOptions:@{kCIContextUseSoftwareRenderer : @(YES)}]; // 软件渲染
23 | CIDetector *detector = [CIDetector detectorOfType: CIDetectorTypeQRCode context:context options: @{CIDetectorAccuracy : CIDetectorAccuracyLow}];
24 |
25 | NSArray *feature = [detector featuresInImage:ciImage];
26 | if (feature.count) {
27 | resolve(((CIQRCodeFeature *)feature[0]).messageString);
28 | } else {
29 | reject(@"-100", @"未识别到二维码", [NSError errorWithDomain:NSURLErrorDomain code:-100 userInfo:@{NSLocalizedDescriptionKey: @"未识别到二维码"}]);
30 | }
31 | }
32 |
33 | @end
34 |
--------------------------------------------------------------------------------
/ios/rrwallet/RNBridgeModule/RRRNQuickAction.h:
--------------------------------------------------------------------------------
1 | //
2 | // RRRNQuickAction.h
3 | // rrwallet
4 | //
5 | // Created by muhuai on 2019/4/23.
6 | // Copyright © 2019 Facebook. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 | #import
12 | NS_ASSUME_NONNULL_BEGIN
13 |
14 | @interface RRRNQuickAction : RCTEventEmitter
15 |
16 | + (void)onQuickActionPress:(UIApplicationShortcutItem *) shortcutItem completionHandler:(void (^)(BOOL succeeded)) completionHandler;
17 |
18 | @end
19 |
20 | NS_ASSUME_NONNULL_END
21 |
--------------------------------------------------------------------------------
/ios/rrwallet/RNBridgeModule/RRRNSplash.h:
--------------------------------------------------------------------------------
1 | //
2 | // RRRNSplash.h
3 | // rrwallet
4 | //
5 | // Created by muhuai on 2018/12/19.
6 | // Copyright © 2018 Facebook. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 | #import
12 | #import
13 |
14 | NS_ASSUME_NONNULL_BEGIN
15 |
16 | @interface RRRNSplash : NSObject
17 |
18 | + (void)show;
19 |
20 | @end
21 |
22 | NS_ASSUME_NONNULL_END
23 |
--------------------------------------------------------------------------------
/ios/rrwallet/Resources/bitrenren_ssl.cer:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/ios/rrwallet/Resources/bitrenren_ssl.cer
--------------------------------------------------------------------------------
/ios/rrwallet/Service/BlockChain/Bitcoin/RRBTCutxo.h:
--------------------------------------------------------------------------------
1 | //
2 | // RRBTCTransactionOutput.h
3 | // rrwallet
4 | //
5 | // Created by muhuai on 2018/11/27.
6 | // Copyright © 2018 Facebook. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 |
12 | NS_ASSUME_NONNULL_BEGIN
13 |
14 | @interface RRBTCutxo : NSObject
15 |
16 | @property (nonatomic, copy) NSString *address;
17 | @property (nonatomic, copy) NSString *path;
18 | @property (nonatomic, copy) NSString *txid;
19 | @property (nonatomic, copy) NSString *rawSigHash;
20 | @property (nonatomic) NSInteger vout;
21 | @property (nonatomic, copy) NSString *scriptPubKey;
22 | @property (nonatomic) float amount;
23 | @property (nonatomic) NSInteger satoshis;
24 | @property (nonatomic) NSInteger height;
25 | @property (nonatomic) NSInteger confirmations;
26 | @property (nonatomic) NSInteger sigHashType;
27 |
28 | @property (nonatomic, strong, readonly) BTCScript *script;
29 |
30 | - (instancetype)initWithDictionary:(NSDictionary *)dictionary;
31 |
32 | @end
33 |
34 | NS_ASSUME_NONNULL_END
35 |
--------------------------------------------------------------------------------
/ios/rrwallet/Service/BlockChain/Bitcoin/RRBTCutxo.m:
--------------------------------------------------------------------------------
1 | //
2 | // RRBTCTransactionOutput.m
3 | // rrwallet
4 | //
5 | // Created by muhuai on 2018/11/27.
6 | // Copyright © 2018 Facebook. All rights reserved.
7 | //
8 |
9 | #import "RRBTCutxo.h"
10 |
11 | @interface RRBTCutxo()
12 |
13 | @property (nonatomic, strong, readwrite) BTCScript *script;
14 |
15 | @end
16 | @implementation RRBTCutxo
17 |
18 | - (instancetype)initWithDictionary:(NSDictionary *)dictionary {
19 | self = [super init];
20 | if (self) {
21 | self.address = dictionary[@"address"];
22 | self.path = dictionary[@"path"];
23 | self.satoshis = [dictionary[@"satoshis"] longLongValue];
24 | self.amount = [dictionary[@"amount"] floatValue];
25 | self.scriptPubKey = dictionary[@"scriptPubKey"];
26 | self.vout = [dictionary[@"vout"] intValue];
27 | self.confirmations = [dictionary[@"confirmations"] integerValue];
28 | self.txid = dictionary[@"txid"];
29 | self.rawSigHash = dictionary[@"rawSigHash"];
30 | self.sigHashType = [dictionary[@"sigHashType"] integerValue];
31 |
32 | self.script = [[BTCScript alloc] initWithData:BTCDataFromHex(self.scriptPubKey)];
33 | }
34 |
35 | return self;
36 | }
37 | @end
38 |
--------------------------------------------------------------------------------
/ios/rrwallet/Service/BlockChain/DFBaseWallet.h:
--------------------------------------------------------------------------------
1 | //
2 | // DFWallet.h
3 | // rrwallet
4 | //
5 | // Created by muhuai on 2018/4/2.
6 | // Copyright © 2018年 Facebook. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | typedef NS_ENUM(NSUInteger, DFWalletType) {
12 | DFWalletTypeEthereum = 1,
13 | DFWalletTypeBitcoin = 2
14 | };
15 |
16 | typedef enum : NSUInteger {
17 | DFWalletSourceMnemonic,
18 | DFWalletSourcePrivateKey,
19 | DFWalletSourceKeyStore,
20 | } DFWalletSource;
21 |
22 |
23 | @interface DFBaseWallet: NSObject
24 | @property (nonatomic, strong) NSString *walletID;
25 | @property (nonatomic, assign) DFWalletType type;
26 | @property (nonatomic, assign) DFWalletSource source;
27 |
28 | - (instancetype)initWithDictionary:(NSDictionary *)dict;
29 |
30 | + (instancetype)walletWithID:(NSString *)walletID;
31 |
32 | + (instancetype)walletWithID:(NSString *)walletID source:(DFWalletSource)source;
33 |
34 | - (NSDictionary *)toDictionary;
35 |
36 | - (NSString *)mnemonicWithPassword:(NSString *)pwd;
37 |
38 | - (BOOL)unlock:(NSString *)pwd;
39 |
40 | - (void)lock;
41 |
42 | - (void)saveSeed:(NSData *)seed password:(NSString *)pwd;
43 |
44 | - (NSData *)seedWithPassword:(NSString *)pwd;
45 |
46 | - (void)dropSeedWithPassword:(NSString *)pwd;
47 | @end
48 |
--------------------------------------------------------------------------------
/ios/rrwallet/Service/BlockChain/DFWalletDefine.h:
--------------------------------------------------------------------------------
1 | //
2 | // DFWalletDefine.h
3 | // rrwallet
4 | //
5 | // Created by muhuai on 2018/4/20.
6 | // Copyright © 2018年 Facebook. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | typedef enum : NSUInteger {
12 | DFWalletEnvRelease = 1,
13 | DFWalletEnvDebug = 3
14 | } DFWalletEnv;
15 |
16 |
--------------------------------------------------------------------------------
/ios/rrwallet/Service/BlockChain/Ethereum/DFContractTransaction.h:
--------------------------------------------------------------------------------
1 | //
2 | // DFContractTransaction.h
3 | // rrwallet
4 | //
5 | // Created by muhuai on 2018/8/19.
6 | // Copyright © 2018 Facebook. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 |
12 | @interface DFContractTransaction : NSObject
13 |
14 | @property (nonatomic, assign) NSInteger retryCount;
15 | @property (nonatomic, assign) NSInteger nonce;
16 |
17 | @property (nonatomic, strong, readonly) NSString *from;
18 | @property (nonatomic, strong, readonly) NSString *contract;
19 | @property (nonatomic, strong, readonly) NSString *amount;
20 | @property (nonatomic, strong, readonly) NSString *data;
21 | @property (nonatomic, strong, readonly) NSString *gasLimit;
22 | @property (nonatomic, strong, readonly) NSString *gasPrice;
23 | @property (nonatomic, assign, readonly) NSInteger chainID;
24 |
25 | - (instancetype)initWithFrom:(NSString *)from
26 | contract:(NSString *)contract
27 | amount:(NSString *)amount
28 | data:(NSString *)data
29 | gasLimit:(NSString *)gasLimit
30 | gasPrice:(NSString *)gasPrice
31 | nonce:(NSInteger)nonce
32 | chainID:(NSInteger)chain;
33 |
34 | - (Transaction *)origTransaction;
35 |
36 | @end
37 |
--------------------------------------------------------------------------------
/ios/rrwallet/Service/BlockChain/Ethereum/DFEthereumRPCProvider.h:
--------------------------------------------------------------------------------
1 | //
2 | // DFEthereumJsonPRCClient.h
3 | // rrwallet
4 | //
5 | // Created by muhuai on 2018/3/1.
6 | // Copyright © 2018年 Facebook. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "DFWalletDefine.h"
11 | @class DFContractTransaction;
12 |
13 | typedef void (^DFEthereumJsonRPCCompletion)(NSDictionary *result, NSError *error);
14 |
15 | typedef enum : unsigned char {
16 | DFEthereumTypeHomestead = 0x01,
17 | DFEthereumTypeMorden = 0x02,
18 | DFEthereumTypeRopsten = 0x03,
19 | DFEthereumTypeRinkeby = 0x04
20 | } DFEthereumType;
21 |
22 | @interface DFEthereumRPCProvider : NSObject
23 |
24 | @property (nonatomic, assign, readonly) DFWalletEnv env;
25 |
26 | - (instancetype)initWithURL:(NSString *)url;
27 |
28 | - (instancetype)initWithEnv:(DFWalletEnv)env;
29 |
30 | - (void)getTransactionCount:(NSString *)address completion:(void (^)(NSInteger count, NSError *error))completion;
31 |
32 | - (void)sendContractTransaction:(DFContractTransaction *)transcation
33 | walletID:(NSString *)walletID
34 | broadcast:(BOOL)broadcast
35 | password:(NSString *)password
36 | completion:(void (^)(NSString *txHash, NSInteger nonce, NSError *error))completion;
37 | @end
38 |
--------------------------------------------------------------------------------
/ios/rrwallet/Service/Network/DFHTTPRequestSerializer.h:
--------------------------------------------------------------------------------
1 | //
2 | // DFHTTPRequestSerializer.h
3 | // rrwallet
4 | //
5 | // Created by muhuai on 2018/3/1.
6 | // Copyright © 2018年 Facebook. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 |
12 | @interface DFHTTPRequestSerializer : AFHTTPRequestSerializer
13 |
14 | @end
15 |
--------------------------------------------------------------------------------
/ios/rrwallet/Service/Network/DFJSONResponseSerializer.h:
--------------------------------------------------------------------------------
1 | //
2 | // MFJSONResponseSerializer.h
3 | // rrwallet
4 | //
5 | // Created by muhuai on 2017/12/28.
6 | // Copyright © 2017年 MH. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface DFJSONResponseSerializer : AFJSONResponseSerializer
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/ios/rrwallet/Service/Network/DFNetworkDefine.h:
--------------------------------------------------------------------------------
1 | //
2 | // DFNetworkDefine.h
3 | // rrwallet
4 | //
5 | // Created by muhuai on 16/7/22.
6 | // Copyright © 2016年 MH. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | typedef void(^DFNetworkJSONCallback)(id jsonObj, NSError *error);
12 | typedef void(^DFNetworkRPCCallback)(id result, NSDictionary *resp, NSError *error);
13 |
14 |
15 |
--------------------------------------------------------------------------------
/ios/rrwallet/Service/Network/DFSecurityPolicy.h:
--------------------------------------------------------------------------------
1 | //
2 | // DFSecurityPolicy.h
3 | // rrwallet
4 | //
5 | // Created by muhuai on 2018/7/24.
6 | // Copyright © 2018 Facebook. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface DFSecurityPolicy : AFSecurityPolicy
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/ios/rrwallet/Service/Network/DFSecurityPolicy.m:
--------------------------------------------------------------------------------
1 | //
2 | // DFSecurityPolicy.m
3 | // rrwallet
4 | //
5 | // Created by muhuai on 2018/7/24.
6 | // Copyright © 2018 Facebook. All rights reserved.
7 | //
8 |
9 | #import "DFSecurityPolicy.h"
10 | @interface DFSecurityPolicy()
11 |
12 | @property (nonatomic, strong) AFSecurityPolicy *innerPolicy;
13 | @end
14 | @implementation DFSecurityPolicy
15 |
16 | - (instancetype)init {
17 | self = [super init];
18 | _innerPolicy = [AFSecurityPolicy defaultPolicy];
19 | return self;
20 | }
21 |
22 | - (BOOL)evaluateServerTrust:(SecTrustRef)serverTrust
23 | forDomain:(nullable NSString *)domain {
24 | if ([domain containsString:@"gateway.d.cash"] || [domain containsString:@"gateway.bitrenren.com"]) {
25 | return [super evaluateServerTrust:serverTrust forDomain:domain];
26 | } else {
27 | return [self.innerPolicy evaluateServerTrust:serverTrust forDomain:domain];
28 | }
29 | }
30 | @end
31 |
--------------------------------------------------------------------------------
/ios/rrwallet/Service/Network/DFUserAgent.h:
--------------------------------------------------------------------------------
1 | //
2 | // DFUserAgent.h
3 | // rrwallet
4 | //
5 | // Created by muhuai on 2018/3/5.
6 | // Copyright © 2018年 Facebook. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface DFUserAgent : NSObject
12 |
13 | + (void)registerUserAgent;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/ios/rrwallet/Service/Network/DFUserAgent.m:
--------------------------------------------------------------------------------
1 | //
2 | // DFUserAgent.m
3 | // rrwallet
4 | //
5 | // Created by muhuai on 2018/3/5.
6 | // Copyright © 2018年 Facebook. All rights reserved.
7 | //
8 |
9 | #import "DFUserAgent.h"
10 | #import
11 |
12 | @implementation DFUserAgent
13 | static NSString *s_origAgent;
14 | + (void)registerUserAgent {
15 | NSString *ua = [self customUserAgent];
16 |
17 | NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:ua, @"UserAgent", ua, @"User-Agent", ua, @"User_Agent", nil];
18 | [[NSUserDefaults standardUserDefaults] registerDefaults:dictionary];
19 | }
20 |
21 | + (NSString *)customUserAgent {
22 |
23 | static dispatch_once_t onceToken;
24 | dispatch_once(&onceToken, ^{
25 | UIWebView *webView = [[UIWebView alloc] init];
26 | s_origAgent = [webView stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"];
27 | });
28 | NSString *ua = [s_origAgent copy];
29 | NSBundle *bundle = [NSBundle bundleForClass:[self class]];
30 |
31 | NSString *marketingVersionNumber = [bundle objectForInfoDictionaryKey:@"CFBundleShortVersionString"];
32 |
33 | ua = [ua stringByAppendingFormat:@" RRWallet/%@", marketingVersionNumber];
34 | return ua;
35 | }
36 |
37 | @end
38 |
--------------------------------------------------------------------------------
/ios/rrwallet/Service/Splash/RRSplashViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // RRSplashViewController.h
3 | // rrwallet
4 | //
5 | // Created by muhuai on 2018/12/19.
6 | // Copyright © 2018 Facebook. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 |
12 | NS_ASSUME_NONNULL_BEGIN
13 |
14 | @interface RRSplashViewController : UIViewController
15 |
16 | - (instancetype)initWithFirstLaunch:(BOOL)isFirstLaunch;
17 |
18 | @end
19 |
20 | NS_ASSUME_NONNULL_END
21 |
--------------------------------------------------------------------------------
/ios/rrwallet/Service/Splash/RRSplashViewController.m:
--------------------------------------------------------------------------------
1 | //
2 | // RRSplashViewController.m
3 | // rrwallet
4 | //
5 | // Created by muhuai on 2018/12/19.
6 | // Copyright © 2018 Facebook. All rights reserved.
7 | //
8 |
9 | #import "RRSplashViewController.h"
10 |
11 | @interface RRSplashViewController ()
12 |
13 | @property (nonatomic, strong) UIImageView *logo;
14 | @property (nonatomic, assign) BOOL isFirstLaunch;
15 |
16 | @end
17 |
18 | @implementation RRSplashViewController
19 |
20 | - (instancetype)initWithFirstLaunch:(BOOL)isFirstLaunch {
21 | self = [super init];
22 | if (self) {
23 | self.isFirstLaunch = isFirstLaunch;
24 | }
25 | return self;
26 | }
27 |
28 | - (void)viewDidLoad {
29 | [super viewDidLoad];
30 |
31 | CGSize window = self.view.frame.size;
32 |
33 | self.view.backgroundColor = [UIColor colorWithRed:255.f / 255 green:255.f / 255 blue:255.f / 255 alpha:1.f];
34 |
35 | if (self.isFirstLaunch) {
36 | } else {
37 | self.logo = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"splash_logo"]];
38 | self.logo.frame = CGRectMake((window.width - self.logo.frame.size.width) / 2, (window.height - self.logo.frame.size.height) / 2 - 100, self.logo.frame.size.width, self.logo.frame.size.height);
39 |
40 | [self.view addSubview:self.logo];
41 | }
42 | }
43 |
44 | - (UIStatusBarStyle)preferredStatusBarStyle{
45 | return UIStatusBarStyleLightContent;
46 | }
47 | @end
48 |
--------------------------------------------------------------------------------
/ios/rrwallet/Service/Wallet/DFETHWallet.h:
--------------------------------------------------------------------------------
1 | //
2 | // DFAccount.h
3 | // rrwallet
4 | //
5 | // Created by muhuai on 2018/2/28.
6 | // Copyright © 2018年 Facebook. All rights reserved.
7 | //
8 |
9 | #import
10 | #import
11 | #import "DFBaseWallet.h"
12 | #import "DFWalletDefine.h"
13 |
14 | @interface DFETHWallet : DFBaseWallet
15 |
16 | @property (nonatomic, strong, readonly) NSString *address;
17 | @property (nonatomic, strong, readonly) NSString *mnemonicPhrase;
18 |
19 | - (instancetype)initRandom;
20 |
21 | - (instancetype)initWithPhrase:(NSString *)phrase;
22 |
23 | - (instancetype)initWithPrivateKey:(NSString *)privateKey;
24 |
25 | + (void)decryptWithKeyStore:(NSString *)keystore password:(NSString *)pwd completion:(void (^)(DFETHWallet *))completion;
26 |
27 | - (BOOL)isVaildPassword:(NSString *)pwd;
28 |
29 | - (void)updatePassword:(NSString *)pwd orig:(NSString *)orig error:(NSError **)error;
30 |
31 | - (void)lock;
32 |
33 | - (NSData *)sign:(Transaction *)transcation password:(NSString *)pwd;
34 |
35 | - (NSData *)toData;
36 |
37 | - (void)getKeyStore:(NSString *)pwd callback:(void (^)(NSString *json))callback;
38 |
39 | - (NSString *)getPrivateKey:(NSString *)pwd;
40 |
41 | @end
42 |
--------------------------------------------------------------------------------
/ios/rrwallet/Service/Wallet/DFWallet.h:
--------------------------------------------------------------------------------
1 | //
2 | // DFWallet.h
3 | // rrwallet
4 | //
5 | // Created by muhuai on 2018/2/28.
6 | // Copyright © 2018年 Facebook. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "DFETHWallet.h"
11 | #import "DFBTCWallet.h"
12 | #import "DFEthereumRPCProvider.h"
13 | #import "DFWalletDefine.h"
14 |
15 | @interface DFWallet : NSObject
16 |
17 | @property (nonatomic, strong, readonly) DFETHWallet *ethAccount;
18 | @property (nonatomic, strong, readonly) NSArray *accounts;
19 | @property (nonatomic, strong, readonly) DFEthereumRPCProvider *rpc;
20 | @property (nonatomic, assign) DFWalletEnv env;
21 | + (instancetype)sharedInstance;
22 |
23 |
24 | @end
25 |
--------------------------------------------------------------------------------
/ios/rrwallet/Service/Wallet/DFWallet.m:
--------------------------------------------------------------------------------
1 |
2 | //
3 | // DFWallet.m
4 | // rrwallet
5 | //
6 | // Created by muhuai on 2018/2/28.
7 | // Copyright © 2018年 Facebook. All rights reserved.
8 | //
9 |
10 | #import "DFWallet.h"
11 | #import
12 | #import
13 | #import "DFETHWallet.h"
14 |
15 | @interface DFWallet()
16 |
17 | @property (nonatomic, strong, readwrite) DFEthereumRPCProvider *rpc;
18 |
19 | @end
20 |
21 | @implementation DFWallet
22 |
23 | + (instancetype)sharedInstance {
24 | static DFWallet *wallet;
25 | static dispatch_once_t onceToken;
26 | dispatch_once(&onceToken, ^{
27 | wallet = [[DFWallet alloc] init];
28 | });
29 |
30 | return wallet;
31 | }
32 |
33 | - (instancetype)init {
34 | self = [super init];
35 | if (self) {
36 |
37 | _env = DFWalletEnvRelease;
38 |
39 | #if WALLET_ENV_DEBUG
40 | _env = DFWalletEnvDebug;
41 | #endif
42 |
43 | #if DEBUG
44 | _env = DFWalletEnvDebug;
45 | #endif
46 |
47 |
48 | _rpc = [[DFEthereumRPCProvider alloc] initWithEnv:_env];
49 | }
50 | return self;
51 | }
52 | @end
53 |
--------------------------------------------------------------------------------
/ios/rrwallet/Service/Wallet/ethers/ethers.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/ios/rrwallet/Service/Wallet/ethers/ethers/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleVersion
20 | $(CURRENT_PROJECT_VERSION)
21 | NSPrincipalClass
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/ios/rrwallet/Service/Wallet/ethers/ethers/ThirdParty/trezor-crypto/macros.h:
--------------------------------------------------------------------------------
1 | #ifndef __MACROS_H__
2 | #define __MACROS_H__
3 |
4 | #define MEMSET_BZERO(p,l) memset((p), 0, (l))
5 |
6 | #endif
7 |
--------------------------------------------------------------------------------
/ios/rrwallet/Service/Wallet/ethers/ethers/ThirdParty/trezor-crypto/ripemd160.h:
--------------------------------------------------------------------------------
1 | #ifndef __RIPEMD160_H__
2 | #define __RIPEMD160_H__
3 |
4 | #include
5 |
6 | typedef struct _RIPEMD160_CTX {
7 | uint32_t total[2]; /*!< number of bytes processed */
8 | uint32_t state[5]; /*!< intermediate digest state */
9 | uint8_t buffer[64]; /*!< data block being processed */
10 | } RIPEMD160_CTX;
11 |
12 | void ripemd160_Init(RIPEMD160_CTX *ctx);
13 | void ripemd160_Update(RIPEMD160_CTX *ctx, const uint8_t *input, uint32_t ilen);
14 | void ripemd160_Final(RIPEMD160_CTX *ctx, uint8_t output[20]);
15 | void ripemd160(const uint8_t *msg, uint32_t msg_len, uint8_t hash[20]);
16 |
17 | #endif
18 |
--------------------------------------------------------------------------------
/ios/rrwallet/Service/Wallet/ethers/ethers/ethers.h:
--------------------------------------------------------------------------------
1 | //
2 | // ethers.h
3 | // ethers
4 | //
5 | // Created by Richard Moore on 2017-01-19.
6 | // Copyright © 2017 Ethers. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | //! Project version number for ethers.
12 | FOUNDATION_EXPORT double ethersVersionNumber;
13 |
14 | //! Project version string for ethers.
15 | FOUNDATION_EXPORT const unsigned char ethersVersionString[];
16 |
17 | #import
18 | #import
19 | #import
20 | #import
21 | #import
22 | #import
23 | #import
24 | #import
25 |
26 | #import
27 | //#import
28 | #import
29 | #import
30 | #import
31 |
32 | #import
33 | //#import
34 | #import
35 | #import
36 |
37 | #import
38 | #import
39 | #import
40 | #import
41 |
--------------------------------------------------------------------------------
/ios/rrwallet/Service/Wallet/ethers/ethers/src/Providers/ApiProviders/EtherchainProvider.h:
--------------------------------------------------------------------------------
1 | /**
2 | * We pretty much cannot use Etherchain in its current state... We need a custom JSON
3 | * parser that will allow us to leave numbers as strings. Etherchain returns numbers
4 | * instead of strings which will greatly overflow NSNumber. I also wonder if the server
5 | * side is actually doing the right thing in these cases anyways...
6 | *
7 | * Do NOT use this class!
8 | */
9 |
10 | #import "ApiProvider.h"
11 |
12 | @interface EtherchainProvider : ApiProvider
13 |
14 | + (Provider*)jsonRpcProviderWithChainId: (ChainId)chainId;
15 |
16 | @end
17 |
--------------------------------------------------------------------------------
/ios/rrwallet/Service/Wallet/ethers/ethers/src/Utilities/Utilities.h:
--------------------------------------------------------------------------------
1 | //
2 | // Utilities.h
3 | // ethers
4 | //
5 | // Created by Richard Moore on 2017-02-01.
6 | // Copyright © 2017 Ethers. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | #import "Hash.h"
12 |
13 | extern NSData* convertIntegerToData(NSUInteger value);
14 |
15 | extern Hash* namehash(NSString *name);
16 |
17 | extern NSString *stripHexZeros(NSString *hexString);
18 |
--------------------------------------------------------------------------------
/ios/rrwallet/Target/rrwallet-inhouse/ExportOptions.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | compileBitcode
6 |
7 | destination
8 | export
9 | manifest
10 |
11 | appURL
12 | $(APP_URL)
13 |
14 | method
15 | ad-hoc
16 | signingStyle
17 | automatic
18 | stripSwiftSymbols
19 |
20 | teamID
21 | 42HK568B5Q
22 | thinning
23 | <none>
24 |
25 |
26 |
--------------------------------------------------------------------------------
/ios/rrwallet/Target/rrwallet-inhouse/rrwallet-inhouse.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | aps-environment
6 | development
7 | com.apple.developer.default-data-protection
8 | NSFileProtectionComplete
9 |
10 |
11 |
--------------------------------------------------------------------------------
/ios/rrwallet/Target/rrwallet/ExportOptions.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | compileBitcode
6 |
7 | destination
8 | export
9 | manifest
10 |
11 | appURL
12 | $(APP_URL)
13 |
14 | method
15 | ad-hoc
16 | signingStyle
17 | automatic
18 | stripSwiftSymbols
19 |
20 | teamID
21 | SF34XQFTXH
22 | thinning
23 | <none>
24 |
25 |
26 |
--------------------------------------------------------------------------------
/ios/rrwallet/Target/rrwallet/rrwallet.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | aps-environment
6 | development
7 | com.apple.developer.default-data-protection
8 | NSFileProtectionComplete
9 |
10 |
11 |
--------------------------------------------------------------------------------
/ios/rrwallet/main.m:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) 2015-present, Facebook, Inc.
3 | * All rights reserved.
4 | *
5 | * This source code is licensed under the BSD-style license found in the
6 | * LICENSE file in the root directory of this source tree. An additional grant
7 | * of patent rights can be found in the PATENTS file in the same directory.
8 | */
9 |
10 | #import
11 |
12 | #import "AppDelegate.h"
13 |
14 | int main(int argc, char * argv[]) {
15 | @autoreleasepool {
16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/jsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "experimentalDecorators": true,
4 | "allowJs": true,
5 | },
6 | "include": [
7 | "src/**/*",
8 | "index.js"
9 | ],
10 | }
--------------------------------------------------------------------------------
/metro.config.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Metro configuration for React Native
3 | * https://github.com/facebook/react-native
4 | *
5 | * @format
6 | */
7 |
8 | module.exports = {
9 | transformer: {
10 | getTransformOptions: async () => ({
11 | transform: {
12 | experimentalImportSupport: false,
13 | inlineRequires: false,
14 | resetCache: true
15 | },
16 | }),
17 | },
18 | };
--------------------------------------------------------------------------------
/resources/iconfont/iconfont.js:
--------------------------------------------------------------------------------
1 | const cheerio = require('cheerio')
2 | const fs = require('fs')
3 | const path = require('path');
4 | const pwd = process.cwd();
5 |
6 | const json = {}
7 | const html = fs.readFileSync( path.resolve(pwd,'resources/iconfont/demo_unicode.html')).toString()
8 | const $ = cheerio.load(html)
9 |
10 | var lis = $('.icon_lists.clear').children().each((i, el) => {
11 | let name = $(el).children('.name').text()
12 | let t = name.lastIndexOf('_')
13 | if (t > 0) {
14 | name = name.substr(0, t)
15 | }
16 |
17 | let code = $(el).children('.code').text()
18 | if (code.length <= 3) {
19 | console.warn()
20 | return
21 | }
22 | code = parseInt("0x" + code.substring(3, code.length - 1))
23 |
24 |
25 | json[name] = code
26 | });
27 |
28 | try{
29 | fs.writeFileSync( path.resolve(pwd ,'resources/iconfont/iconfont.json'), JSON.stringify(json), 'utf8');
30 | }catch(e){
31 | console.log('生成iconfont映射文件失败', e);
32 | }
33 |
--------------------------------------------------------------------------------
/resources/iconfont/iconfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/iconfont/iconfont.ttf
--------------------------------------------------------------------------------
/resources/img/empty/empty_recorder@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/empty/empty_recorder@2x.png
--------------------------------------------------------------------------------
/resources/img/empty/empty_recorder@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/empty/empty_recorder@3x.png
--------------------------------------------------------------------------------
/resources/img/empty/network_error@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/empty/network_error@2x.png
--------------------------------------------------------------------------------
/resources/img/empty/network_error@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/empty/network_error@3x.png
--------------------------------------------------------------------------------
/resources/img/home/logo@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/home/logo@2x.png
--------------------------------------------------------------------------------
/resources/img/home/logo@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/home/logo@3x.png
--------------------------------------------------------------------------------
/resources/img/home/touch-guid@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/home/touch-guid@2x.png
--------------------------------------------------------------------------------
/resources/img/home/touch-guid@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/home/touch-guid@3x.png
--------------------------------------------------------------------------------
/resources/img/icon/alert-error@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/icon/alert-error@2x.png
--------------------------------------------------------------------------------
/resources/img/icon/alert-error@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/icon/alert-error@3x.png
--------------------------------------------------------------------------------
/resources/img/icon/alert-success@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/icon/alert-success@2x.png
--------------------------------------------------------------------------------
/resources/img/icon/alert-success@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/icon/alert-success@3x.png
--------------------------------------------------------------------------------
/resources/img/icon/alert-warning@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/icon/alert-warning@2x.png
--------------------------------------------------------------------------------
/resources/img/icon/alert-warning@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/icon/alert-warning@3x.png
--------------------------------------------------------------------------------
/resources/img/icon/arrow-down-triangle@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/icon/arrow-down-triangle@2x.png
--------------------------------------------------------------------------------
/resources/img/icon/arrow-down-triangle@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/icon/arrow-down-triangle@3x.png
--------------------------------------------------------------------------------
/resources/img/icon/arrow-down@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/icon/arrow-down@3x.png
--------------------------------------------------------------------------------
/resources/img/icon/arrow-right@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/icon/arrow-right@2x.png
--------------------------------------------------------------------------------
/resources/img/icon/arrow-right@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/icon/arrow-right@3x.png
--------------------------------------------------------------------------------
/resources/img/icon/arrow-up-solid-round@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/icon/arrow-up-solid-round@2x.png
--------------------------------------------------------------------------------
/resources/img/icon/arrow-up-solid-round@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/icon/arrow-up-solid-round@3x.png
--------------------------------------------------------------------------------
/resources/img/icon/arrow-up@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/icon/arrow-up@2x.png
--------------------------------------------------------------------------------
/resources/img/icon/arrow-up@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/icon/arrow-up@3x.png
--------------------------------------------------------------------------------
/resources/img/icon/arrow_down@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/icon/arrow_down@2x.png
--------------------------------------------------------------------------------
/resources/img/icon/arrow_down@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/icon/arrow_down@3x.png
--------------------------------------------------------------------------------
/resources/img/icon/arrow_up@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/icon/arrow_up@2x.png
--------------------------------------------------------------------------------
/resources/img/icon/arrow_up@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/icon/arrow_up@3x.png
--------------------------------------------------------------------------------
/resources/img/icon/asset_invisual_white@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/icon/asset_invisual_white@2x.png
--------------------------------------------------------------------------------
/resources/img/icon/asset_invisual_white@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/icon/asset_invisual_white@3x.png
--------------------------------------------------------------------------------
/resources/img/icon/asset_visual_white@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/icon/asset_visual_white@2x.png
--------------------------------------------------------------------------------
/resources/img/icon/asset_visual_white@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/icon/asset_visual_white@3x.png
--------------------------------------------------------------------------------
/resources/img/icon/check_selected@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/icon/check_selected@2x.png
--------------------------------------------------------------------------------
/resources/img/icon/check_selected@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/icon/check_selected@3x.png
--------------------------------------------------------------------------------
/resources/img/icon/checked@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/icon/checked@2x.png
--------------------------------------------------------------------------------
/resources/img/icon/checked@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/icon/checked@3x.png
--------------------------------------------------------------------------------
/resources/img/icon/close@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/icon/close@2x.png
--------------------------------------------------------------------------------
/resources/img/icon/close@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/icon/close@3x.png
--------------------------------------------------------------------------------
/resources/img/icon/copy@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/icon/copy@2x.png
--------------------------------------------------------------------------------
/resources/img/icon/copy@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/icon/copy@3x.png
--------------------------------------------------------------------------------
/resources/img/icon/dotted-line-thin@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/icon/dotted-line-thin@2x.png
--------------------------------------------------------------------------------
/resources/img/icon/dotted-line-thin@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/icon/dotted-line-thin@3x.png
--------------------------------------------------------------------------------
/resources/img/icon/icon_nav_add@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/icon/icon_nav_add@2x.png
--------------------------------------------------------------------------------
/resources/img/icon/icon_nav_add@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/icon/icon_nav_add@3x.png
--------------------------------------------------------------------------------
/resources/img/icon/loading-circle@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/icon/loading-circle@2x.png
--------------------------------------------------------------------------------
/resources/img/icon/loading-circle@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/icon/loading-circle@3x.png
--------------------------------------------------------------------------------
/resources/img/icon/loading-icon@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/icon/loading-icon@2x.png
--------------------------------------------------------------------------------
/resources/img/icon/loading-icon@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/icon/loading-icon@3x.png
--------------------------------------------------------------------------------
/resources/img/icon/progress_hud_toast_failed@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/icon/progress_hud_toast_failed@2x.png
--------------------------------------------------------------------------------
/resources/img/icon/progress_hud_toast_failed@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/icon/progress_hud_toast_failed@3x.png
--------------------------------------------------------------------------------
/resources/img/icon/progress_hud_toast_success@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/icon/progress_hud_toast_success@2x.png
--------------------------------------------------------------------------------
/resources/img/icon/progress_hud_toast_success@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/icon/progress_hud_toast_success@3x.png
--------------------------------------------------------------------------------
/resources/img/icon/pwd_lv0@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/icon/pwd_lv0@2x.png
--------------------------------------------------------------------------------
/resources/img/icon/pwd_lv0@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/icon/pwd_lv0@3x.png
--------------------------------------------------------------------------------
/resources/img/icon/pwd_lv2@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/icon/pwd_lv2@2x.png
--------------------------------------------------------------------------------
/resources/img/icon/pwd_lv2@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/icon/pwd_lv2@3x.png
--------------------------------------------------------------------------------
/resources/img/icon/pwd_lv3@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/icon/pwd_lv3@2x.png
--------------------------------------------------------------------------------
/resources/img/icon/pwd_lv3@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/icon/pwd_lv3@3x.png
--------------------------------------------------------------------------------
/resources/img/icon/pwd_lv4@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/icon/pwd_lv4@2x.png
--------------------------------------------------------------------------------
/resources/img/icon/pwd_lv4@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/icon/pwd_lv4@3x.png
--------------------------------------------------------------------------------
/resources/img/icon/question-icon@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/icon/question-icon@2x.png
--------------------------------------------------------------------------------
/resources/img/icon/question-icon@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/icon/question-icon@3x.png
--------------------------------------------------------------------------------
/resources/img/icon/right_arrow@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/icon/right_arrow@2x.png
--------------------------------------------------------------------------------
/resources/img/icon/right_arrow@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/icon/right_arrow@3x.png
--------------------------------------------------------------------------------
/resources/img/icon/rrwallet-logo@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/icon/rrwallet-logo@2x.png
--------------------------------------------------------------------------------
/resources/img/icon/rrwallet-logo@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/icon/rrwallet-logo@3x.png
--------------------------------------------------------------------------------
/resources/img/icon/search@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/icon/search@2x.png
--------------------------------------------------------------------------------
/resources/img/icon/search@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/icon/search@3x.png
--------------------------------------------------------------------------------
/resources/img/icon/unchecked@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/icon/unchecked@2x.png
--------------------------------------------------------------------------------
/resources/img/icon/unchecked@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/icon/unchecked@3x.png
--------------------------------------------------------------------------------
/resources/img/icon/waiting@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/icon/waiting@2x.png
--------------------------------------------------------------------------------
/resources/img/icon/waiting@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/icon/waiting@3x.png
--------------------------------------------------------------------------------
/resources/img/mine/app_update@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/mine/app_update@2x.png
--------------------------------------------------------------------------------
/resources/img/mine/app_update@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/mine/app_update@3x.png
--------------------------------------------------------------------------------
/resources/img/mine/contact@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/mine/contact@2x.png
--------------------------------------------------------------------------------
/resources/img/mine/contact@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/mine/contact@3x.png
--------------------------------------------------------------------------------
/resources/img/mine/empty_contact@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/mine/empty_contact@2x.png
--------------------------------------------------------------------------------
/resources/img/mine/empty_contact@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/mine/empty_contact@3x.png
--------------------------------------------------------------------------------
/resources/img/mine/empty_data@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/mine/empty_data@2x.png
--------------------------------------------------------------------------------
/resources/img/mine/empty_data@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/mine/empty_data@3x.png
--------------------------------------------------------------------------------
/resources/img/mine/empty_message@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/mine/empty_message@2x.png
--------------------------------------------------------------------------------
/resources/img/mine/empty_message@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/mine/empty_message@3x.png
--------------------------------------------------------------------------------
/resources/img/mine/faceid@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/mine/faceid@2x.png
--------------------------------------------------------------------------------
/resources/img/mine/faceid@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/mine/faceid@3x.png
--------------------------------------------------------------------------------
/resources/img/mine/icon-help@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/mine/icon-help@2x.png
--------------------------------------------------------------------------------
/resources/img/mine/icon-help@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/mine/icon-help@3x.png
--------------------------------------------------------------------------------
/resources/img/mine/icon_pic_close@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/mine/icon_pic_close@2x.png
--------------------------------------------------------------------------------
/resources/img/mine/icon_pic_close@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/mine/icon_pic_close@3x.png
--------------------------------------------------------------------------------
/resources/img/mine/mine_about@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/mine/mine_about@2x.png
--------------------------------------------------------------------------------
/resources/img/mine/mine_about@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/mine/mine_about@3x.png
--------------------------------------------------------------------------------
/resources/img/mine/mine_contact@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/mine/mine_contact@2x.png
--------------------------------------------------------------------------------
/resources/img/mine/mine_contact@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/mine/mine_contact@3x.png
--------------------------------------------------------------------------------
/resources/img/mine/mine_create_wallet@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/mine/mine_create_wallet@2x.png
--------------------------------------------------------------------------------
/resources/img/mine/mine_create_wallet@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/mine/mine_create_wallet@3x.png
--------------------------------------------------------------------------------
/resources/img/mine/mine_currency@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/mine/mine_currency@2x.png
--------------------------------------------------------------------------------
/resources/img/mine/mine_currency@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/mine/mine_currency@3x.png
--------------------------------------------------------------------------------
/resources/img/mine/mine_currency_selected@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/mine/mine_currency_selected@2x.png
--------------------------------------------------------------------------------
/resources/img/mine/mine_currency_selected@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/mine/mine_currency_selected@3x.png
--------------------------------------------------------------------------------
/resources/img/mine/mine_display_mnemonic@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/mine/mine_display_mnemonic@2x.png
--------------------------------------------------------------------------------
/resources/img/mine/mine_display_mnemonic@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/mine/mine_display_mnemonic@3x.png
--------------------------------------------------------------------------------
/resources/img/mine/mine_faceid@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/mine/mine_faceid@2x.png
--------------------------------------------------------------------------------
/resources/img/mine/mine_faceid@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/mine/mine_faceid@3x.png
--------------------------------------------------------------------------------
/resources/img/mine/mine_import@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/mine/mine_import@2x.png
--------------------------------------------------------------------------------
/resources/img/mine/mine_import@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/mine/mine_import@3x.png
--------------------------------------------------------------------------------
/resources/img/mine/mine_language@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/mine/mine_language@2x.png
--------------------------------------------------------------------------------
/resources/img/mine/mine_language@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/mine/mine_language@3x.png
--------------------------------------------------------------------------------
/resources/img/mine/mine_lock@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/mine/mine_lock@2x.png
--------------------------------------------------------------------------------
/resources/img/mine/mine_lock@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/mine/mine_lock@3x.png
--------------------------------------------------------------------------------
/resources/img/mine/mine_login@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/mine/mine_login@2x.png
--------------------------------------------------------------------------------
/resources/img/mine/mine_login@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/mine/mine_login@3x.png
--------------------------------------------------------------------------------
/resources/img/mine/mine_message@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/mine/mine_message@2x.png
--------------------------------------------------------------------------------
/resources/img/mine/mine_message@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/mine/mine_message@3x.png
--------------------------------------------------------------------------------
/resources/img/mine/msg/msg_multisig@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/mine/msg/msg_multisig@2x.png
--------------------------------------------------------------------------------
/resources/img/mine/msg/msg_multisig@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/mine/msg/msg_multisig@3x.png
--------------------------------------------------------------------------------
/resources/img/mine/msg/msg_type_wallet@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/mine/msg/msg_type_wallet@2x.png
--------------------------------------------------------------------------------
/resources/img/mine/msg/msg_type_wallet@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/mine/msg/msg_type_wallet@3x.png
--------------------------------------------------------------------------------
/resources/img/mine/msg/notification_shadow@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/mine/msg/notification_shadow@2x.png
--------------------------------------------------------------------------------
/resources/img/mine/msg/notification_shadow@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/mine/msg/notification_shadow@3x.png
--------------------------------------------------------------------------------
/resources/img/mine/touchid@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/mine/touchid@2x.png
--------------------------------------------------------------------------------
/resources/img/mine/touchid@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/mine/touchid@3x.png
--------------------------------------------------------------------------------
/resources/img/nav/msg-black-empty@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/nav/msg-black-empty@2x.png
--------------------------------------------------------------------------------
/resources/img/nav/msg-black-empty@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/nav/msg-black-empty@3x.png
--------------------------------------------------------------------------------
/resources/img/nav/msg-black-full@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/nav/msg-black-full@2x.png
--------------------------------------------------------------------------------
/resources/img/nav/msg-black-full@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/nav/msg-black-full@3x.png
--------------------------------------------------------------------------------
/resources/img/nav/msg-white-empty@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/nav/msg-white-empty@2x.png
--------------------------------------------------------------------------------
/resources/img/nav/msg-white-empty@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/nav/msg-white-empty@3x.png
--------------------------------------------------------------------------------
/resources/img/nav/msg-white-full@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/nav/msg-white-full@2x.png
--------------------------------------------------------------------------------
/resources/img/nav/msg-white-full@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/nav/msg-white-full@3x.png
--------------------------------------------------------------------------------
/resources/img/nav/nav-back@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/nav/nav-back@2x.png
--------------------------------------------------------------------------------
/resources/img/nav/nav-back@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/nav/nav-back@3x.png
--------------------------------------------------------------------------------
/resources/img/nav/nav_close@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/nav/nav_close@2x.png
--------------------------------------------------------------------------------
/resources/img/nav/nav_close@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/nav/nav_close@3x.png
--------------------------------------------------------------------------------
/resources/img/nav/nav_menu@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/nav/nav_menu@2x.png
--------------------------------------------------------------------------------
/resources/img/nav/nav_menu@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/nav/nav_menu@3x.png
--------------------------------------------------------------------------------
/resources/img/nav/nav_menu_bill@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/nav/nav_menu_bill@2x.png
--------------------------------------------------------------------------------
/resources/img/nav/nav_menu_bill@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/nav/nav_menu_bill@3x.png
--------------------------------------------------------------------------------
/resources/img/nav/nav_menu_search@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/nav/nav_menu_search@2x.png
--------------------------------------------------------------------------------
/resources/img/nav/nav_menu_search@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/nav/nav_menu_search@3x.png
--------------------------------------------------------------------------------
/resources/img/nav/nav_menu_set@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/nav/nav_menu_set@2x.png
--------------------------------------------------------------------------------
/resources/img/nav/nav_menu_set@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/nav/nav_menu_set@3x.png
--------------------------------------------------------------------------------
/resources/img/nav/nav_scan@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/nav/nav_scan@2x.png
--------------------------------------------------------------------------------
/resources/img/nav/nav_scan@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/nav/nav_scan@3x.png
--------------------------------------------------------------------------------
/resources/img/qunfabao/alert-error@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/qunfabao/alert-error@2x.png
--------------------------------------------------------------------------------
/resources/img/qunfabao/alert-error@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/qunfabao/alert-error@3x.png
--------------------------------------------------------------------------------
/resources/img/qunfabao/alert-success@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/qunfabao/alert-success@2x.png
--------------------------------------------------------------------------------
/resources/img/qunfabao/alert-success@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/qunfabao/alert-success@3x.png
--------------------------------------------------------------------------------
/resources/img/qunfabao/alert-warning@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/qunfabao/alert-warning@2x.png
--------------------------------------------------------------------------------
/resources/img/qunfabao/alert-warning@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/qunfabao/alert-warning@3x.png
--------------------------------------------------------------------------------
/resources/img/qunfabao/icon_arrow@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/qunfabao/icon_arrow@2x.png
--------------------------------------------------------------------------------
/resources/img/qunfabao/icon_arrow@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/qunfabao/icon_arrow@3x.png
--------------------------------------------------------------------------------
/resources/img/qunfabao/icon_clip@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/qunfabao/icon_clip@2x.png
--------------------------------------------------------------------------------
/resources/img/qunfabao/icon_clip@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/qunfabao/icon_clip@3x.png
--------------------------------------------------------------------------------
/resources/img/qunfabao/icon_cp@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/qunfabao/icon_cp@2x.png
--------------------------------------------------------------------------------
/resources/img/qunfabao/icon_cp@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/qunfabao/icon_cp@3x.png
--------------------------------------------------------------------------------
/resources/img/qunfabao/icon_green@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/qunfabao/icon_green@2x.png
--------------------------------------------------------------------------------
/resources/img/qunfabao/icon_green@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/qunfabao/icon_green@3x.png
--------------------------------------------------------------------------------
/resources/img/qunfabao/icon_list@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/qunfabao/icon_list@2x.png
--------------------------------------------------------------------------------
/resources/img/qunfabao/icon_list@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/qunfabao/icon_list@3x.png
--------------------------------------------------------------------------------
/resources/img/qunfabao/icon_no@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/qunfabao/icon_no@2x.png
--------------------------------------------------------------------------------
/resources/img/qunfabao/icon_no@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/qunfabao/icon_no@3x.png
--------------------------------------------------------------------------------
/resources/img/qunfabao/icon_radio@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/qunfabao/icon_radio@2x.png
--------------------------------------------------------------------------------
/resources/img/qunfabao/icon_radio@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/qunfabao/icon_radio@3x.png
--------------------------------------------------------------------------------
/resources/img/qunfabao/icon_radio_s@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/qunfabao/icon_radio_s@2x.png
--------------------------------------------------------------------------------
/resources/img/qunfabao/icon_radio_s@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/qunfabao/icon_radio_s@3x.png
--------------------------------------------------------------------------------
/resources/img/qunfabao/icon_scan@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/qunfabao/icon_scan@2x.png
--------------------------------------------------------------------------------
/resources/img/qunfabao/icon_scan@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/qunfabao/icon_scan@3x.png
--------------------------------------------------------------------------------
/resources/img/qunfabao/icon_suc@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/qunfabao/icon_suc@2x.png
--------------------------------------------------------------------------------
/resources/img/qunfabao/icon_suc@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/qunfabao/icon_suc@3x.png
--------------------------------------------------------------------------------
/resources/img/qunfabao/icon_x@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/qunfabao/icon_x@2x.png
--------------------------------------------------------------------------------
/resources/img/qunfabao/icon_x@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/qunfabao/icon_x@3x.png
--------------------------------------------------------------------------------
/resources/img/qunfabao/pc_preview@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/qunfabao/pc_preview@2x.png
--------------------------------------------------------------------------------
/resources/img/qunfabao/pc_preview@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/qunfabao/pc_preview@3x.png
--------------------------------------------------------------------------------
/resources/img/qunfabao/roll-out@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/qunfabao/roll-out@2x.png
--------------------------------------------------------------------------------
/resources/img/qunfabao/roll-out@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/qunfabao/roll-out@3x.png
--------------------------------------------------------------------------------
/resources/img/tab/home-normal@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/tab/home-normal@2x.png
--------------------------------------------------------------------------------
/resources/img/tab/home-normal@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/tab/home-normal@3x.png
--------------------------------------------------------------------------------
/resources/img/tab/home-selected@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/tab/home-selected@2x.png
--------------------------------------------------------------------------------
/resources/img/tab/home-selected@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/tab/home-selected@3x.png
--------------------------------------------------------------------------------
/resources/img/tab/loan-normal@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/tab/loan-normal@2x.png
--------------------------------------------------------------------------------
/resources/img/tab/loan-normal@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/tab/loan-normal@3x.png
--------------------------------------------------------------------------------
/resources/img/tab/loan-selected@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/tab/loan-selected@2x.png
--------------------------------------------------------------------------------
/resources/img/tab/loan-selected@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/tab/loan-selected@3x.png
--------------------------------------------------------------------------------
/resources/img/tab/mine-normal@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/tab/mine-normal@2x.png
--------------------------------------------------------------------------------
/resources/img/tab/mine-normal@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/tab/mine-normal@3x.png
--------------------------------------------------------------------------------
/resources/img/tab/mine-selected@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/tab/mine-selected@2x.png
--------------------------------------------------------------------------------
/resources/img/tab/mine-selected@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/tab/mine-selected@3x.png
--------------------------------------------------------------------------------
/resources/img/tab/multisig-normal@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/tab/multisig-normal@2x.png
--------------------------------------------------------------------------------
/resources/img/tab/multisig-normal@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/tab/multisig-normal@3x.png
--------------------------------------------------------------------------------
/resources/img/tab/multisig-selected@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/tab/multisig-selected@2x.png
--------------------------------------------------------------------------------
/resources/img/tab/multisig-selected@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/tab/multisig-selected@3x.png
--------------------------------------------------------------------------------
/resources/img/tab/trade-normal@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/tab/trade-normal@2x.png
--------------------------------------------------------------------------------
/resources/img/tab/trade-normal@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/tab/trade-normal@3x.png
--------------------------------------------------------------------------------
/resources/img/tab/trade-selected@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/tab/trade-selected@2x.png
--------------------------------------------------------------------------------
/resources/img/tab/trade-selected@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/tab/trade-selected@3x.png
--------------------------------------------------------------------------------
/resources/img/tab/wallet-normal@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/tab/wallet-normal@2x.png
--------------------------------------------------------------------------------
/resources/img/tab/wallet-normal@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/tab/wallet-normal@3x.png
--------------------------------------------------------------------------------
/resources/img/tab/wallet-selected@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/tab/wallet-selected@2x.png
--------------------------------------------------------------------------------
/resources/img/tab/wallet-selected@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/tab/wallet-selected@3x.png
--------------------------------------------------------------------------------
/resources/img/tab/x-plan-normal@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/tab/x-plan-normal@2x.png
--------------------------------------------------------------------------------
/resources/img/tab/x-plan-normal@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/tab/x-plan-normal@3x.png
--------------------------------------------------------------------------------
/resources/img/tab/x-plan-selected@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/tab/x-plan-selected@2x.png
--------------------------------------------------------------------------------
/resources/img/tab/x-plan-selected@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/tab/x-plan-selected@3x.png
--------------------------------------------------------------------------------
/resources/img/wallet/arrow_down@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/arrow_down@2x.png
--------------------------------------------------------------------------------
/resources/img/wallet/arrow_down@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/arrow_down@3x.png
--------------------------------------------------------------------------------
/resources/img/wallet/asset_invisual@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/asset_invisual@2x.png
--------------------------------------------------------------------------------
/resources/img/wallet/asset_invisual@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/asset_invisual@3x.png
--------------------------------------------------------------------------------
/resources/img/wallet/asset_visual@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/asset_visual@2x.png
--------------------------------------------------------------------------------
/resources/img/wallet/asset_visual@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/asset_visual@3x.png
--------------------------------------------------------------------------------
/resources/img/wallet/backup_dialog@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/backup_dialog@2x.png
--------------------------------------------------------------------------------
/resources/img/wallet/backup_dialog@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/backup_dialog@3x.png
--------------------------------------------------------------------------------
/resources/img/wallet/close_icon@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/close_icon@2x.png
--------------------------------------------------------------------------------
/resources/img/wallet/close_icon@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/close_icon@3x.png
--------------------------------------------------------------------------------
/resources/img/wallet/erc20@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/erc20@2x.png
--------------------------------------------------------------------------------
/resources/img/wallet/erc20@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/erc20@3x.png
--------------------------------------------------------------------------------
/resources/img/wallet/guide_segwit@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/guide_segwit@2x.png
--------------------------------------------------------------------------------
/resources/img/wallet/guide_segwit@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/guide_segwit@3x.png
--------------------------------------------------------------------------------
/resources/img/wallet/hd_default_img@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/hd_default_img@2x.png
--------------------------------------------------------------------------------
/resources/img/wallet/hd_default_img@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/hd_default_img@3x.png
--------------------------------------------------------------------------------
/resources/img/wallet/icon_wallet_add@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/icon_wallet_add@2x.png
--------------------------------------------------------------------------------
/resources/img/wallet/icon_wallet_add@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/icon_wallet_add@3x.png
--------------------------------------------------------------------------------
/resources/img/wallet/mn_pic__allow@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/mn_pic__allow@2x.png
--------------------------------------------------------------------------------
/resources/img/wallet/mn_pic__allow@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/mn_pic__allow@3x.png
--------------------------------------------------------------------------------
/resources/img/wallet/mn_pic__copy@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/mn_pic__copy@2x.png
--------------------------------------------------------------------------------
/resources/img/wallet/mn_pic__copy@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/mn_pic__copy@3x.png
--------------------------------------------------------------------------------
/resources/img/wallet/mn_pic__forbidden@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/mn_pic__forbidden@2x.png
--------------------------------------------------------------------------------
/resources/img/wallet/mn_pic__forbidden@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/mn_pic__forbidden@3x.png
--------------------------------------------------------------------------------
/resources/img/wallet/mn_pic__photo@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/mn_pic__photo@2x.png
--------------------------------------------------------------------------------
/resources/img/wallet/mn_pic__photo@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/mn_pic__photo@3x.png
--------------------------------------------------------------------------------
/resources/img/wallet/mn_pic__record@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/mn_pic__record@2x.png
--------------------------------------------------------------------------------
/resources/img/wallet/mn_pic__record@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/mn_pic__record@3x.png
--------------------------------------------------------------------------------
/resources/img/wallet/mn_pic__wifi@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/mn_pic__wifi@2x.png
--------------------------------------------------------------------------------
/resources/img/wallet/mn_pic__wifi@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/mn_pic__wifi@3x.png
--------------------------------------------------------------------------------
/resources/img/wallet/multisig-info-founder@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/multisig-info-founder@2x.png
--------------------------------------------------------------------------------
/resources/img/wallet/multisig-info-founder@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/multisig-info-founder@3x.png
--------------------------------------------------------------------------------
/resources/img/wallet/multisig_default_img@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/multisig_default_img@2x.png
--------------------------------------------------------------------------------
/resources/img/wallet/multisig_default_img@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/multisig_default_img@3x.png
--------------------------------------------------------------------------------
/resources/img/wallet/multisig_sign_icon@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/multisig_sign_icon@2x.png
--------------------------------------------------------------------------------
/resources/img/wallet/multisig_sign_icon@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/multisig_sign_icon@3x.png
--------------------------------------------------------------------------------
/resources/img/wallet/multisig_tx_author@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/multisig_tx_author@2x.png
--------------------------------------------------------------------------------
/resources/img/wallet/multisig_tx_author@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/multisig_tx_author@3x.png
--------------------------------------------------------------------------------
/resources/img/wallet/multisig_tx_fail@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/multisig_tx_fail@2x.png
--------------------------------------------------------------------------------
/resources/img/wallet/multisig_tx_fail@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/multisig_tx_fail@3x.png
--------------------------------------------------------------------------------
/resources/img/wallet/multisig_wallet_icon@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/multisig_wallet_icon@2x.png
--------------------------------------------------------------------------------
/resources/img/wallet/multisig_wallet_icon@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/multisig_wallet_icon@3x.png
--------------------------------------------------------------------------------
/resources/img/wallet/normal_address@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/normal_address@2x.png
--------------------------------------------------------------------------------
/resources/img/wallet/normal_address@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/normal_address@3x.png
--------------------------------------------------------------------------------
/resources/img/wallet/quick_group@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/quick_group@2x.png
--------------------------------------------------------------------------------
/resources/img/wallet/quick_group@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/quick_group@3x.png
--------------------------------------------------------------------------------
/resources/img/wallet/quick_put@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/quick_put@2x.png
--------------------------------------------------------------------------------
/resources/img/wallet/quick_put@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/quick_put@3x.png
--------------------------------------------------------------------------------
/resources/img/wallet/quick_qr@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/quick_qr@2x.png
--------------------------------------------------------------------------------
/resources/img/wallet/quick_qr@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/quick_qr@3x.png
--------------------------------------------------------------------------------
/resources/img/wallet/quick_send@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/quick_send@2x.png
--------------------------------------------------------------------------------
/resources/img/wallet/quick_send@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/quick_send@3x.png
--------------------------------------------------------------------------------
/resources/img/wallet/round_check@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/round_check@2x.png
--------------------------------------------------------------------------------
/resources/img/wallet/round_check@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/round_check@3x.png
--------------------------------------------------------------------------------
/resources/img/wallet/round_check_fill@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/round_check_fill@2x.png
--------------------------------------------------------------------------------
/resources/img/wallet/round_check_fill@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/round_check_fill@3x.png
--------------------------------------------------------------------------------
/resources/img/wallet/segwit_address@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/segwit_address@2x.png
--------------------------------------------------------------------------------
/resources/img/wallet/segwit_address@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/segwit_address@3x.png
--------------------------------------------------------------------------------
/resources/img/wallet/shadow-card@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/shadow-card@2x.png
--------------------------------------------------------------------------------
/resources/img/wallet/shadow-card@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/shadow-card@3x.png
--------------------------------------------------------------------------------
/resources/img/wallet/tip_round@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/tip_round@2x.png
--------------------------------------------------------------------------------
/resources/img/wallet/tip_round@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/tip_round@3x.png
--------------------------------------------------------------------------------
/resources/img/wallet/tx_in@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/tx_in@2x.png
--------------------------------------------------------------------------------
/resources/img/wallet/tx_in@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/tx_in@3x.png
--------------------------------------------------------------------------------
/resources/img/wallet/tx_out@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/tx_out@2x.png
--------------------------------------------------------------------------------
/resources/img/wallet/tx_out@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/tx_out@3x.png
--------------------------------------------------------------------------------
/resources/img/wallet/tx_progress_reach@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/tx_progress_reach@2x.png
--------------------------------------------------------------------------------
/resources/img/wallet/tx_progress_reach@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/tx_progress_reach@3x.png
--------------------------------------------------------------------------------
/resources/img/wallet/tx_progress_unreach@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/tx_progress_unreach@2x.png
--------------------------------------------------------------------------------
/resources/img/wallet/tx_progress_unreach@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/tx_progress_unreach@3x.png
--------------------------------------------------------------------------------
/resources/img/wallet/tx_status_failed@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/tx_status_failed@2x.png
--------------------------------------------------------------------------------
/resources/img/wallet/tx_status_failed@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/tx_status_failed@3x.png
--------------------------------------------------------------------------------
/resources/img/wallet/tx_status_progress@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/tx_status_progress@2x.png
--------------------------------------------------------------------------------
/resources/img/wallet/tx_status_progress@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/tx_status_progress@3x.png
--------------------------------------------------------------------------------
/resources/img/wallet/tx_status_success@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/tx_status_success@2x.png
--------------------------------------------------------------------------------
/resources/img/wallet/tx_status_success@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/tx_status_success@3x.png
--------------------------------------------------------------------------------
/resources/img/wallet/wallet_add_asset@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/wallet_add_asset@2x.png
--------------------------------------------------------------------------------
/resources/img/wallet/wallet_add_asset@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/wallet_add_asset@3x.png
--------------------------------------------------------------------------------
/resources/img/wallet/wallet_backup@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/wallet_backup@2x.png
--------------------------------------------------------------------------------
/resources/img/wallet/wallet_backup@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/wallet_backup@3x.png
--------------------------------------------------------------------------------
/resources/img/wallet/wallet_batch@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/wallet_batch@2x.png
--------------------------------------------------------------------------------
/resources/img/wallet/wallet_batch@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/wallet_batch@3x.png
--------------------------------------------------------------------------------
/resources/img/wallet/wallet_copy@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/wallet_copy@2x.png
--------------------------------------------------------------------------------
/resources/img/wallet/wallet_copy@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/wallet_copy@3x.png
--------------------------------------------------------------------------------
/resources/img/wallet/wallet_receive@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/wallet_receive@2x.png
--------------------------------------------------------------------------------
/resources/img/wallet/wallet_receive@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/wallet_receive@3x.png
--------------------------------------------------------------------------------
/resources/img/wallet/wallet_scan@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/wallet_scan@2x.png
--------------------------------------------------------------------------------
/resources/img/wallet/wallet_scan@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/wallet_scan@3x.png
--------------------------------------------------------------------------------
/resources/img/wallet/wallet_screenshot_warning@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/wallet_screenshot_warning@2x.png
--------------------------------------------------------------------------------
/resources/img/wallet/wallet_screenshot_warning@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/wallet_screenshot_warning@3x.png
--------------------------------------------------------------------------------
/resources/img/wallet/wallet_send@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/wallet_send@2x.png
--------------------------------------------------------------------------------
/resources/img/wallet/wallet_send@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/resources/img/wallet/wallet_send@3x.png
--------------------------------------------------------------------------------
/src/component/common/Dialog.js:
--------------------------------------------------------------------------------
1 | import { AlertIOS, AlertAndroid, Alert, Platform } from "react-native";
2 | // import DialogAndroid from 'react-native-dialogs'
3 | import prompt from "react-native-prompt-android";
4 |
5 | class Dialog {
6 | alert = Alert.alert;
7 |
8 | prompt = (title, message, buttons, type, defaultValue) => {
9 | if (Platform.OS == "ios") {
10 | AlertIOS.prompt(title, message, buttons, type, defaultValue);
11 | } else if (Platform.OS == "android") {
12 | prompt(title, message, buttons, {
13 | type: type,
14 | cancelable: false,
15 | defaultValue: defaultValue,
16 | });
17 | // prompt(title, message, buttons, {
18 | // type: type,
19 | // defaultValue: defaultValue,
20 | // })
21 | // DialogAndroid.prompt(title, message, {
22 | // positiveText: 'OK',
23 | // negativeText: 'Cancel',
24 | // keyboardType: 'password',
25 | // defaultValue: defaultValue
26 | // }).then(result => {
27 | // console.log(result)
28 | // })
29 | }
30 | };
31 | }
32 |
33 | export default new Dialog();
34 |
--------------------------------------------------------------------------------
/src/component/common/FlatListLoadMoreView.js:
--------------------------------------------------------------------------------
1 | import React, { Component, PureComponent } from "react";
2 | import { StyleSheet, View, ActivityIndicator, Text } from "react-native";
3 | import PropTypes from "prop-types";
4 | import theme from "../../util/Theme";
5 | import i18n from "../../module/i18n/i18n";
6 |
7 | class FlatListLoadMoreView extends PureComponent {
8 | static propTypes = {
9 | status: PropTypes.oneOf(["empty", "loading", "nomore"]),
10 | text: PropTypes.string,
11 | };
12 |
13 | static defaultProps = {
14 | status: "empty",
15 | text: `- ${i18n.t("common-end-line")} -`,
16 | };
17 |
18 | render() {
19 | if (this.props.status === "empty") {
20 | return ;
21 | }
22 | return (
23 |
24 | {this.props.status === "loading" ? (
25 |
26 | ) : (
27 | {this.props.text}
28 | )}
29 |
30 | );
31 | }
32 | }
33 |
34 | const styles = StyleSheet.create({
35 | container: {
36 | flex: 1,
37 | height: 62,
38 | alignItems: "center",
39 | justifyContent: "center",
40 | },
41 | text: {
42 | fontSize: 12,
43 | color: theme.textColor.mainTitle,
44 | },
45 | });
46 | export default FlatListLoadMoreView;
47 |
--------------------------------------------------------------------------------
/src/component/common/Footer.js:
--------------------------------------------------------------------------------
1 | import React, { Component } from "react";
2 | import { StyleSheet, View } from "react-native";
3 | import device from "../../util/device";
4 |
5 | export default class Footer extends Component {
6 | render() {
7 | return (
8 |
9 | {this.props.children}
10 | {device.isIPhoneX && }
11 |
12 | );
13 | }
14 | }
15 |
16 | const styles = StyleSheet.create({
17 | footer: {
18 | width: "100%",
19 | backgroundColor: "#FFFFFF",
20 | },
21 | container: {
22 | paddingHorizontal: 0,
23 | flexDirection: "row",
24 | justifyContent: "space-between",
25 | },
26 | bottom: {
27 | height: device.iPhoneXSafeArea.bottom,
28 | },
29 | });
30 |
--------------------------------------------------------------------------------
/src/component/common/GrowingTextInput.js:
--------------------------------------------------------------------------------
1 | import React, { Component } from "react";
2 | import { TextInput } from "react-native";
3 | import { observer } from "mobx-react";
4 | import { observable, computed } from "mobx";
5 |
6 | const TEXTINPUT_INITIAL_HEIGHT = -1;
7 | @observer
8 | class GrowingTextInput extends Component {
9 | @observable height = TEXTINPUT_INITIAL_HEIGHT;
10 | @computed get style() {
11 | const outer = this.props.style;
12 | return [outer, this.height === TEXTINPUT_INITIAL_HEIGHT && { height: this.height }];
13 | }
14 | handleInputRef = ref => (this.input = ref);
15 | _onContentSizeChange = e => {
16 | const contentSize = e.nativeEvent.contentSize;
17 | this.height = contentSize.height;
18 |
19 | const outer = this.props.onContentSizeChange;
20 | if (outer) {
21 | outer(e);
22 | }
23 | };
24 | focus = () => {
25 | this.input && this.input.focus();
26 | };
27 | blur = () => {
28 | this.input && this.input.blur();
29 | };
30 | render() {
31 | return (
32 |
39 | );
40 | }
41 | }
42 |
43 | export default GrowingTextInput;
44 |
--------------------------------------------------------------------------------
/src/module/app/DetectionRisk.android.js:
--------------------------------------------------------------------------------
1 | import { NativeModules, Alert } from "react-native";
2 | import AppInfo from "./AppInfo";
3 | import { BUNDLE_ID_PRO_ANDROID } from "../../config/const";
4 |
5 | const RRRNDevice = NativeModules.RRRNDevice;
6 |
7 | const detectionRisk = () => {
8 | const isRoot = AppInfo.bundleId === BUNDLE_ID_PRO_ANDROID && !__DEV__ && RRRNDevice.O0o0o0OOoo00O00ooO0o0;
9 |
10 | if (isRoot) {
11 | Alert.alert("警告", "安装包有问题, 请重新安装");
12 | }
13 |
14 | return isRoot;
15 | };
16 |
17 | export default detectionRisk;
18 |
--------------------------------------------------------------------------------
/src/module/app/DetectionRisk.ios.js:
--------------------------------------------------------------------------------
1 | import { NativeModules, Alert } from "react-native";
2 | import AppInfo from "./AppInfo";
3 | import { BUNDLE_ID_PRO_IOS, BUNDLE_ID_DEV, BUNDLE_ID_INHOUSE_IOS } from "../../config/const";
4 |
5 | const RRRNDevice = NativeModules.RRRNDevice;
6 |
7 | const vaildBundleId = () => {
8 | if (__DEV__) {
9 | return true;
10 | }
11 | return [BUNDLE_ID_PRO_IOS, BUNDLE_ID_INHOUSE_IOS, BUNDLE_ID_DEV].indexOf(AppInfo.bundleId) != -1;
12 | };
13 |
14 | const detectionRisk = () => {
15 | if (!vaildBundleId()) {
16 | Alert.alert("警告", "发现二次签名");
17 | return true;
18 | }
19 | const isJailbreak = RRRNDevice.OO0o0OO00O00oOO0o0;
20 | if (isJailbreak) {
21 | Alert.alert("警告", "安装包已损坏请重新安装");
22 | return true;
23 | }
24 | return false;
25 | };
26 |
27 | export default detectionRisk;
28 |
--------------------------------------------------------------------------------
/src/module/contact/index.js:
--------------------------------------------------------------------------------
1 | import Network from "../common/network";
2 | import storage, { STORAGE_KEY } from "../../util/Storage";
3 |
4 | // 使用storage 的key-id方式来保存联系人数据
5 | export default {
6 | async getContactList(uuid, page) {
7 | let contactList = [];
8 |
9 | try {
10 | contactList = await storage.getAllDataForKey(STORAGE_KEY.CONTACT_LIST);
11 | } catch (e) {
12 | console.log("获取联系人列表失败", e);
13 | }
14 |
15 | return contactList;
16 | },
17 |
18 | // 保存,判断是新增还是修改
19 | async save(param) {
20 | console.log("保存联系人入参+===>", param);
21 | if (param.id === null || param.id === undefined) {
22 | param.id = Date.now();
23 | }
24 |
25 | console.log("保存联系人====>", param);
26 |
27 | await storage.save({
28 | key: STORAGE_KEY.CONTACT_LIST,
29 | id: param.id,
30 | data: param,
31 | });
32 | },
33 |
34 | async deleteAll() {
35 | storage.clearMapForKey(STORAGE_KEY.CONTACT_LIST);
36 | },
37 |
38 | async delete(contactId) {
39 | storage.remove({
40 | key: STORAGE_KEY.CONTACT_LIST,
41 | id: contactId,
42 | });
43 | },
44 | };
45 |
--------------------------------------------------------------------------------
/src/module/i18n/const.js:
--------------------------------------------------------------------------------
1 | export const BIZ_SCOPE = Object.freeze({
2 | common: "common",
3 | mine: "mine",
4 | qunfabao: "qunfabao",
5 | wallet: "wallet",
6 | });
7 |
--------------------------------------------------------------------------------
/src/module/i18n/excel/renrenbit.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RenrenBit-zz/RRWallet/73e877a900cd48c40a03cd1b101eedb84c24e191/src/module/i18n/excel/renrenbit.xlsx
--------------------------------------------------------------------------------
/src/module/i18n/script/excel2json.js:
--------------------------------------------------------------------------------
1 | const xlsx = require("xlsx");
2 | const fs = require("fs");
3 | const mkdirp = require("mkdirp");
4 |
5 | const TRANSLATIONS_PATH = "../translations";
6 | const EXCEL_PATH = "../excel/renrenbit.xlsx";
7 |
8 | const workbook = xlsx.readFile(EXCEL_PATH);
9 |
10 | for (const biz in workbook.Sheets) {
11 | const worksheet = workbook.Sheets[biz];
12 | const columns = xlsx.utils.sheet_to_json(worksheet);
13 | const { zh, en } = formatJSON(columns);
14 | const bizPath = `${TRANSLATIONS_PATH}/${biz}`;
15 | mkdirp.sync(bizPath);
16 | // fs.writeFileSync(`${bizPath}/zh.json`, JSON.stringify(zh, null, 2))
17 | fs.writeFileSync(`${bizPath}/en.json`, JSON.stringify(en, null, 2));
18 | }
19 |
20 | function formatJSON(columns) {
21 | const zh = {};
22 | const en = {};
23 | columns.forEach(column => {
24 | if (column.zh) {
25 | zh[column.name] = column.zh;
26 | }
27 | if (column.en) {
28 | en[column.name] = column.en;
29 | }
30 | });
31 | return { zh, en };
32 | }
33 |
--------------------------------------------------------------------------------
/src/module/i18n/script/replace.js:
--------------------------------------------------------------------------------
1 | const fs = require("fs");
2 |
3 | if (process.argv.length != 4) {
4 | console.log("参数错误");
5 | process.exit();
6 | }
7 |
8 | const source = process.argv[2];
9 | const target = process.argv[3];
10 | const biz = source.split("/").slice(-2)[0];
11 |
12 | const json = JSON.parse(fs.readFileSync(source).toString());
13 | const text = fs.readFileSync(target).toString();
14 |
15 | var result = text;
16 | for (const key in json) {
17 | const vaule = json[key];
18 | result = result.replace(`>${vaule}<`, `>{i18n.t('${biz}-${key}')}<`);
19 | }
20 |
21 | fs.writeFileSync(`${target}.bak`, text);
22 | fs.writeFileSync(`${target}`, result);
23 |
--------------------------------------------------------------------------------
/src/module/i18n/translations/en.js:
--------------------------------------------------------------------------------
1 | const common = require("./common/en.json");
2 | const mine = require("./mine/en.json");
3 | const qunfabao = require("./qunfabao/en.json");
4 | const wallet = require("./wallet/en.json");
5 |
6 | const _ = require("lodash");
7 |
8 | const bizs = {
9 | common,
10 | mine,
11 | qunfabao,
12 | wallet,
13 | };
14 |
15 | const en = Object.assign(
16 | {},
17 | ..._.reduce(
18 | bizs,
19 | (r, value, key) => {
20 | const biz = _.reduce(
21 | value,
22 | (subResult, subValue, subKey) => {
23 | subResult[`${key}-${subKey}`] = subValue;
24 | return subResult;
25 | },
26 | {}
27 | );
28 | r.push(biz);
29 | return r;
30 | },
31 | []
32 | )
33 | );
34 |
35 | module.exports = en;
36 |
--------------------------------------------------------------------------------
/src/module/i18n/translations/zh.js:
--------------------------------------------------------------------------------
1 | const common = require("./common/zh.json");
2 | const mine = require("./mine/zh.json");
3 | const qunfabao = require("./qunfabao/zh.json");
4 | const wallet = require("./wallet/zh.json");
5 |
6 | const _ = require("lodash");
7 |
8 | const bizs = {
9 | common,
10 | mine,
11 | qunfabao,
12 | wallet,
13 | };
14 |
15 | const zh = Object.assign(
16 | {},
17 | ..._.reduce(
18 | bizs,
19 | (r, value, key) => {
20 | const biz = _.reduce(
21 | value,
22 | (subResult, subValue, subKey) => {
23 | subResult[`${key}-${subKey}`] = subValue;
24 | return subResult;
25 | },
26 | {}
27 | );
28 | r.push(biz);
29 | return r;
30 | },
31 | []
32 | )
33 | );
34 |
35 | module.exports = zh;
36 |
--------------------------------------------------------------------------------
/src/module/launch/splash.js:
--------------------------------------------------------------------------------
1 | import { NativeModules } from "react-native";
2 | import { SPLASH_SCENE_LOCK, SPLASH_SCENE_TAB } from "../../config/const";
3 | import DeviceSecurity from "../security/DeviceSecurity";
4 | import RNLanguages from "react-native-languages";
5 |
6 | const RRRNSplash = NativeModules.RRRNSplash;
7 | class Splash {
8 | get isFirstLaunch() {
9 | return RRRNSplash.isFirstLaunch && RNLanguages.language.indexOf("zh") === 0;
10 | }
11 | constructor() {
12 | setTimeout(() => {
13 | this.dismiss();
14 | }, 8 * 1000); //八秒后强制dimiss, 防止业务层没人调用卡在闪屏
15 | }
16 | /**
17 | *
18 | * @param {SPLASH_SCENE_TAB|SPLASH_SCENE_LOCK|SPLASH_SCENE_GUIDE} scene
19 | * @memberof Splash
20 | */
21 | dismissIfNeed = scene => {
22 | if (scene == SPLASH_SCENE_TAB && (DeviceSecurity.isUnlocking || this.isFirstLaunch)) {
23 | return;
24 | }
25 | this.dismiss();
26 | };
27 | dismiss = () => {
28 | RRRNSplash && RRRNSplash.dismiss && RRRNSplash.dismiss();
29 | };
30 | }
31 |
32 | export default new Splash();
33 |
--------------------------------------------------------------------------------
/src/module/wallet/account/Account.js:
--------------------------------------------------------------------------------
1 | import { computed } from "mobx";
2 | import _ from "lodash";
3 |
4 | class Account {
5 | id;
6 | /**
7 | *
8 | * @type { String }
9 | * @memberof MultiChainAccount
10 | */
11 | name;
12 | type;
13 | @computed get totalAsset() {
14 | throw new Error("not implemented totalAsset");
15 | }
16 | @computed get floatingAsset() {
17 | throw new Error("not implemented floatingAsset");
18 | }
19 |
20 | /**
21 | * 更新account相关业务数据, AccountStore会轮询该方法
22 | *
23 | * @memberof Account
24 | */
25 | update = async () => {
26 | throw new Error("not implemented update");
27 | };
28 |
29 | /**
30 | * 定时轮询
31 | *
32 | * @memberof Account
33 | */
34 | pollingUpdateTask = () => {
35 | this.update().finally(() => {
36 | setTimeout(this.pollingUpdateTask, _.random(60, 80) * 1000);
37 | });
38 | };
39 | constructor(obj = {}) {
40 | this.id = obj.id;
41 | this.name = obj.name;
42 | this.type = obj.type;
43 | setTimeout(() => {
44 | this.pollingUpdateTask();
45 | }, 0);
46 | }
47 | }
48 |
49 | export default Account;
50 |
--------------------------------------------------------------------------------
/src/module/wallet/wallet/ETCRPCProvider.js:
--------------------------------------------------------------------------------
1 | import { BigNumber } from "bignumber.js";
2 | import network from "../../common/network";
3 |
4 | class ETCRPCProvider {
5 | ethGetTransactionCount = async (address, tag = "latest") => {
6 | return new BigNumber(
7 | await network.jsonrpc(network.ETCRpcUrl, "eth_getTransactionCount", [address, tag]),
8 | 16
9 | ).toNumber();
10 | };
11 | }
12 |
13 | export default new ETCRPCProvider();
14 |
--------------------------------------------------------------------------------
/src/module/wallet/wallet/ETHRPCProvider.js:
--------------------------------------------------------------------------------
1 | import network from "../../common/network";
2 | import { NETWORK_ENV_TESTNET } from "../../../config/const";
3 | import { BigNumber } from "bignumber.js";
4 | import ethereum, { unitMap } from "../../../util/ethereum";
5 |
6 | class ETHRPCProvider {
7 | /**
8 | *节点推荐gasPrice
9 | *
10 | * @memberof ETHRPCProvider
11 | */
12 | gasPrice = 15;
13 |
14 | constructor() {
15 | // this.fetchGasPrice()
16 | // setInterval(this.fetchGasPrice, 10 * 60 * 1000)
17 | }
18 |
19 | fetchGasPrice = async () => {
20 | const weiGasPrice = await network.jsonrpc(network.ETHRpcUrl, "eth_gasPrice", []);
21 | this.gasPrice = new BigNumber(weiGasPrice).div(unitMap.Gwei).toNumber();
22 | };
23 |
24 | ethGetTransactionCount = async (address, tag = "latest") => {
25 | return new BigNumber(
26 | await network.jsonrpc(network.ETHRpcUrl, "eth_getTransactionCount", [address, tag]),
27 | 16
28 | ).toNumber();
29 | };
30 | ethCall = async (obj, tag = "latest") => {
31 | return await network.jsonrpc(network.ETHRpcUrl, "eth_call", [obj, tag]);
32 | };
33 | ethGetTransactionReceipt = async txhash => {
34 | return await network.jsonrpc(network.ETHRpcUrl, "eth_getTransactionReceipt", [txhash]);
35 | };
36 | }
37 |
38 | export default new ETHRPCProvider();
39 |
--------------------------------------------------------------------------------
/src/module/wallet/wallet/util/address.js:
--------------------------------------------------------------------------------
1 | import { COIN_ID_ETH, COIN_ID_BTC } from "../../../../config/const";
2 |
3 | export default {
4 | decodeAdress: function(str) {
5 | if (str.startsWith("0x")) {
6 | return {
7 | address: str,
8 | type: COIN_ID_ETH,
9 | };
10 | }
11 | const firstChar = str.charAt(0);
12 | if (firstChar === "1" || firstChar === "3" || firstChar === "2" || firstChar === "m" || firstChar === "n") {
13 | return {
14 | address: str,
15 | type: COIN_ID_BTC,
16 | };
17 | }
18 | return {
19 | address: str,
20 | type: 0,
21 | };
22 | },
23 | };
24 |
--------------------------------------------------------------------------------
/src/module/wallet/wallet/util/base58.js:
--------------------------------------------------------------------------------
1 | const basex = require("./baseX");
2 | const ALPHABET = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";
3 |
4 | module.exports = basex(ALPHABET);
5 |
--------------------------------------------------------------------------------
/src/util/ImageUtil.js:
--------------------------------------------------------------------------------
1 | import { CameraRoll, PermissionsAndroid, Platform } from "react-native";
2 | import _ from "lodash";
3 |
4 | const ERROR_MESSAGE_SAVE_IMAGE = "图片保存失败,请检查相册读取权限,或者手动截图保存";
5 | async function saveToCameraRoll(uri) {
6 | if (!_.isString(uri) || uri.length <= 0) {
7 | throw new Error(ERROR_MESSAGE_SAVE_IMAGE);
8 | }
9 | if (Platform.OS === "android") {
10 | try {
11 | const granted = await PermissionsAndroid.request(PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE);
12 | if (granted !== PermissionsAndroid.RESULTS.GRANTED) {
13 | throw new Error(ERROR_MESSAGE_SAVE_IMAGE);
14 | }
15 | } catch (err) {
16 | throw new Error(ERROR_MESSAGE_SAVE_IMAGE);
17 | }
18 | }
19 | try {
20 | await CameraRoll.saveToCameraRoll(uri);
21 | } catch (error) {
22 | throw new Error(ERROR_MESSAGE_SAVE_IMAGE);
23 | }
24 | }
25 |
26 | const ImageUtil = {
27 | saveToCameraRoll,
28 | };
29 |
30 | export default ImageUtil;
31 |
--------------------------------------------------------------------------------
/src/util/LocalDataName.js:
--------------------------------------------------------------------------------
1 | export default class LocalDataName {
2 | //链上的交易信息
3 | static LOCAL_COIN_LIST = "LOCAL_COIN_LIST";
4 | static LOCAL_SECRET_AUTH = "LOCAL_SECRET_AUTH";
5 | static LOCAL_COIN_CACHE = "LOCAL_COIN_CACHE1_";
6 | static LOCAL_PHONE = "LOCAL_PHONE_D";
7 | }
8 |
--------------------------------------------------------------------------------
/src/util/NetworkReachability.js:
--------------------------------------------------------------------------------
1 | import network from "../module/common/network";
2 | import { NetInfo, Platform } from "react-native";
3 |
4 | export default async function checkNetworkReachability(url = network.pingURL) {
5 | try {
6 | return false;
7 | let connectionChecked;
8 | if (Platform.OS === "ios") {
9 | const { type, effectiveType } = await NetInfo.getConnectionInfo();
10 | connectionChecked = type !== "none";
11 | } else {
12 | connectionChecked = await NetInfo.isConnected.fetch();
13 | }
14 |
15 | const isConnected = connectionChecked;
16 | return isConnected;
17 | return true;
18 | } catch (error) {
19 | return true;
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/src/util/Storage.js:
--------------------------------------------------------------------------------
1 | import Storage from "react-native-storage";
2 | import { AsyncStorage } from "react-native";
3 |
4 | const storage = new Storage({
5 | // 最大容量,默认值1000条数据循环存储
6 | size: 1000,
7 |
8 | // 存储引擎:对于rn使用asyncstorage,对于web使用window.localstorage
9 | // 如果不指定则数据只会保存在内存中,重启后即丢失
10 | storageBackend: AsyncStorage,
11 |
12 | // 数据过期时间,默认一整天(1000 * 3600 * 24 毫秒),设为null则永不过期
13 | defaultExpires: null,
14 |
15 | // 读写时在内存中缓存数据。默认启用。
16 | enableCache: true,
17 | });
18 |
19 | // 缓存key
20 | // !!!!注意,key中不要用_下划线字符,否则在key-id的存储形式下有问题
21 | const STORAGE_KEY = {
22 | CONTACT_LIST: "contactList", // 联系人列表
23 | APP_INFO: "appinfo", // app信息
24 | };
25 |
26 | // api 使用参见https://github.com/sunnylqm/react-native-storage/blob/master/README-CHN.md
27 | //
28 | export default storage;
29 | export { STORAGE_KEY };
30 |
--------------------------------------------------------------------------------
/src/util/Timer.js:
--------------------------------------------------------------------------------
1 | function sleep(ms) {
2 | return new Promise(resolve => setTimeout(resolve, ms));
3 | }
4 |
5 | export { sleep };
6 |
--------------------------------------------------------------------------------
/src/util/UIAdapter.js:
--------------------------------------------------------------------------------
1 | import { Dimensions, Platform } from "react-native";
2 |
3 | const { width, height, scale } = Dimensions.get("screen");
4 |
5 | const manualPadding = (x3, x2 = x3, ax3 = x3, ax2 = x2) => {
6 | let r;
7 | switch (scale) {
8 | case 3:
9 | r = Platform.select({ ios: x3, android: ax3 });
10 | break;
11 | case 2:
12 | default:
13 | r = Platform.select({ ios: x2, android: ax2 });
14 | }
15 | return Math.ceil(r);
16 | };
17 |
18 | const padding = length => {
19 | return manualPadding(length, length * 0.8);
20 | };
21 |
22 | const fontSize = size => {
23 | let r = size;
24 | switch (scale) {
25 | case 2:
26 | r = size * 0.8;
27 | break;
28 | case 3:
29 | default:
30 | r = size;
31 | }
32 | return Math.ceil(r);
33 | };
34 |
35 | export { manualPadding, padding, fontSize };
36 |
--------------------------------------------------------------------------------