├── .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 | --------------------------------------------------------------------------------