├── .bundle └── config ├── .eslintrc.json ├── .flowconfig ├── .gitattributes ├── .gitignore ├── .gitlab-ci.yml ├── .prettierrc.js ├── .snyk ├── .vscode └── launch.json ├── App.js ├── DISCLAIMER.txt ├── LICENCE ├── PRIVACY.txt ├── README.md ├── __mocks__ ├── @react-native-community │ └── async-storage.js ├── ethers.js ├── react-native-alert-async │ └── mock.js ├── react-native-fetch │ ├── fetch.js │ ├── mocked_results │ │ ├── blockchain_data.js │ │ ├── estimatefee.js │ │ ├── getbalance.js │ │ ├── getblockinfo.js │ │ ├── getcurrentblock.js │ │ ├── getmerkle.js │ │ ├── gettransaction.js │ │ ├── listtransactions.js │ │ ├── listunspent.js │ │ ├── mocked_results.js │ │ ├── pushtx.js │ │ └── server_version.js │ └── util │ │ └── mock_urls.js ├── react-native-randombytes.js ├── react-native-verus-light-client │ ├── WalletFolder.js │ ├── mock.js │ └── requests │ │ ├── JsonRpc.js │ │ └── WalletRequests.js ├── redux-saga.js ├── redux │ ├── mock.js │ └── store.js └── rn-fetch-blob.js ├── android ├── .project ├── .settings │ └── org.eclipse.buildship.core.prefs ├── app │ ├── .classpath │ ├── .project │ ├── .settings │ │ └── org.eclipse.buildship.core.prefs │ ├── _BUCK │ ├── app.iml │ ├── bin │ │ ├── .project │ │ └── src │ │ │ └── main │ │ │ ├── AndroidManifest.xml │ │ │ ├── assets │ │ │ └── fonts │ │ │ │ ├── AntDesign.ttf │ │ │ │ ├── Entypo.ttf │ │ │ │ ├── EvilIcons.ttf │ │ │ │ ├── Feather.ttf │ │ │ │ ├── FontAwesome.ttf │ │ │ │ ├── FontAwesome5_Brands.ttf │ │ │ │ ├── FontAwesome5_Regular.ttf │ │ │ │ ├── FontAwesome5_Solid.ttf │ │ │ │ ├── Foundation.ttf │ │ │ │ ├── Ionicons.ttf │ │ │ │ ├── MaterialCommunityIcons.ttf │ │ │ │ ├── MaterialIcons.ttf │ │ │ │ ├── Octicons.ttf │ │ │ │ ├── SimpleLineIcons.ttf │ │ │ │ └── Zocial.ttf │ │ │ ├── java │ │ │ └── com │ │ │ │ └── verusmobile │ │ │ │ ├── MainActivity.class │ │ │ │ └── MainApplication.class │ │ │ └── res │ │ │ ├── mipmap-hdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-mdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ └── values │ │ │ ├── strings.xml │ │ │ └── styles.xml │ ├── build.gradle │ ├── build_defs.bzl │ ├── proguard-rules.pro │ ├── release │ │ └── output.json │ └── src │ │ ├── debug │ │ └── AndroidManifest.xml │ │ └── main │ │ ├── AndroidManifest.xml │ │ ├── assets │ │ └── fonts │ │ │ ├── AntDesign.ttf │ │ │ ├── Avenir-Black.ttf │ │ │ ├── Avenir-Book.ttf │ │ │ ├── Avenir-Light.ttf │ │ │ ├── Avenir-Medium.ttf │ │ │ ├── Entypo.ttf │ │ │ ├── EvilIcons.ttf │ │ │ ├── Feather.ttf │ │ │ ├── FontAwesome.ttf │ │ │ ├── FontAwesome5_Brands.ttf │ │ │ ├── FontAwesome5_Regular.ttf │ │ │ ├── FontAwesome5_Solid.ttf │ │ │ ├── Fontisto.ttf │ │ │ ├── Foundation.ttf │ │ │ ├── Ionicons.ttf │ │ │ ├── MaterialCommunityIcons.ttf │ │ │ ├── MaterialIcons.ttf │ │ │ ├── Octicons.ttf │ │ │ ├── SimpleLineIcons.ttf │ │ │ ├── SourceSansPro-Black.ttf │ │ │ ├── SourceSansPro-BlackItalic.ttf │ │ │ ├── SourceSansPro-Bold.ttf │ │ │ ├── SourceSansPro-BoldItalic.ttf │ │ │ ├── SourceSansPro-ExtraLight.ttf │ │ │ ├── SourceSansPro-ExtraLightItalic.ttf │ │ │ ├── SourceSansPro-Italic.ttf │ │ │ ├── SourceSansPro-Light.ttf │ │ │ ├── SourceSansPro-LightItalic.ttf │ │ │ ├── SourceSansPro-Regular.ttf │ │ │ ├── SourceSansPro-SemiBold.ttf │ │ │ ├── SourceSansPro-SemiBoldItalic.ttf │ │ │ └── Zocial.ttf │ │ ├── java │ │ └── com │ │ │ └── verusmobile │ │ │ ├── MainActivity.java │ │ │ ├── MainApplication.java │ │ │ ├── ReactNativeFlipper.java │ │ │ └── SplashActivity.java │ │ └── res │ │ ├── drawable-mdpi │ │ ├── node_modules_reactnativeelements_src_rating_images_bell.png │ │ ├── node_modules_reactnativeelements_src_rating_images_heart.png │ │ ├── node_modules_reactnativeelements_src_rating_images_rocket.png │ │ ├── node_modules_reactnativeelements_src_rating_images_star.png │ │ ├── node_modules_reactnavigation_src_views_assets_backicon.png │ │ ├── node_modules_reactnavigation_src_views_assets_backiconmask.png │ │ ├── src_assets_vrsc.png │ │ ├── src_images_cryptologo_bch.png │ │ ├── src_images_cryptologo_btc.png │ │ ├── src_images_cryptologo_ccl.png │ │ ├── src_images_cryptologo_dash.png │ │ ├── src_images_cryptologo_dgb.png │ │ ├── src_images_cryptologo_doge.png │ │ ├── src_images_cryptologo_k64.png │ │ ├── src_images_cryptologo_kmd.png │ │ ├── src_images_cryptologo_ltc.png │ │ ├── src_images_cryptologo_oot.png │ │ ├── src_images_cryptologo_vrsc.png │ │ ├── src_images_cryptologo_zec.png │ │ ├── src_images_cryptologo_zilla.png │ │ ├── src_images_customicons_addcoin.png │ │ ├── src_images_customicons_incomingarrow.png │ │ ├── src_images_customicons_interestplus.png │ │ ├── src_images_customicons_outgoingarrow.png │ │ ├── src_images_customicons_selfarrow.png │ │ ├── src_images_customicons_unknownlogo.png │ │ ├── src_images_customicons_verusheaderlogo.png │ │ ├── src_images_customicons_veruspay.png │ │ └── src_images_customicons_verusqrlogo.png │ │ ├── drawable-xhdpi │ │ └── node_modules_reactnavigation_src_views_assets_backicon.png │ │ ├── drawable-xxhdpi │ │ └── node_modules_reactnavigation_src_views_assets_backicon.png │ │ ├── drawable-xxxhdpi │ │ └── node_modules_reactnavigation_src_views_assets_backicon.png │ │ ├── drawable │ │ └── background_splash.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.png │ │ └── icon.png │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.png │ │ └── icon.png │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.png │ │ └── icon.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ └── icon.png │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ └── icon.png │ │ └── values │ │ ├── colors.xml │ │ ├── strings.xml │ │ └── styles.xml ├── build.gradle ├── gradle.properties ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── keystores │ ├── BUCK │ └── debug.keystore.properties ├── settings.gradle └── verusmobile.iml ├── app.json ├── assets ├── fonts │ ├── OFL.txt │ ├── SourceSansPro-Black.ttf │ ├── SourceSansPro-BlackItalic.ttf │ ├── SourceSansPro-Bold.ttf │ ├── SourceSansPro-BoldItalic.ttf │ ├── SourceSansPro-ExtraLight.ttf │ ├── SourceSansPro-ExtraLightItalic.ttf │ ├── SourceSansPro-Italic.ttf │ ├── SourceSansPro-Light.ttf │ ├── SourceSansPro-LightItalic.ttf │ ├── SourceSansPro-Regular.ttf │ ├── SourceSansPro-SemiBold.ttf │ └── SourceSansPro-SemiBoldItalic.ttf └── vrsc.png ├── babel.config.js ├── debug ├── findpos.js └── setupJest.js ├── dummy-minifier.js ├── env ├── index.js ├── main.android.json └── main.ios.json ├── gemfile ├── global.js ├── index.js ├── ios ├── .xcode.env ├── Podfile ├── Podfile.lock ├── PrivacyInfo.xcprivacy ├── SaplingParams │ ├── sapling-output.params │ └── sapling-spend.params ├── assets │ ├── app.json │ ├── env │ │ └── main.json │ └── src │ │ ├── animations │ │ └── loading_circle.json │ │ ├── images │ │ ├── cryptologo │ │ │ ├── default │ │ │ │ ├── btc │ │ │ │ │ ├── bch.png │ │ │ │ │ ├── btc.png │ │ │ │ │ ├── ccl.png │ │ │ │ │ ├── dash.png │ │ │ │ │ ├── dgb.png │ │ │ │ │ ├── doge.png │ │ │ │ │ ├── kmd.png │ │ │ │ │ ├── ltc.png │ │ │ │ │ ├── oot.png │ │ │ │ │ ├── vrsc.png │ │ │ │ │ ├── zec.png │ │ │ │ │ ├── zectest.png │ │ │ │ │ └── zilla.png │ │ │ │ └── web3 │ │ │ │ │ ├── bat.png │ │ │ │ │ ├── dai.png │ │ │ │ │ └── eth.png │ │ │ └── default_chain.png │ │ └── customIcons │ │ │ ├── Verus.png │ │ │ ├── add.png │ │ │ ├── aproved.png │ │ │ ├── bank-building.png │ │ │ ├── bank2.png │ │ │ ├── bankBuildingBlack.png │ │ │ ├── buy.png │ │ │ ├── buySell.png │ │ │ ├── calendar.png │ │ │ ├── call-answer.png │ │ │ ├── coinAdd.png │ │ │ ├── email.png │ │ │ ├── file.png │ │ │ ├── home-icon-silhouette.png │ │ │ ├── id-card.png │ │ │ ├── in-arrow.png │ │ │ ├── interest-plus.png │ │ │ ├── maps-and-flags.png │ │ │ ├── out-arrow.png │ │ │ ├── pending-clock.png │ │ │ ├── pending.png │ │ │ ├── piggybank.png │ │ │ ├── self-arrow.png │ │ │ ├── sell.png │ │ │ ├── unknown-logo.png │ │ │ ├── user.png │ │ │ ├── verusPay.png │ │ │ └── verusQRLogo.png │ │ └── utils │ │ └── extraCoins │ │ └── cryptocurrencies.json ├── bridge.swift ├── splash-image.png ├── verusMobile-tvOS │ └── Info.plist ├── verusMobile-tvOSTests │ └── Info.plist ├── verusMobile.xcodeproj │ ├── project.pbxproj │ └── xcshareddata │ │ └── xcschemes │ │ ├── verusMobile-tvOS.xcscheme │ │ └── verusMobile.xcscheme ├── verusMobile.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist ├── verusMobile │ ├── AppDelegate.h │ ├── AppDelegate.m │ ├── Base.lproj │ │ └── LaunchScreen.xib │ ├── Images.xcassets │ │ ├── AppIcon.appiconset │ │ │ ├── Contents.json │ │ │ ├── ios-app-icon-1024-1024.png │ │ │ ├── ios-app-icon-1024-20.png │ │ │ ├── ios-app-icon-1024-20@2x.png │ │ │ ├── ios-app-icon-1024-20@3x.png │ │ │ ├── ios-app-icon-1024-29.png │ │ │ ├── ios-app-icon-1024-29@2x.png │ │ │ ├── ios-app-icon-1024-29@3x.png │ │ │ ├── ios-app-icon-1024-40.png │ │ │ ├── ios-app-icon-1024-40@2x.png │ │ │ ├── ios-app-icon-1024-40@3x.png │ │ │ ├── ios-app-icon-1024-60@2x.png │ │ │ ├── ios-app-icon-1024-60@3x.png │ │ │ ├── ios-app-icon-1024-76.png │ │ │ ├── ios-app-icon-1024-76@2x.png │ │ │ └── ios-app-icon-1024-83.5@2x.png │ │ ├── Contents.json │ │ └── Verus-Splash.imageset │ │ │ ├── Contents.json │ │ │ ├── Verus-Splash-1.png │ │ │ ├── Verus-Splash-2.png │ │ │ └── Verus-Splash.png │ ├── Info.plist │ └── main.m ├── verusMobileTests │ ├── Info.plist │ └── verusMobileTests.m └── verusmobile-Bridging-Header.h ├── metro.config.js ├── package.json ├── react-native.config.js ├── shims ├── crypto.js └── stringify.js ├── src ├── VerusMobile.js ├── actions │ ├── actionCreators.js │ ├── actionCreators │ │ ├── attestations.js │ │ ├── claimCategories.js │ │ ├── claims.js │ │ └── identities.js │ ├── actionDispatchers.js │ └── actions │ │ ├── PaymentMethod │ │ └── WyreAccount.js │ │ ├── UserData.js │ │ ├── WalletSettings.js │ │ ├── account │ │ └── dispatchers │ │ │ └── account.js │ │ ├── alert │ │ ├── creators │ │ │ └── alert.js │ │ └── dispatchers │ │ │ └── alert.js │ │ ├── cache │ │ ├── Cache.js │ │ ├── Electrum.js │ │ ├── EthTransactionReceipts.js │ │ └── Headers.js │ │ ├── channels │ │ ├── dlight │ │ │ └── dispatchers │ │ │ │ ├── AlertManager.js │ │ │ │ └── LightWalletReduxManager.js │ │ ├── electrum │ │ │ └── dispatchers │ │ │ │ └── ElectrumWalletReduxManager.js │ │ ├── erc20 │ │ │ └── dispatchers │ │ │ │ └── Erc20WalletReduxManager.js │ │ ├── eth │ │ │ └── dispatchers │ │ │ │ └── EthWalletReduxManager.js │ │ ├── general │ │ │ └── dispatchers │ │ │ │ └── GeneralWalletReduxManager.js │ │ ├── verusid │ │ │ └── dispatchers │ │ │ │ └── VerusidWalletReduxManager.js │ │ ├── vrpc │ │ │ └── dispatchers │ │ │ │ └── VrpcWalletReduxManager.js │ │ └── wyre │ │ │ └── dispatchers │ │ │ └── WyreWalletReduxManager.js │ │ ├── coins │ │ └── Coins.js │ │ ├── deeplink │ │ ├── creators │ │ │ └── deeplink.js │ │ └── dispatchers │ │ │ └── deeplinkListener.js │ │ ├── intervals │ │ └── dispatchers │ │ │ ├── IntervalCreator.js │ │ │ └── lifecycleManager.js │ │ ├── keyboard │ │ ├── creators │ │ │ └── keyboard.js │ │ └── dispatchers │ │ │ └── keyboardListener.js │ │ ├── loadingModal │ │ └── dispatchers │ │ │ └── loadingModal.js │ │ ├── notifications │ │ ├── creators │ │ │ └── notifications.js │ │ └── dispatchers │ │ │ └── notifications.js │ │ ├── personal │ │ ├── creators │ │ │ └── personal.js │ │ └── dispatchers │ │ │ └── personal.js │ │ ├── send │ │ └── dispatchers │ │ │ └── traditionalCryptoSend.js │ │ ├── sendModal │ │ └── dispatchers │ │ │ └── sendModal.js │ │ ├── services │ │ ├── creators │ │ │ └── services.js │ │ └── dispatchers │ │ │ ├── UpdateServiceAccount.js │ │ │ ├── UpdateServiceDataValue.js │ │ │ ├── UpdateServiceNotifications.js │ │ │ ├── UpdateServicePaymentMethods.js │ │ │ ├── UpdateServiceRates.js │ │ │ ├── UpdateServiceTransfers.js │ │ │ ├── services.js │ │ │ ├── updates.js │ │ │ ├── verusid │ │ │ └── verusid.js │ │ │ └── wyre │ │ │ ├── updates.js │ │ │ └── wyre.js │ │ ├── updateManager.js │ │ ├── wallet │ │ └── dispatchers │ │ │ ├── UpdateBalances.js │ │ │ ├── UpdateConversionPaths.js │ │ │ ├── UpdateDepositSources.js │ │ │ ├── UpdateFiatPrices.js │ │ │ ├── UpdateInfo.js │ │ │ ├── UpdateLedgerValue.js │ │ │ ├── UpdateLinkedIdentities.js │ │ │ ├── UpdatePendingDeposits.js │ │ │ ├── UpdateTransactions.js │ │ │ ├── UpdateWithdrawDestinations.js │ │ │ ├── WalletUpdates.js │ │ │ ├── dlight │ │ │ └── updates.js │ │ │ ├── electrum │ │ │ └── updates.js │ │ │ ├── erc20 │ │ │ └── updates.js │ │ │ ├── eth │ │ │ └── updates.js │ │ │ ├── general │ │ │ └── updates.js │ │ │ ├── verusid │ │ │ └── updates.js │ │ │ ├── vrpc │ │ │ └── updates.js │ │ │ └── wyre │ │ │ └── updates.js │ │ └── widgets │ │ ├── creators │ │ └── widgets.js │ │ └── dispatchers │ │ └── widgets.js ├── animations │ ├── loading_circle.json │ └── success_checkmark.json ├── components │ ├── Alert.js │ ├── AnimatedActivityIndicator.js │ ├── AnimatedActivityIndicatorBox.js │ ├── AnimatedSuccessCheckmark.js │ ├── BankTransferDetailsModal │ │ └── BankTransferDetailsModal.js │ ├── BarcodeReader │ │ └── BarcodeReader.js │ ├── CoinDetailsModal │ │ └── CoinDetailsModal.js │ ├── ConvertCardModal │ │ └── ConvertCardModal.js │ ├── CurrencyObjectData.js │ ├── DatePickerModal │ │ └── DatePickerModal.js │ ├── DragSort │ │ ├── ConfigContext.js │ │ ├── Item.js │ │ ├── SortableContainer.js │ │ ├── SortableGrid.js │ │ ├── Tile.js │ │ └── index.js │ ├── DrawerHeader.js │ ├── FormModules │ │ ├── ConvertFormModule.js │ │ ├── CoreSendFormModule.js │ │ └── ExportFormModule.js │ ├── LargerButton.js │ ├── ListSelectionModal │ │ └── ListSelectionModal.js │ ├── LoadingModal │ │ └── LoadingModal.js │ ├── MissingInfoRedirect │ │ └── MissingInfoRedirect.js │ ├── Modal.js │ ├── NumberPad │ │ ├── NumberPad.js │ │ ├── index.js │ │ └── lib │ │ │ ├── AvoidingView.js │ │ │ ├── Display.js │ │ │ ├── Input.js │ │ │ ├── NumberPad.js │ │ │ ├── NumberPadContext.js │ │ │ └── styles.js │ ├── NumberPadModal │ │ └── NumberPadModal.js │ ├── PasswordCheck.js │ ├── PasswordInput.js │ ├── PhoneNumberModal │ │ ├── PhoneNumberModal.js │ │ └── PhoneNumberModal.render.js │ ├── QRModal.js │ ├── RFoxClaim.js │ ├── ScanSeed.js │ ├── SearchableList.js │ ├── SemiModal.js │ ├── SendModal │ │ ├── AddErc20Token │ │ │ ├── AddErc20TokenConfirm │ │ │ │ ├── AddErc20TokenConfirm.js │ │ │ │ └── AddErc20TokenConfirm.render.js │ │ │ ├── AddErc20TokenForm │ │ │ │ ├── AddErc20TokenForm.js │ │ │ │ └── AddErc20TokenForm.render.js │ │ │ └── AddErc20TokenResult │ │ │ │ ├── AddErc20TokenResult.js │ │ │ │ └── AddErc20TokenResult.render.js │ │ ├── AddPbaasCurrency │ │ │ ├── AddPbaasCurrencyConfirm │ │ │ │ ├── AddPbaasCurrencyConfirm.js │ │ │ │ └── AddPbaasCurrencyConfirm.render.js │ │ │ ├── AddPbaasCurrencyForm │ │ │ │ ├── AddPbaasCurrencyForm.js │ │ │ │ └── AddPbaasCurrencyForm.render.js │ │ │ └── AddPbaasCurrencyResult │ │ │ │ ├── AddPbaasCurrencyResult.js │ │ │ │ └── AddPbaasCurrencyResult.render.js │ │ ├── AuthenticateUser │ │ │ ├── AuthenticateUserForm │ │ │ │ └── AuthenticateUserForm.js │ │ │ ├── AuthenticateUserPassword │ │ │ │ └── AuthenticateUserPassword.js │ │ │ └── AuthenticateUserResult │ │ │ │ └── AuthenticateUserResult.js │ │ ├── ConversionSend │ │ │ ├── ConversionSendConfirm │ │ │ │ ├── ConversionSendConfirm.js │ │ │ │ └── ConversionSendConfirm.render.js │ │ │ ├── ConversionSendForm │ │ │ │ ├── ConversionSendForm.js │ │ │ │ └── ConversionSendForm.render.js │ │ │ └── ConversionSendResult │ │ │ │ ├── ConversionSendResult.js │ │ │ │ └── ConversionSendResult.render.js │ │ ├── ConvertOrCrossChainSend │ │ │ ├── ConvertOrCrossChainSendConfirm │ │ │ │ └── ConvertOrCrossChainSendConfirm.js │ │ │ ├── ConvertOrCrossChainSendForm │ │ │ │ └── ConvertOrCrossChainSendForm.js │ │ │ └── ConvertOrCrossChainSendResult │ │ │ │ └── ConvertOrCrossChainSendResult.js │ │ ├── DepositSend │ │ │ ├── DepositSendConfirm │ │ │ │ ├── DepositSendConfirm.js │ │ │ │ └── DepositSendConfirm.render.js │ │ │ ├── DepositSendForm │ │ │ │ ├── DepositSendForm.js │ │ │ │ └── DepositSendForm.render.js │ │ │ └── DepositSendResult │ │ │ │ ├── DepositSendResult.js │ │ │ │ └── DepositSendResult.render.js │ │ ├── LinkIdentity │ │ │ ├── LinkIdentityConfirm │ │ │ │ ├── LinkIdentityConfirm.js │ │ │ │ └── LinkIdentityConfirm.render.js │ │ │ ├── LinkIdentityForm │ │ │ │ ├── LinkIdentityForm.js │ │ │ │ └── LinkIdentityForm.render.js │ │ │ └── LinkIdentityResult │ │ │ │ ├── LinkIdentityResult.js │ │ │ │ └── LinkIdentityResult.render.js │ │ ├── ProvisionIdentity │ │ │ ├── ProvisionIdentityConfirm │ │ │ │ ├── ProvisionIdentityConfirm.js │ │ │ │ └── ProvisionIdentityConfirm.render.js │ │ │ ├── ProvisionIdentityForm │ │ │ │ └── ProvisionIdentityForm.js │ │ │ └── ProvisionIdentityResult │ │ │ │ ├── ProvisionIdentityResult.js │ │ │ │ └── ProvisionIdentityResult.render.js │ │ ├── RecoverIdentity │ │ │ ├── RecoverIdentityConfirm │ │ │ │ ├── RecoverIdentityConfirm.js │ │ │ │ └── RecoverIdentityConfirm.render.js │ │ │ ├── RecoverIdentityForm │ │ │ │ ├── RecoverIdentityForm.js │ │ │ │ └── RecoverIdentityForm.render.js │ │ │ └── RecoverIdentityResult │ │ │ │ ├── RecoverIdentityResult.js │ │ │ │ └── RecoverIdentityResult.render.js │ │ ├── RevokeIdentity │ │ │ ├── RevokeIdentityConfirm │ │ │ │ ├── RevokeIdentityConfirm.js │ │ │ │ └── RevokeIdentityConfirm.render.js │ │ │ ├── RevokeIdentityForm │ │ │ │ ├── RevokeIdentityForm.js │ │ │ │ └── RevokeIdentityForm.render.js │ │ │ └── RevokeIdentityResult │ │ │ │ ├── RevokeIdentityResult.js │ │ │ │ └── RevokeIdentityResult.render.js │ │ ├── SendModal.js │ │ ├── SendModal.render.js │ │ ├── TraditionalCryptoSend │ │ │ ├── TraditionalCryptoSendConfirm │ │ │ │ └── TraditionalCryptoSendConfirm.js │ │ │ ├── TraditionalCryptoSendForm │ │ │ │ └── TraditionalCryptoSendForm.js │ │ │ └── TraditionalCryptoSendResult │ │ │ │ └── TraditionalCryptoSendResult.js │ │ └── WithdrawSend │ │ │ ├── WithdrawSendConfirm │ │ │ ├── WithdrawSendConfirm.js │ │ │ └── WithdrawSendConfirm.render.js │ │ │ ├── WithdrawSendForm │ │ │ ├── WithdrawSendForm.js │ │ │ └── WithdrawSendForm.render.js │ │ │ └── WithdrawSendResult │ │ │ ├── WithdrawSendResult.js │ │ │ └── WithdrawSendResult.render.js │ ├── SetupSeedModal │ │ ├── CreateSeed │ │ │ └── CreateSeed.js │ │ ├── ImportSeed │ │ │ └── ImportSeed.js │ │ └── SetupSeedModal.js │ ├── StandardButton.js │ ├── SubWalletCard.js │ ├── TextInputModal │ │ └── TextInputModal.js │ ├── TxDetailsModal │ │ └── TxDetailsModal.js │ ├── VerusIdDetailsModal │ │ └── VerusIdDetailsModal.js │ └── VerusIdObjectData.js ├── containers │ ├── AddCoin │ │ └── AddCoin.js │ ├── Coin │ │ ├── CoinMenus.js │ │ ├── ConvertCoin │ │ │ ├── ConvertCoin.js │ │ │ └── ConvertCoin.render.js │ │ ├── DynamicHeader.js │ │ ├── ManageCoin │ │ │ ├── DepositCoin │ │ │ │ ├── DepositCoin.js │ │ │ │ └── DepositCoin.render.js │ │ │ ├── ManageCoin.js │ │ │ └── WithdrawCoin │ │ │ │ ├── WithdrawCoin.js │ │ │ │ └── WithdrawCoin.render.js │ │ ├── Overview │ │ │ └── Overview.js │ │ ├── ReceiveCoin │ │ │ ├── ReceiveCoin.js │ │ │ └── ReceiveCoin.render.js │ │ └── SendCoin │ │ │ └── SendCoin.js │ ├── CoinDetails │ │ └── CoinDetails.js │ ├── Convert │ │ ├── Convert.js │ │ └── ConvertCard │ │ │ └── ConvertCard.js │ ├── CreateWallet │ │ ├── CreateWallet.js │ │ └── Forms │ │ │ ├── CreateSeed │ │ │ ├── CreateSeed.js │ │ │ └── Forms │ │ │ │ ├── SeedIntro.js │ │ │ │ └── SeedWords.js │ │ │ ├── ImportWallet │ │ │ ├── Forms │ │ │ │ ├── ImportIntro.js │ │ │ │ ├── ImportSeed.js │ │ │ │ └── ImportText.js │ │ │ └── ImportWallet.js │ │ │ └── WalletIntro.js │ ├── DeepLink │ │ ├── DeepLink.js │ │ ├── InvoiceInfo │ │ │ └── InvoiceInfo.js │ │ ├── InvoicePaymentConfiguration │ │ │ └── InvoicePaymentConfiguration.js │ │ ├── LoginRequestComplete │ │ │ └── LoginRequestComplete.js │ │ ├── LoginRequestIdentity │ │ │ └── LoginRequestIdentity.js │ │ └── LoginRequestInfo │ │ │ └── LoginRequestInfo.js │ ├── DisplaySeed │ │ └── DisplaySeed.js │ ├── FundSourceSelect │ │ └── FundSourceSelectList.js │ ├── Home │ │ ├── Home.js │ │ ├── Home.render.js │ │ ├── Home.themes.js │ │ ├── HomeFAB │ │ │ └── HomeFAB.js │ │ └── HomeWidgets │ │ │ ├── CurrencyWidget.js │ │ │ ├── NotificationWidget.js │ │ │ ├── TotalUniBalanceWidget.js │ │ │ └── VerusIdWidget.js │ ├── Identity │ │ ├── AddIdentity │ │ │ ├── Container.js │ │ │ ├── View.js │ │ │ └── index.js │ │ ├── Container.js │ │ ├── Home │ │ │ ├── AttestationDetails │ │ │ │ ├── Container.js │ │ │ │ ├── View.js │ │ │ │ └── index.js │ │ │ ├── ScanBadge │ │ │ │ ├── Container.js │ │ │ │ ├── View.js │ │ │ │ └── index.js │ │ │ ├── ScannedInformation │ │ │ │ ├── Container.js │ │ │ │ ├── View.js │ │ │ │ ├── index.js │ │ │ │ ├── mockData.js │ │ │ │ └── styles.js │ │ │ └── View.js │ │ ├── PersonalInfo │ │ │ ├── AlphaSort │ │ │ │ └── AlphabeticalSort.js │ │ │ ├── CategoryDialogs │ │ │ │ ├── AddCategory.js │ │ │ │ └── DeleteCategory.js │ │ │ ├── ClaimCategoryDetails │ │ │ │ ├── Container.js │ │ │ │ ├── View.js │ │ │ │ └── index.js │ │ │ ├── ClaimDetails │ │ │ │ ├── Container.js │ │ │ │ ├── View.js │ │ │ │ └── index.js │ │ │ ├── ClaimManager │ │ │ │ ├── Container.js │ │ │ │ ├── MoveIntoCategory │ │ │ │ │ ├── Container.js │ │ │ │ │ ├── View.js │ │ │ │ │ └── index.js │ │ │ │ ├── View.js │ │ │ │ ├── index.js │ │ │ │ └── utils │ │ │ │ │ ├── getShowHideIcon.js │ │ │ │ │ └── truncateString.js │ │ │ ├── Container.js │ │ │ ├── RequestAttestation │ │ │ │ ├── Container.js │ │ │ │ ├── RequestDialog.js │ │ │ │ ├── View.js │ │ │ │ └── index.js │ │ │ ├── View.js │ │ │ ├── index.js │ │ │ └── utils │ │ │ │ ├── claimCategoriesReducer.js │ │ │ │ ├── searchByCategoriesAndClaims.js │ │ │ │ └── useClaimCategories.js │ │ ├── View.js │ │ ├── index.js │ │ └── tabs.js │ ├── LoadingScreen │ │ ├── LoadingScreen.js │ │ └── LoadingScreen.styles.js │ ├── Login │ │ └── Login.js │ ├── Onboard │ │ ├── CreateProfile │ │ │ ├── CreateProfile.js │ │ │ └── Forms │ │ │ │ ├── ChooseName.js │ │ │ │ ├── CreatePassword.js │ │ │ │ └── UseBiometrics.js │ │ └── Welcome │ │ │ ├── LandingScreen.js │ │ │ └── WelcomeSlider.js │ ├── Personal │ │ ├── Personal.js │ │ ├── Personal.render.js │ │ ├── PersonalAttributes │ │ │ ├── PersonalAttributes.js │ │ │ ├── PersonalAttributes.render.js │ │ │ └── PersonalAttributesEditName │ │ │ │ ├── PersonalAttributesEditName.js │ │ │ │ └── PersonalAttributesEditName.render.js │ │ ├── PersonalContact │ │ │ ├── PersonalContact.js │ │ │ └── PersonalContact.render.js │ │ ├── PersonalImages │ │ │ ├── PersonalImages.js │ │ │ ├── PersonalImages.render.js │ │ │ └── PersonalLocationsEditImage │ │ │ │ ├── PersonalImagesEditImage.js │ │ │ │ └── PersonalImagesEditImage.render.js │ │ ├── PersonalInfo │ │ │ ├── PersonalInfo.js │ │ │ └── PersonalInfo.render.js │ │ ├── PersonalIntroSlider │ │ │ └── PersonalIntroSlider.js │ │ ├── PersonalLocations │ │ │ ├── PersonalLocations.js │ │ │ ├── PersonalLocations.render.js │ │ │ ├── PersonalLocationsEditAddress │ │ │ │ ├── PersonalLocationsEditAddress.js │ │ │ │ └── PersonalLocationsEditAddress.render.js │ │ │ └── PersonalLocationsEditTaxCountry │ │ │ │ ├── PersonalLocationsEditTaxCountry.js │ │ │ │ └── PersonalLocationsEditTaxCountry.render.js │ │ └── PersonalPaymentMethods │ │ │ ├── PersonalPaymentMethods.js │ │ │ ├── PersonalPaymentMethods.render.js │ │ │ ├── PersonalPaymentMethodsEditBankAccount │ │ │ ├── PersonalPaymentMethodsEditBankAccount.js │ │ │ └── PersonalPaymentMethodsEditBankAccount.render.js │ │ │ └── PersonalPaymentMethodsEditBankAccountAddress │ │ │ ├── PersonalPaymentMethodsEditBankAccountAddress.js │ │ │ └── PersonalPaymentMethodsEditBankAccountAddress.render.js │ ├── RecoverSeeds │ │ └── RecoverSeedsSelectAccount.js │ ├── RevokeRecover │ │ ├── RevokeRecoverIdentityForm.js │ │ └── RevokeRecoverSlider.js │ ├── RootStack │ │ ├── ConvertStackScreens │ │ │ └── ConvertStackScreens.js │ │ ├── DeepLinkStackScreens │ │ │ └── DeepLinkStackScreens.js │ │ ├── HomeTabScreens │ │ │ └── HomeTabScreens.js │ │ ├── LoadingStackScreens │ │ │ └── LoadingStackScreens.js │ │ ├── MainStackScreens │ │ │ └── MainStackScreens.js │ │ ├── ProfileStackScreens │ │ │ └── ProfileStackScreens.js │ │ ├── RecoverSeedsStackScreens │ │ │ └── RecoverSeedsStackScreens.js │ │ ├── RevokeRecoverStackScreens │ │ │ └── RevokeRecoverStackScreens.js │ │ ├── RootStackScreens.js │ │ ├── ServicesStackScreens │ │ │ └── ServicesStackScreens.js │ │ ├── SignedInStackScreens │ │ │ └── SignedInStackScreens.js │ │ ├── SignedOutNoKeyStackScreens │ │ │ └── SignedOutNoKeyStackScreens.js │ │ ├── SignedOutStackScreens │ │ │ └── SignedOutStackScreens.js │ │ └── WalletStackScreens │ │ │ └── WalletStackScreens.js │ ├── SecureLoading │ │ ├── SecureLoading.js │ │ └── SecureLoading.styles.js │ ├── Services │ │ ├── Service │ │ │ └── Service.js │ │ ├── ServiceComponents │ │ │ ├── PbaasPreconvertService │ │ │ │ ├── PbaasPreconvertService.js │ │ │ │ ├── PbaasPreconvertService.render.js │ │ │ │ └── PbaasPreconvertServiceOverview │ │ │ │ │ └── PbaasPreconvertServiceOverview.js │ │ │ ├── VerusIdService │ │ │ │ ├── VerusIdLogin.js │ │ │ │ ├── VerusIdService.js │ │ │ │ ├── VerusIdService.render.js │ │ │ │ ├── VerusIdServiceIntroSlider │ │ │ │ │ └── VerusIdServiceIntroSlider.js │ │ │ │ └── VerusIdServiceOverview │ │ │ │ │ ├── VerusIdServiceOverview.js │ │ │ │ │ └── VerusIdServiceOverview.render.js │ │ │ └── WyreService │ │ │ │ ├── WyreService.js │ │ │ │ ├── WyreService.render.js │ │ │ │ ├── WyreServiceAccount │ │ │ │ ├── WyreServiceAccount.js │ │ │ │ ├── WyreServiceAccountCreator │ │ │ │ │ └── WyreServiceAccountCreator.js │ │ │ │ ├── WyreServiceAccountData │ │ │ │ │ ├── WyreServiceAccountData.js │ │ │ │ │ └── WyreServiceAccountData.render.js │ │ │ │ ├── WyreServiceAccountOverview │ │ │ │ │ ├── WyreServiceAccountOverview.js │ │ │ │ │ └── WyreServiceAccountOverview.render.js │ │ │ │ ├── WyreServiceAddPaymentMethod │ │ │ │ │ ├── WyreServiceAddPaymentMethod.js │ │ │ │ │ └── WyreServiceAddPaymentMethod.render.js │ │ │ │ └── WyreServiceEditPaymentMethod │ │ │ │ │ ├── WyreServiceEditPaymentMethod.js │ │ │ │ │ └── WyreServiceEditPaymentMethod.render.js │ │ │ │ └── WyreServiceIntroSlider │ │ │ │ └── WyreServiceIntroSlider.js │ │ ├── ServiceTools │ │ │ └── ServiceProvidedInfoOverview │ │ │ │ ├── ServiceProvidedInfoOverview.js │ │ │ │ └── ServiceProvidedInfoOverview.render.js │ │ ├── Services.js │ │ ├── Services.render.js │ │ └── ServicesOverview │ │ │ ├── ServicesOverview.js │ │ │ └── ServicesOverview.render.js │ ├── Settings │ │ ├── AppInfo │ │ │ └── AppInfo.js │ │ ├── ProfileSettings │ │ │ ├── DeleteProfile │ │ │ │ └── DeleteProfile.js │ │ │ ├── ProfileInfo │ │ │ │ ├── ProfileInfo.js │ │ │ │ └── ProfileInfo.styles.js │ │ │ ├── ProfileSettings.js │ │ │ ├── RecoverSeed │ │ │ │ └── RecoverSeed.js │ │ │ └── ResetPwd │ │ │ │ └── ResetPwd.js │ │ ├── SettingsMenus.js │ │ └── WalletSettings │ │ │ ├── AddressBlocklist │ │ │ ├── AddressBlocklist.js │ │ │ └── AddressBlocklist.render.js │ │ │ ├── CoinSettings │ │ │ └── CoinSettings.js │ │ │ ├── GeneralWalletSettings │ │ │ └── GeneralWalletSettings.js │ │ │ ├── VrpcOverrides │ │ │ ├── VrpcOverrides.js │ │ │ └── VrpcOverrides.render.js │ │ │ └── WalletSettings.js │ ├── SideMenu │ │ ├── SideMenu.js │ │ └── SideMenu.render.js │ ├── SignUp │ │ ├── SignUp.js │ │ └── SignUp.render.js │ ├── SignedOutDropdown │ │ └── SignedOutDropdown.js │ ├── SubWalletSelect │ │ └── SubWalletSelectorModal.js │ └── VerusPay │ │ ├── VerusPay.js │ │ └── VerusPay.styles.js ├── globals │ ├── colors.js │ └── globalStyles.js ├── hooks │ ├── useObjectSelector.js │ └── usePrevious.js ├── images │ ├── cryptologo │ │ ├── default │ │ │ ├── btc │ │ │ │ ├── bch │ │ │ │ │ ├── bch_dark.svg │ │ │ │ │ └── bch_light.svg │ │ │ │ ├── btc │ │ │ │ │ ├── btc_dark.svg │ │ │ │ │ └── btc_light.svg │ │ │ │ ├── ccl │ │ │ │ │ ├── ccl_dark.svg │ │ │ │ │ └── ccl_light.svg │ │ │ │ ├── dash │ │ │ │ │ ├── dash_dark.svg │ │ │ │ │ └── dash_light.svg │ │ │ │ ├── dgb │ │ │ │ │ ├── dgb_dark.svg │ │ │ │ │ └── dgb_light.svg │ │ │ │ ├── doge │ │ │ │ │ ├── doge_dark.svg │ │ │ │ │ └── doge_light.svg │ │ │ │ ├── index.js │ │ │ │ ├── kmd │ │ │ │ │ ├── kmd_dark.svg │ │ │ │ │ └── kmd_light.svg │ │ │ │ ├── ltc │ │ │ │ │ ├── ltc_dark.svg │ │ │ │ │ └── ltc_light.svg │ │ │ │ ├── oot │ │ │ │ │ ├── oot_dark.svg │ │ │ │ │ └── oot_light.svg │ │ │ │ ├── vrsc │ │ │ │ │ ├── vrsc_dark.svg │ │ │ │ │ └── vrsc_light.svg │ │ │ │ ├── vrsctest │ │ │ │ │ ├── vrsctest_dark.svg │ │ │ │ │ └── vrsctest_light.svg │ │ │ │ ├── zec │ │ │ │ │ ├── zec_dark.svg │ │ │ │ │ └── zec_light.svg │ │ │ │ ├── zectest │ │ │ │ │ ├── zectest_dark.svg │ │ │ │ │ └── zectest_light.svg │ │ │ │ └── zilla │ │ │ │ │ ├── zilla_dark.svg │ │ │ │ │ └── zilla_light.svg │ │ │ ├── fiat │ │ │ │ ├── aud │ │ │ │ │ ├── aud_dark.svg │ │ │ │ │ └── aud_light.svg │ │ │ │ ├── eur │ │ │ │ │ ├── eur_dark.svg │ │ │ │ │ └── eur_light.svg │ │ │ │ ├── index.js │ │ │ │ └── usd │ │ │ │ │ ├── usd_dark.svg │ │ │ │ │ └── usd_light.svg │ │ │ ├── pbaas │ │ │ │ ├── bridge-veth │ │ │ │ │ ├── bridge-veth_dark.svg │ │ │ │ │ └── bridge-veth_light.svg │ │ │ │ ├── chips │ │ │ │ │ ├── chips_dark.svg │ │ │ │ │ └── chips_light.svg │ │ │ │ ├── index.js │ │ │ │ ├── kaiju │ │ │ │ │ ├── kaiju_dark.svg │ │ │ │ │ └── kaiju_light.svg │ │ │ │ ├── pure │ │ │ │ │ ├── pure_dark.svg │ │ │ │ │ └── pure_light.svg │ │ │ │ ├── switch │ │ │ │ │ ├── switch_dark.svg │ │ │ │ │ └── switch_light.svg │ │ │ │ └── varrr │ │ │ │ │ ├── varrr_dark.svg │ │ │ │ │ └── varrr_light.svg │ │ │ └── web3 │ │ │ │ ├── aave │ │ │ │ ├── aave_dark.svg │ │ │ │ └── aave_light.svg │ │ │ │ ├── bal │ │ │ │ ├── bal_dark.svg │ │ │ │ └── bal_light.svg │ │ │ │ ├── bat │ │ │ │ ├── bat_dark.svg │ │ │ │ └── bat_light.svg │ │ │ │ ├── bnt │ │ │ │ ├── bnt_dark.svg │ │ │ │ └── bnt_light.svg │ │ │ │ ├── crv │ │ │ │ ├── crv_dark.svg │ │ │ │ └── crv_light.svg │ │ │ │ ├── dai │ │ │ │ ├── dai_dark.svg │ │ │ │ └── dai_light.svg │ │ │ │ ├── eth │ │ │ │ ├── eth_dark.svg │ │ │ │ └── eth_light.svg │ │ │ │ ├── eurc │ │ │ │ ├── eurc_dark.svg │ │ │ │ └── eurc_light.svg │ │ │ │ ├── hot │ │ │ │ ├── hot_dark.svg │ │ │ │ └── hot_light.svg │ │ │ │ ├── index.js │ │ │ │ ├── link │ │ │ │ ├── link_dark.svg │ │ │ │ └── link_light.svg │ │ │ │ ├── mkr │ │ │ │ ├── mkr_dark.svg │ │ │ │ └── mkr_light.svg │ │ │ │ ├── nexo │ │ │ │ ├── nexo_dark.svg │ │ │ │ └── nexo_light.svg │ │ │ │ ├── rfox │ │ │ │ ├── rfox_dark.svg │ │ │ │ └── rfox_light.svg │ │ │ │ ├── sushi │ │ │ │ ├── sushi_dark.svg │ │ │ │ └── sushi_light.svg │ │ │ │ ├── tbtc │ │ │ │ ├── tbtc_dark.svg │ │ │ │ └── tbtc_light.svg │ │ │ │ ├── uni │ │ │ │ ├── uni_dark.svg │ │ │ │ └── uni_light.svg │ │ │ │ ├── usdc │ │ │ │ ├── usdc_dark.svg │ │ │ │ └── usdc_light.svg │ │ │ │ ├── usdt │ │ │ │ ├── usdt_dark.svg │ │ │ │ └── usdt_light.svg │ │ │ │ ├── ven │ │ │ │ ├── ven_dark.svg │ │ │ │ └── ven_light.svg │ │ │ │ ├── wbtc │ │ │ │ ├── wbtc_dark.svg │ │ │ │ └── wbtc_light.svg │ │ │ │ ├── yfi │ │ │ │ ├── yfi_dark.svg │ │ │ │ └── yfi_light.svg │ │ │ │ └── zrx │ │ │ │ ├── zrx_dark.svg │ │ │ │ └── zrx_light.svg │ │ ├── default_chain.png │ │ └── index.js │ ├── customIcons │ │ ├── Biometrics.svg │ │ ├── EncryptLocally.svg │ │ ├── EnterKeyIcon.svg │ │ ├── MnemonicSeed.svg │ │ ├── MyProfile.svg │ │ ├── MyWallet.svg │ │ ├── MyWalletLight.svg │ │ ├── ScanQrIcon.svg │ │ ├── SubWallets.svg │ │ ├── TwentyFourWordIcon.svg │ │ ├── Verus.png │ │ ├── VerusIdLogo.svg │ │ ├── VerusLogo.svg │ │ ├── VerusPayTextLogo.svg │ │ ├── add.png │ │ ├── addCoin.png │ │ ├── aproved.png │ │ ├── bank-building.png │ │ ├── bank.png │ │ ├── bank2.png │ │ ├── bankBuildingBlack.png │ │ ├── buy.png │ │ ├── buySell.png │ │ ├── calendar.png │ │ ├── call-answer.png │ │ ├── coinAdd.svg │ │ ├── coins-icon.png │ │ ├── email.png │ │ ├── file.png │ │ ├── home-icon-silhouette.png │ │ ├── id-card.png │ │ ├── index.js │ │ ├── maps-and-flags.png │ │ ├── pending.png │ │ ├── piggybank.png │ │ ├── received-icon.svg │ │ ├── recover-icon.png │ │ ├── revoke-icon.png │ │ ├── sell.png │ │ ├── transactions │ │ │ ├── in-arrow.svg │ │ │ ├── index.js │ │ │ ├── interest-plus.svg │ │ │ ├── out-arrow.svg │ │ │ ├── pending-clock.svg │ │ │ ├── self-arrow.svg │ │ │ └── unknown-logo.svg │ │ ├── user.png │ │ ├── verusHeaderLogo.png │ │ ├── verusPay.svg │ │ ├── verusid-at-icon.svg │ │ ├── verusid-error-icon.svg │ │ ├── verusid-wallet-bg-blue.svg │ │ └── vrsc.png │ └── servicelogo │ │ ├── index.js │ │ ├── verusid │ │ └── verusid_light.svg │ │ └── wyre │ │ └── wyre_light.svg ├── reducers │ ├── alert.js │ ├── authentication.js │ ├── cache │ │ ├── electrum.js │ │ ├── ethtxreceipts.js │ │ └── headers.js │ ├── channelStores │ │ ├── dlight.js │ │ ├── electrum.js │ │ ├── erc20.js │ │ ├── eth.js │ │ ├── general.js │ │ ├── verusid.js │ │ ├── vrpc.js │ │ └── wyre.js │ ├── coins.js │ ├── deeplink.js │ ├── errors.js │ ├── gui │ │ ├── buySellCrypto.js │ │ ├── coinMenus.js │ │ ├── coinOverview.js │ │ └── customCoins.js │ ├── identity.js │ ├── index.js │ ├── keyboard.js │ ├── ledger.js │ ├── loadingModal.js │ ├── modal.js │ ├── notifications.js │ ├── paymentMethods.js │ ├── personal.js │ ├── responseHeaders.js │ ├── secureLoading.js │ ├── sendModal.js │ ├── services.js │ ├── settings.js │ ├── updates.js │ └── widgets.js ├── sagas │ ├── authentication.js │ ├── channels │ │ ├── dlight.js │ │ ├── electrum.js │ │ ├── erc20.js │ │ ├── eth.js │ │ ├── general.js │ │ ├── verusid.js │ │ ├── vrpc.js │ │ └── wyre.js │ ├── coins.js │ ├── deeplink.js │ ├── identity.js │ ├── index.js │ ├── notifications.js │ ├── transactions.js │ └── widgets.js ├── selectors │ ├── address.js │ ├── authentication.js │ ├── identity.js │ ├── linkedIdentities.js │ ├── networkName.js │ ├── notifications.js │ ├── paymentMethods.js │ ├── rates.js │ ├── settings.js │ ├── transactions.js │ └── widgets.js ├── store │ └── index.js ├── styles │ ├── buttons.styles.js │ ├── containers.styles.js │ ├── index.js │ ├── misc.styles.js │ ├── roots.styles.js │ ├── tables.styles.js │ └── text.styles.js ├── tests │ └── helpers │ │ ├── ChainDefinitions.js │ │ ├── MockAppState.js │ │ ├── MockAuthData.js │ │ ├── MockChainInfo.js │ │ ├── MockNetwork.js │ │ ├── MockNumbers.js │ │ ├── MockServerData.js │ │ └── SetFetchParams.js └── utils │ ├── CoinData │ ├── CoinData.js │ ├── CoinDirectory.js │ ├── CoinsList.js │ ├── Graphics.js │ └── electrum │ │ ├── dpow.js │ │ ├── fees.js │ │ └── servers.js │ ├── InitialData │ ├── Attestation.js │ ├── Claim.js │ ├── ClaimCategory.js │ ├── Identity.js │ └── updateStoredItems.js │ ├── QrScanner │ ├── ProcessedQr.js │ └── QrScanner.js │ ├── __tests__ │ ├── api │ │ ├── coinpaprika.int.test.js │ │ └── fiatrates.int.test.js │ ├── int │ │ ├── composite │ │ │ ├── getCompositeBalances.int.test.js │ │ │ ├── getCompositeFiatPrices.int.test.js │ │ │ ├── getCompositeInfo.int.test.js │ │ │ └── getCompositeTransactions.int.test.js │ │ ├── dlight │ │ │ └── initialization.int.test.js │ │ └── electrum │ │ │ ├── getBalances.int.test.js │ │ │ ├── getBlockHeight.int.test.js │ │ │ ├── getBlockInfo.int.test.js │ │ │ ├── getMerkle.int.test.js │ │ │ ├── getServerVersion.int.test.js │ │ │ ├── getTransaction.int.test.js │ │ │ ├── getTransactions.int.test.js │ │ │ └── getUnspent.int.test.js │ └── unit │ │ ├── CoinData.unit.test.js │ │ ├── authDataStorage.unit.test.js │ │ ├── electrumUpdates.unit.test.js │ │ ├── math.unit.test.js │ │ ├── objectManip.unit.test.js │ │ ├── promises.unit.test.js │ │ ├── seedCrypt.unit.test.js │ │ └── stringUtils.unit.test.js │ ├── addressBlocklist.js │ ├── agama-wallet-lib │ ├── block.js │ ├── coin-helpers.js │ ├── dlight-servers.js │ └── keys.js │ ├── api │ ├── channels │ │ ├── dlight │ │ │ ├── callCreators.js │ │ │ ├── requests │ │ │ │ ├── getAddresses.js │ │ │ │ ├── getBlockCount.js │ │ │ │ ├── getInfo.js │ │ │ │ ├── getPrivateBalance.js │ │ │ │ ├── getTransactions.js │ │ │ │ ├── preflightPrivateTransaction.js │ │ │ │ └── sendPrivateTransaction.js │ │ │ └── state │ │ │ │ ├── synchronizer.js │ │ │ │ └── walletFolder.js │ │ ├── electrum │ │ │ ├── callCreators.js │ │ │ ├── proxyServers.js │ │ │ ├── requests │ │ │ │ ├── getBalances.js │ │ │ │ ├── getBlockHeight.js │ │ │ │ ├── getBlockInfo.js │ │ │ │ ├── getMerkle.js │ │ │ │ ├── getServerVersion.js │ │ │ │ ├── getTransaction.js │ │ │ │ ├── getTransactions.js │ │ │ │ ├── getUnspent.js │ │ │ │ └── pushTx.js │ │ │ └── serverTester.js │ │ ├── erc20 │ │ │ ├── callCreator.js │ │ │ └── requests │ │ │ │ ├── getErc20Balance.js │ │ │ │ ├── getErc20Transactions.js │ │ │ │ ├── preflight.js │ │ │ │ ├── send.js │ │ │ │ └── specific │ │ │ │ ├── index.js │ │ │ │ └── rfox │ │ │ │ ├── claimAccountBalance.js │ │ │ │ ├── getTotalAccountBalance.js │ │ │ │ └── index.js │ │ ├── eth │ │ │ ├── callCreator.js │ │ │ └── requests │ │ │ │ ├── getEthBalance.js │ │ │ │ ├── getEthTransactions.js │ │ │ │ ├── getTxReceipt.js │ │ │ │ ├── preflight.js │ │ │ │ └── send.js │ │ ├── general │ │ │ ├── addressBlocklist │ │ │ │ └── getAddressBlocklist.js │ │ │ ├── btcFeesAPIs │ │ │ │ ├── atomicExplorer.js │ │ │ │ └── blockchainCom.js │ │ │ ├── callCreators.js │ │ │ └── ratesAPIs │ │ │ │ ├── coinPaprika.js │ │ │ │ └── fiatExchangeRates.js │ │ ├── verusid │ │ │ ├── callCreators.js │ │ │ └── requests │ │ │ │ ├── getCurrency.js │ │ │ │ ├── getCurrencyNameMap.js │ │ │ │ ├── getFriendlyNameMap.js │ │ │ │ ├── getIdentity.js │ │ │ │ ├── getWatchedIdentities.js │ │ │ │ └── updateIdentity.js │ │ ├── vrpc │ │ │ ├── callCreators.js │ │ │ └── requests │ │ │ │ ├── calculateCurrencyTransferFee.js │ │ │ │ ├── createVerusPayInvoice.js │ │ │ │ ├── estimateConversion.js │ │ │ │ ├── extractLoginConsentSig.js │ │ │ │ ├── extractVerusPayInvoiceSig.js │ │ │ │ ├── fundRawTransaction.js │ │ │ │ ├── getAddressBalances.js │ │ │ │ ├── getAddressDeltas.js │ │ │ │ ├── getAddressMempool.js │ │ │ │ ├── getAddressUtxos.js │ │ │ │ ├── getBlock.js │ │ │ │ ├── getCurrenciesMappedToEth.js │ │ │ │ ├── getCurrencyConversionPaths.js │ │ │ │ ├── getCurrencyConverters.js │ │ │ │ ├── getInfo.js │ │ │ │ ├── getInvoiceSourceOptions.js │ │ │ │ ├── getSendCurrencyTransaction.js │ │ │ │ ├── getSignatureInfo.js │ │ │ │ ├── getTransaction.js │ │ │ │ ├── getVdxfid.js │ │ │ │ ├── handleProvisioningResponse.js │ │ │ │ ├── listCurrencies.js │ │ │ │ ├── preflight.js │ │ │ │ ├── send.js │ │ │ │ ├── sendRawTransaction.js │ │ │ │ ├── signIdProvisioningRequest.js │ │ │ │ ├── signLoginConsentResponse.js │ │ │ │ ├── signMessage.js │ │ │ │ ├── verifyIdProvisioningResponse.js │ │ │ │ ├── verifyLoginConsentRequest.js │ │ │ │ ├── verifyMessage.js │ │ │ │ └── verifyVerusPayInvoice.js │ │ └── wyre │ │ │ ├── callCreators.js │ │ │ └── requests │ │ │ ├── convert.js │ │ │ ├── getBalances.js │ │ │ ├── getCurrencyConversionPaths.js │ │ │ ├── getDepositMethods.js │ │ │ ├── getPendingDeposits.js │ │ │ ├── getRates.js │ │ │ ├── getTransactions.js │ │ │ ├── getTransferFollowup.js │ │ │ ├── getWithdrawMethods.js │ │ │ ├── preflightConversion.js │ │ │ ├── preflightTransaction.js │ │ │ └── sendTransaction.js │ ├── errors │ │ ├── apiError.js │ │ ├── errorCodes.js │ │ └── errorMessages.js │ └── routers │ │ ├── convert.js │ │ ├── getAddressBalance.js │ │ ├── getConversionPaths.js │ │ ├── getDepositSources.js │ │ ├── getIdentity.js │ │ ├── getPendingDeposits.js │ │ ├── getTransferFollowup.js │ │ ├── getWithdrawDestinations.js │ │ ├── preflightConversion.js │ │ ├── preflightConvertOrCrossChain.js │ │ ├── preflightSend.js │ │ ├── send.js │ │ └── sendConvertOrCrossChain.js │ ├── asyncStore │ ├── asyncStore.js │ ├── authDataStorage.js │ ├── cache │ │ ├── blockHeaders.js │ │ ├── cache.js │ │ ├── electrumVersions.js │ │ ├── ethTxReceipts.js │ │ └── vrpcResponseCache.js │ ├── coinStorage.js │ ├── contractDefinitionStorage.js │ ├── currencyDefinitionStorage.js │ ├── identityStorage.js │ ├── notificationsStorage.js │ ├── personalDataStorage.js │ ├── serviceStoredDataStorage.js │ ├── settingsStorage.js │ ├── transactionsStorage.js │ └── widgetStorage.js │ ├── auth │ ├── authBox.js │ └── scorePassword.js │ ├── block.js │ ├── buffer.js │ ├── clipboard │ └── clipboard.js │ ├── constants │ ├── abi.js │ ├── abis │ │ └── verusBridgeDelegatorAbi.js │ ├── apps.js │ ├── bankAccountKeys.js │ ├── callingCodes.js │ ├── constants.js │ ├── convert.js │ ├── currencies.js │ ├── deeplink.js │ ├── defaultUpdateParams.js │ ├── dlightConstants.js │ ├── errors.js │ ├── intervalConstants.js │ ├── iso3166.js │ ├── notifications.js │ ├── personal.js │ ├── sendModal.js │ ├── services.js │ ├── storeType.js │ ├── web3Constants.js │ └── widgets.js │ ├── crypto │ ├── aes256.js │ ├── buildTx.js │ ├── deprecatedTxDecoderLib.js │ ├── hash.js │ ├── nullTx.js │ ├── randomBytes.js │ ├── script.js │ ├── txDecoder.js │ └── verifyMerkle.js │ ├── date.js │ ├── deeplink │ └── handleRedirect.js │ ├── defaultSubWallets.js │ ├── delayedAlert.js │ ├── delayedAsyncAlert.js │ ├── dragDetection.js │ ├── electrumUpdates.js │ ├── enabledChannels.js │ ├── errors.js │ ├── extraCoins │ ├── cryptocurrencies.json │ └── extraCoins.js │ ├── fullyqualifiedname.js │ ├── haptics │ └── haptics.js │ ├── identityTransform │ ├── identityDenormalizers.js │ └── identityNormalizers.js │ ├── keyGenerator │ └── keyGenerator.js │ ├── keychain │ └── keychain.js │ ├── keys.js │ ├── ledger │ └── extractLedgerData.js │ ├── linking.js │ ├── math.js │ ├── memoUtils.js │ ├── navigation │ ├── customBack.js │ └── header.js │ ├── normalizeNum.js │ ├── notification.js │ ├── objectManip.js │ ├── paymentMethod.js │ ├── permissions │ └── index.js │ ├── personal │ ├── displayUtils.js │ └── validation.js │ ├── price.js │ ├── promises.js │ ├── seedCrypt.js │ ├── services │ ├── ServiceTemplates.js │ ├── WyreApi.js │ ├── WyreProvider.js │ ├── WyreService.js │ └── translationUtils.js │ ├── standardization │ ├── extractWyreRates.js │ └── standardizeTxObj.js │ ├── stringUtils.js │ ├── subwallet │ ├── extractSubWallets.js │ └── subWalletStatus.js │ ├── translate.js │ ├── uid.js │ ├── verusPay │ ├── index.js │ └── versions │ │ └── v0.js │ ├── vrpc │ └── vrpcInterface.js │ └── web3 │ ├── provider.js │ └── web3Interface.js └── yarn.lock /.bundle/config: -------------------------------------------------------------------------------- 1 | BUNDLE_PATH: "vendor/bundle" 2 | BUNDLE_FORCE_RUBY_PLATFORM: 1 -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Windows files should use crlf line endings 2 | # https://help.github.com/articles/dealing-with-line-endings/ 3 | *.bat text eol=crlf 4 | -------------------------------------------------------------------------------- /.prettierrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | bracketSpacing: false, 3 | jsxBracketSameLine: true, 4 | singleQuote: true, 5 | trailingComma: 'all', 6 | arrowParens: 'avoid', 7 | bracketSameLine: true, 8 | }; 9 | -------------------------------------------------------------------------------- /.snyk: -------------------------------------------------------------------------------- 1 | # Snyk (https://snyk.io) policy file, patches or ignores known vulnerabilities. 2 | version: v1.19.0 3 | ignore: {} 4 | patch: {} 5 | -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "name": "Debug Android", 6 | "program": "${workspaceRoot}/.vscode/launchReactNative.js", 7 | "type": "reactnative", 8 | "request": "launch", 9 | "platform": "android", 10 | "sourceMaps": true, 11 | "cwd": "${workspaceFolder}", 12 | }, 13 | { 14 | "name": "Debug iOS", 15 | "program": "${workspaceRoot}/.vscode/launchReactNative.js", 16 | "type": "reactnative", 17 | "request": "launch", 18 | "platform": "ios", 19 | "target": "iPhone 5s", 20 | "cwd": "${workspaceFolder}", 21 | "sourceMaps": true, 22 | } 23 | ] 24 | } -------------------------------------------------------------------------------- /DISCLAIMER.txt: -------------------------------------------------------------------------------- 1 | THIS IS EXPERIMENTAL SOFTWARE AND IT IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- /__mocks__/@react-native-community/async-storage.js: -------------------------------------------------------------------------------- 1 | export default from '@react-native-async-storage/async-storage/jest/async-storage-mock' 2 | -------------------------------------------------------------------------------- /__mocks__/ethers.js: -------------------------------------------------------------------------------- 1 | // const mockedModule = jest.mock('ethers'); 2 | // mockedModule.getDefaultProvider = jest.fn() 3 | // mockedModule.providers = { 4 | // EtherscanProvider: jest.fn() 5 | // } 6 | 7 | // module.exports = mockedModule; -------------------------------------------------------------------------------- /__mocks__/react-native-alert-async/mock.js: -------------------------------------------------------------------------------- 1 | let AsyncAlerts = [] 2 | let AlertResponse = false 3 | 4 | function mockRnAlertAsync() { 5 | return { 6 | AlertAsync: (title, desc, buttons, options) => { 7 | AsyncAlerts.push({title, desc, buttons, options}) 8 | return new Promise((resolve) => { 9 | resolve(AlertResponse) 10 | }) 11 | }, 12 | getAlerts: () => AsyncAlerts, 13 | setAlertResponse: (response) => { 14 | AlertResponse = response 15 | } 16 | } 17 | } 18 | 19 | module.exports = mockRnAlertAsync -------------------------------------------------------------------------------- /__mocks__/react-native-fetch/mocked_results/estimatefee.js: -------------------------------------------------------------------------------- 1 | //TODO: Add mock for estimatefee -------------------------------------------------------------------------------- /__mocks__/react-native-fetch/mocked_results/getbalance.js: -------------------------------------------------------------------------------- 1 | /** 2 | * This returns a getbalance result based on the supplied confirmed and unconfirmed balances 3 | * @param {Number} confirmed Confirmed balance to return 4 | * @param {Number} unconfirmed Unconfirmed balance to return 5 | */ 6 | const getbalance_mock = function(confirmed, unconfirmed) { 7 | return {confirmed, unconfirmed} 8 | } 9 | 10 | module.exports = getbalance_mock -------------------------------------------------------------------------------- /__mocks__/react-native-fetch/mocked_results/getblockinfo.js: -------------------------------------------------------------------------------- 1 | const gotten_blocks = require('./blockchain_data').gotten_blocks 2 | 3 | /** 4 | * The mock for getblockinfo. This function searches through the mock block list, and returns a block info object if it is found. 5 | * @param {Integer} height The blockheight of the block to get. If found in the mock block list, its info will be returned. 6 | */ 7 | const getblockinfo_mock = function(height) { 8 | if (Number(height) < 0 || Number(height) % 1 != 0) return {"code":1,"message":`${height} should be a non-negative integer`} 9 | if (gotten_blocks.hasOwnProperty(height)) return gotten_blocks[height] 10 | 11 | return {"code":1,"message":`height ${height} out of range`} 12 | } 13 | 14 | module.exports = getblockinfo_mock 15 | -------------------------------------------------------------------------------- /__mocks__/react-native-fetch/mocked_results/getcurrentblock.js: -------------------------------------------------------------------------------- 1 | /** 2 | * This returns a getcurrentblock result based on the supplied height 3 | * @param {Number} height The blockheight you would like returned from the API call 4 | */ 5 | const getcurrentblock_mock = function(height) { 6 | return height 7 | } 8 | 9 | module.exports = getcurrentblock_mock -------------------------------------------------------------------------------- /__mocks__/react-native-fetch/mocked_results/getmerkle.js: -------------------------------------------------------------------------------- 1 | const merkle_roots = require('./blockchain_data').merkle_roots 2 | 3 | /** 4 | * The mock for getmerkle. This function searches through the mock merkle root list, and returns a merkle root if it is found. 5 | * @param {Integer} height The blockheight of the utxo to fetch merkle hashes for. 6 | * @param {String} txid The txid string of the transaction to fetch merkle hashes for. 7 | */ 8 | const getmerkle_mock = function(height, txid) { 9 | if (merkle_roots.hasOwnProperty(`${txid}-${height}`)) return merkle_roots[`${txid}-${height}`] 10 | 11 | return {"code":1,"message":`${txid} should be a transaction hash`} 12 | } 13 | 14 | 15 | module.exports = getmerkle_mock -------------------------------------------------------------------------------- /__mocks__/react-native-fetch/mocked_results/gettransaction.js: -------------------------------------------------------------------------------- 1 | const gotten_utxos = require('./blockchain_data').gotten_utxos 2 | 3 | /** 4 | * The mock for gettransaction. This function searches through the mock UTXO list, and returns a transaction hash if it is found. 5 | * @param {String} txid The txid string of the transaction to get. If found in the mock UTXO list, its hash will be returned. 6 | */ 7 | const gettransaction_mock = function(txid) { 8 | if (gotten_utxos.hasOwnProperty(txid)) return gotten_utxos[txid] 9 | 10 | return { status: 'not found' } 11 | } 12 | 13 | module.exports = gettransaction_mock -------------------------------------------------------------------------------- /__mocks__/react-native-fetch/mocked_results/listtransactions.js: -------------------------------------------------------------------------------- 1 | const transaction_list = require('./blockchain_data').transaction_list 2 | 3 | /** 4 | * Mocks an electrum call to listtransactions, and returns a specified number 5 | * of transactions 6 | * @param {Integer} num_txs The number of txs to return 7 | */ 8 | const listtransactions_mock = function(num_txs) { 9 | let returned_txs = [] 10 | for (let i = 0; i < num_txs; i++) { 11 | returned_txs.push(transaction_list[Math.round(Math.random() * (transaction_list.length - 1))]) 12 | } 13 | 14 | return returned_txs 15 | } 16 | 17 | module.exports = listtransactions_mock 18 | -------------------------------------------------------------------------------- /__mocks__/react-native-fetch/mocked_results/listunspent.js: -------------------------------------------------------------------------------- 1 | const unspent_utxos = require('./blockchain_data').unspent_utxos 2 | 3 | /** 4 | * Mocks an electrum call to listunspent, and returns a specified number 5 | * of unspent UTXOs 6 | * @param {Integer} num_utxos The number of unspent utxos to return 7 | */ 8 | const listunspent_mock = function(num_utxos) { 9 | let returned_utxos = [] 10 | for (let i = 0; i < num_utxos; i++) { 11 | returned_utxos.push(unspent_utxos[Math.round(Math.random() * (unspent_utxos.length - 1))]) 12 | } 13 | 14 | return returned_utxos 15 | } 16 | 17 | module.exports = listunspent_mock 18 | -------------------------------------------------------------------------------- /__mocks__/react-native-fetch/mocked_results/pushtx.js: -------------------------------------------------------------------------------- 1 | //TODO: Add mock for pushtx -------------------------------------------------------------------------------- /__mocks__/react-native-fetch/mocked_results/server_version.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Returns a server version object with the specified version passed in 3 | * @param {String} version_string Server version string, traditonally in the format 'ElectrumX x.x.x' 4 | * @param {Number} version_int (Optional) Version integer, in the format x.x. If omitted, return will be 'ElectrumX' 5 | */ 6 | const server_version_mock = function(version_string, version_int) { 7 | if (version_int == null) return 'ElectrumX' 8 | return [ version_string, version_int.toString() ] 9 | } 10 | 11 | module.exports = server_version_mock -------------------------------------------------------------------------------- /__mocks__/react-native-fetch/util/mock_urls.js: -------------------------------------------------------------------------------- 1 | const FIAT_EXCHANGE_RATES_URL = "https://api.exchangeratesapi.io/latest?base=USD" 2 | const VERUS_RATE_URL = 'https://api.coinpaprika.com/v1/coins/vrsc-test-coin/ohlcv/latest' 3 | const MOCK_PROXY_URL = 'mock.proxy.server' 4 | const UNMOCK_FETCH = ' unmock' 5 | 6 | module.exports = { 7 | FIAT_EXCHANGE_RATES_URL, 8 | VERUS_RATE_URL, 9 | MOCK_PROXY_URL, 10 | UNMOCK_FETCH 11 | } -------------------------------------------------------------------------------- /__mocks__/react-native-randombytes.js: -------------------------------------------------------------------------------- 1 | const mockedModule = jest.mock('react-native-randombytes'); 2 | 3 | module.exports = mockedModule; -------------------------------------------------------------------------------- /__mocks__/react-native-verus-light-client/mock.js: -------------------------------------------------------------------------------- 1 | const { 2 | createWallet, 3 | openWallet, 4 | closeWallet, 5 | deleteWallet, 6 | request, 7 | startSync, 8 | stopSync 9 | } = require('./WalletFolder') 10 | 11 | function mockVerusLightClient() { 12 | return { 13 | createWallet, 14 | openWallet, 15 | closeWallet, 16 | deleteWallet, 17 | startSync, 18 | stopSync, 19 | request 20 | } 21 | } 22 | 23 | module.exports = mockVerusLightClient -------------------------------------------------------------------------------- /__mocks__/react-native-verus-light-client/requests/JsonRpc.js: -------------------------------------------------------------------------------- 1 | function formatResponse(id, result, error) { 2 | return { 3 | id, 4 | result, 5 | error, 6 | jsonrpc: "2.0" 7 | } 8 | } 9 | 10 | module.exports = formatResponse -------------------------------------------------------------------------------- /__mocks__/redux-saga.js: -------------------------------------------------------------------------------- 1 | const mockedModule = jest.mock('redux-saga'); 2 | 3 | module.exports = function() { 4 | return { 5 | run: jest.fn() 6 | } 7 | } -------------------------------------------------------------------------------- /__mocks__/redux/store.js: -------------------------------------------------------------------------------- 1 | class MockStore { 2 | constructor(state) { 3 | this.state = state 4 | this.reducers = {} 5 | this.actionHistory = [] 6 | } 7 | 8 | dispatch(action) { 9 | this.actionHistory = [...this.actionHistory, action] 10 | 11 | Object.keys(this.reducers).map(reducerName => { 12 | this.state = {...this.state, [reducerName]: this.reducers[reducerName](this.state[reducerName], action)} 13 | }) 14 | } 15 | 16 | setStore(store) { 17 | this.state = store 18 | } 19 | 20 | setReducers(reducers) { 21 | this.reducers = reducers 22 | } 23 | 24 | getState() { 25 | return this.state 26 | } 27 | 28 | getActions() { 29 | return this.actionHistory 30 | } 31 | } 32 | 33 | module.exports = MockStore -------------------------------------------------------------------------------- /__mocks__/rn-fetch-blob.js: -------------------------------------------------------------------------------- 1 | const mockedModule = jest.mock('rn-fetch-blob'); 2 | 3 | module.exports = mockedModule; -------------------------------------------------------------------------------- /android/.settings/org.eclipse.buildship.core.prefs: -------------------------------------------------------------------------------- 1 | arguments=--init-script /var/folders/k8/shp6b0812_19wbnyby10f1dw0000gn/T/d146c9752a26f79b52047fb6dc6ed385d064e120494f96f08ca63a317c41f94c.gradle --init-script /var/folders/k8/shp6b0812_19wbnyby10f1dw0000gn/T/52cde0cfcf3e28b8b7510e992210d9614505e0911af0c190bd590d7158574963.gradle 2 | auto.sync=false 3 | build.scans.enabled=false 4 | connection.gradle.distribution=GRADLE_DISTRIBUTION(WRAPPER) 5 | connection.project.dir= 6 | eclipse.preferences.version=1 7 | gradle.user.home= 8 | java.home=/Library/Java/JavaVirtualMachines/zulu-15.jdk/Contents/Home 9 | jvm.arguments= 10 | offline.mode=false 11 | override.workspace.settings=true 12 | show.console.view=true 13 | show.executions.view=true 14 | -------------------------------------------------------------------------------- /android/app/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /android/app/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | app 4 | Project app created by Buildship. 5 | 6 | 7 | 8 | 9 | org.eclipse.jdt.core.javabuilder 10 | 11 | 12 | 13 | 14 | org.eclipse.buildship.core.gradleprojectbuilder 15 | 16 | 17 | 18 | 19 | 20 | org.eclipse.jdt.core.javanature 21 | org.eclipse.buildship.core.gradleprojectnature 22 | 23 | 24 | -------------------------------------------------------------------------------- /android/app/.settings/org.eclipse.buildship.core.prefs: -------------------------------------------------------------------------------- 1 | connection.project.dir=.. 2 | eclipse.preferences.version=1 3 | -------------------------------------------------------------------------------- /android/app/bin/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | app 4 | Project app created by Buildship. 5 | 6 | 7 | 8 | 9 | org.eclipse.jdt.core.javabuilder 10 | 11 | 12 | 13 | 14 | org.eclipse.buildship.core.gradleprojectbuilder 15 | 16 | 17 | 18 | 19 | 20 | org.eclipse.jdt.core.javanature 21 | org.eclipse.buildship.core.gradleprojectnature 22 | 23 | 24 | -------------------------------------------------------------------------------- /android/app/bin/src/main/assets/fonts/AntDesign.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/bin/src/main/assets/fonts/AntDesign.ttf -------------------------------------------------------------------------------- /android/app/bin/src/main/assets/fonts/Entypo.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/bin/src/main/assets/fonts/Entypo.ttf -------------------------------------------------------------------------------- /android/app/bin/src/main/assets/fonts/EvilIcons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/bin/src/main/assets/fonts/EvilIcons.ttf -------------------------------------------------------------------------------- /android/app/bin/src/main/assets/fonts/Feather.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/bin/src/main/assets/fonts/Feather.ttf -------------------------------------------------------------------------------- /android/app/bin/src/main/assets/fonts/FontAwesome.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/bin/src/main/assets/fonts/FontAwesome.ttf -------------------------------------------------------------------------------- /android/app/bin/src/main/assets/fonts/FontAwesome5_Brands.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/bin/src/main/assets/fonts/FontAwesome5_Brands.ttf -------------------------------------------------------------------------------- /android/app/bin/src/main/assets/fonts/FontAwesome5_Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/bin/src/main/assets/fonts/FontAwesome5_Regular.ttf -------------------------------------------------------------------------------- /android/app/bin/src/main/assets/fonts/FontAwesome5_Solid.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/bin/src/main/assets/fonts/FontAwesome5_Solid.ttf -------------------------------------------------------------------------------- /android/app/bin/src/main/assets/fonts/Foundation.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/bin/src/main/assets/fonts/Foundation.ttf -------------------------------------------------------------------------------- /android/app/bin/src/main/assets/fonts/Ionicons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/bin/src/main/assets/fonts/Ionicons.ttf -------------------------------------------------------------------------------- /android/app/bin/src/main/assets/fonts/MaterialCommunityIcons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/bin/src/main/assets/fonts/MaterialCommunityIcons.ttf -------------------------------------------------------------------------------- /android/app/bin/src/main/assets/fonts/MaterialIcons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/bin/src/main/assets/fonts/MaterialIcons.ttf -------------------------------------------------------------------------------- /android/app/bin/src/main/assets/fonts/Octicons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/bin/src/main/assets/fonts/Octicons.ttf -------------------------------------------------------------------------------- /android/app/bin/src/main/assets/fonts/SimpleLineIcons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/bin/src/main/assets/fonts/SimpleLineIcons.ttf -------------------------------------------------------------------------------- /android/app/bin/src/main/assets/fonts/Zocial.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/bin/src/main/assets/fonts/Zocial.ttf -------------------------------------------------------------------------------- /android/app/bin/src/main/java/com/verusmobile/MainActivity.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/bin/src/main/java/com/verusmobile/MainActivity.class -------------------------------------------------------------------------------- /android/app/bin/src/main/java/com/verusmobile/MainApplication.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/bin/src/main/java/com/verusmobile/MainApplication.class -------------------------------------------------------------------------------- /android/app/bin/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/bin/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/bin/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/bin/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android/app/bin/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/bin/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/bin/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/bin/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android/app/bin/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/bin/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/bin/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/bin/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android/app/bin/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/bin/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/bin/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/bin/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android/app/bin/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/bin/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/bin/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/bin/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android/app/bin/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Verus Wallet 3 | 4 | -------------------------------------------------------------------------------- /android/app/bin/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /android/app/build_defs.bzl: -------------------------------------------------------------------------------- 1 | """Helper definitions to glob .aar and .jar targets""" 2 | 3 | def create_aar_targets(aarfiles): 4 | for aarfile in aarfiles: 5 | name = "aars__" + aarfile[aarfile.rindex("/") + 1:aarfile.rindex(".aar")] 6 | lib_deps.append(":" + name) 7 | android_prebuilt_aar( 8 | name = name, 9 | aar = aarfile, 10 | ) 11 | 12 | def create_jar_targets(jarfiles): 13 | for jarfile in jarfiles: 14 | name = "jars__" + jarfile[jarfile.rindex("/") + 1:jarfile.rindex(".jar")] 15 | lib_deps.append(":" + name) 16 | prebuilt_jar( 17 | name = name, 18 | binary_jar = jarfile, 19 | ) 20 | -------------------------------------------------------------------------------- /android/app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in /usr/local/Cellar/android-sdk/24.3.3/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | -------------------------------------------------------------------------------- /android/app/release/output.json: -------------------------------------------------------------------------------- 1 | [{"outputType":{"type":"APK"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":1,"versionName":"1.0","enabled":true,"outputFile":"app-release.apk","fullName":"release","baseName":"release"},"path":"app-release.apk","properties":{}}] -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/AntDesign.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/assets/fonts/AntDesign.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/Avenir-Black.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/assets/fonts/Avenir-Black.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/Avenir-Book.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/assets/fonts/Avenir-Book.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/Avenir-Light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/assets/fonts/Avenir-Light.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/Avenir-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/assets/fonts/Avenir-Medium.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/Entypo.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/assets/fonts/Entypo.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/EvilIcons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/assets/fonts/EvilIcons.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/Feather.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/assets/fonts/Feather.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/FontAwesome.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/assets/fonts/FontAwesome.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/FontAwesome5_Brands.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/assets/fonts/FontAwesome5_Brands.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/FontAwesome5_Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/assets/fonts/FontAwesome5_Regular.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/FontAwesome5_Solid.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/assets/fonts/FontAwesome5_Solid.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/Fontisto.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/assets/fonts/Fontisto.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/Foundation.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/assets/fonts/Foundation.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/Ionicons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/assets/fonts/Ionicons.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/MaterialCommunityIcons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/assets/fonts/MaterialCommunityIcons.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/MaterialIcons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/assets/fonts/MaterialIcons.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/Octicons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/assets/fonts/Octicons.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/SimpleLineIcons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/assets/fonts/SimpleLineIcons.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/SourceSansPro-Black.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/assets/fonts/SourceSansPro-Black.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/SourceSansPro-BlackItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/assets/fonts/SourceSansPro-BlackItalic.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/SourceSansPro-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/assets/fonts/SourceSansPro-Bold.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/SourceSansPro-BoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/assets/fonts/SourceSansPro-BoldItalic.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/SourceSansPro-ExtraLight.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/assets/fonts/SourceSansPro-ExtraLight.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/SourceSansPro-ExtraLightItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/assets/fonts/SourceSansPro-ExtraLightItalic.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/SourceSansPro-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/assets/fonts/SourceSansPro-Italic.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/SourceSansPro-Light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/assets/fonts/SourceSansPro-Light.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/SourceSansPro-LightItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/assets/fonts/SourceSansPro-LightItalic.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/SourceSansPro-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/assets/fonts/SourceSansPro-Regular.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/SourceSansPro-SemiBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/assets/fonts/SourceSansPro-SemiBold.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/SourceSansPro-SemiBoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/assets/fonts/SourceSansPro-SemiBoldItalic.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/Zocial.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/assets/fonts/Zocial.ttf -------------------------------------------------------------------------------- /android/app/src/main/java/com/verusmobile/ReactNativeFlipper.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | *

This source code is licensed under the MIT license found in the LICENSE file in the root 5 | * directory of this source tree. 6 | */ 7 | package com.verusmobile; 8 | 9 | import android.content.Context; 10 | import com.facebook.react.ReactInstanceManager; 11 | 12 | /** 13 | * Class responsible of loading Flipper inside your React Native application. This is the release 14 | * flavor of it so it's empty as we don't want to load Flipper. 15 | */ 16 | public class ReactNativeFlipper { 17 | public static void initializeFlipper(Context context, ReactInstanceManager reactInstanceManager) { 18 | // Do nothing as we don't want to initialize Flipper on Release. 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /android/app/src/main/java/com/verusmobile/SplashActivity.java: -------------------------------------------------------------------------------- 1 | package com.verusmobile; 2 | import android.app.Activity; 3 | import android.content.Intent; 4 | import android.os.Bundle; 5 | //import androidx.appcompat.app.AppCompatActivity; 6 | 7 | public class SplashActivity extends Activity { 8 | @Override 9 | protected void onCreate(Bundle savedInstanceState) { 10 | super.onCreate(savedInstanceState); 11 | 12 | Intent intent = new Intent(this, MainActivity.class); 13 | startActivity(intent); 14 | finish(); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-mdpi/node_modules_reactnativeelements_src_rating_images_bell.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/res/drawable-mdpi/node_modules_reactnativeelements_src_rating_images_bell.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-mdpi/node_modules_reactnativeelements_src_rating_images_heart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/res/drawable-mdpi/node_modules_reactnativeelements_src_rating_images_heart.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-mdpi/node_modules_reactnativeelements_src_rating_images_rocket.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/res/drawable-mdpi/node_modules_reactnativeelements_src_rating_images_rocket.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-mdpi/node_modules_reactnativeelements_src_rating_images_star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/res/drawable-mdpi/node_modules_reactnativeelements_src_rating_images_star.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-mdpi/node_modules_reactnavigation_src_views_assets_backicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/res/drawable-mdpi/node_modules_reactnavigation_src_views_assets_backicon.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-mdpi/node_modules_reactnavigation_src_views_assets_backiconmask.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/res/drawable-mdpi/node_modules_reactnavigation_src_views_assets_backiconmask.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-mdpi/src_assets_vrsc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/res/drawable-mdpi/src_assets_vrsc.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-mdpi/src_images_cryptologo_bch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/res/drawable-mdpi/src_images_cryptologo_bch.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-mdpi/src_images_cryptologo_btc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/res/drawable-mdpi/src_images_cryptologo_btc.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-mdpi/src_images_cryptologo_ccl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/res/drawable-mdpi/src_images_cryptologo_ccl.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-mdpi/src_images_cryptologo_dash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/res/drawable-mdpi/src_images_cryptologo_dash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-mdpi/src_images_cryptologo_dgb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/res/drawable-mdpi/src_images_cryptologo_dgb.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-mdpi/src_images_cryptologo_doge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/res/drawable-mdpi/src_images_cryptologo_doge.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-mdpi/src_images_cryptologo_k64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/res/drawable-mdpi/src_images_cryptologo_k64.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-mdpi/src_images_cryptologo_kmd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/res/drawable-mdpi/src_images_cryptologo_kmd.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-mdpi/src_images_cryptologo_ltc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/res/drawable-mdpi/src_images_cryptologo_ltc.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-mdpi/src_images_cryptologo_oot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/res/drawable-mdpi/src_images_cryptologo_oot.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-mdpi/src_images_cryptologo_vrsc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/res/drawable-mdpi/src_images_cryptologo_vrsc.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-mdpi/src_images_cryptologo_zec.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/res/drawable-mdpi/src_images_cryptologo_zec.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-mdpi/src_images_cryptologo_zilla.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/res/drawable-mdpi/src_images_cryptologo_zilla.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-mdpi/src_images_customicons_addcoin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/res/drawable-mdpi/src_images_customicons_addcoin.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-mdpi/src_images_customicons_incomingarrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/res/drawable-mdpi/src_images_customicons_incomingarrow.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-mdpi/src_images_customicons_interestplus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/res/drawable-mdpi/src_images_customicons_interestplus.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-mdpi/src_images_customicons_outgoingarrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/res/drawable-mdpi/src_images_customicons_outgoingarrow.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-mdpi/src_images_customicons_selfarrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/res/drawable-mdpi/src_images_customicons_selfarrow.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-mdpi/src_images_customicons_unknownlogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/res/drawable-mdpi/src_images_customicons_unknownlogo.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-mdpi/src_images_customicons_verusheaderlogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/res/drawable-mdpi/src_images_customicons_verusheaderlogo.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-mdpi/src_images_customicons_veruspay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/res/drawable-mdpi/src_images_customicons_veruspay.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-mdpi/src_images_customicons_verusqrlogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/res/drawable-mdpi/src_images_customicons_verusqrlogo.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-xhdpi/node_modules_reactnavigation_src_views_assets_backicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/res/drawable-xhdpi/node_modules_reactnavigation_src_views_assets_backicon.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-xxhdpi/node_modules_reactnavigation_src_views_assets_backicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/res/drawable-xxhdpi/node_modules_reactnavigation_src_views_assets_backicon.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-xxxhdpi/node_modules_reactnavigation_src_views_assets_backicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/res/drawable-xxxhdpi/node_modules_reactnavigation_src_views_assets_backicon.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/background_splash.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/res/mipmap-hdpi/icon.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/res/mipmap-mdpi/icon.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/res/mipmap-xhdpi/icon.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/res/mipmap-xxhdpi/icon.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/app/src/main/res/mipmap-xxxhdpi/icon.png -------------------------------------------------------------------------------- /android/app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #3165d4 4 | #254b9c 5 | #FFFFFF 6 | -------------------------------------------------------------------------------- /android/app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Verus Wallet 3 | 4 | -------------------------------------------------------------------------------- /android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 9 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /android/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/android/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Sun Feb 17 17:34:30 PST 2019 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-7.5.1-all.zip 7 | -------------------------------------------------------------------------------- /android/keystores/BUCK: -------------------------------------------------------------------------------- 1 | keystore( 2 | name = "debug", 3 | properties = "debug.keystore.properties", 4 | store = "debug.keystore", 5 | visibility = [ 6 | "PUBLIC", 7 | ], 8 | ) 9 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /android/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'verusmobile' 2 | apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings) 3 | 4 | include ':app' 5 | includeBuild('../node_modules/react-native-gradle-plugin') -------------------------------------------------------------------------------- /app.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "verusmobile", 3 | "displayName": "Verus Wallet" 4 | } -------------------------------------------------------------------------------- /assets/fonts/SourceSansPro-Black.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/assets/fonts/SourceSansPro-Black.ttf -------------------------------------------------------------------------------- /assets/fonts/SourceSansPro-BlackItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/assets/fonts/SourceSansPro-BlackItalic.ttf -------------------------------------------------------------------------------- /assets/fonts/SourceSansPro-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/assets/fonts/SourceSansPro-Bold.ttf -------------------------------------------------------------------------------- /assets/fonts/SourceSansPro-BoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/assets/fonts/SourceSansPro-BoldItalic.ttf -------------------------------------------------------------------------------- /assets/fonts/SourceSansPro-ExtraLight.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/assets/fonts/SourceSansPro-ExtraLight.ttf -------------------------------------------------------------------------------- /assets/fonts/SourceSansPro-ExtraLightItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/assets/fonts/SourceSansPro-ExtraLightItalic.ttf -------------------------------------------------------------------------------- /assets/fonts/SourceSansPro-Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/assets/fonts/SourceSansPro-Italic.ttf -------------------------------------------------------------------------------- /assets/fonts/SourceSansPro-Light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/assets/fonts/SourceSansPro-Light.ttf -------------------------------------------------------------------------------- /assets/fonts/SourceSansPro-LightItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/assets/fonts/SourceSansPro-LightItalic.ttf -------------------------------------------------------------------------------- /assets/fonts/SourceSansPro-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/assets/fonts/SourceSansPro-Regular.ttf -------------------------------------------------------------------------------- /assets/fonts/SourceSansPro-SemiBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/assets/fonts/SourceSansPro-SemiBold.ttf -------------------------------------------------------------------------------- /assets/fonts/SourceSansPro-SemiBoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/assets/fonts/SourceSansPro-SemiBoldItalic.ttf -------------------------------------------------------------------------------- /assets/vrsc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/assets/vrsc.png -------------------------------------------------------------------------------- /babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = function (api) { 2 | api.cache(true) 3 | return { 4 | "presets": [ 5 | 'module:metro-react-native-babel-preset' 6 | ], 7 | "plugins": [ 8 | "react-native-reanimated/plugin", 9 | ], 10 | } 11 | } -------------------------------------------------------------------------------- /debug/findpos.js: -------------------------------------------------------------------------------- 1 | var sourceMap = require('source-map'); 2 | var fs = require('fs'); 3 | 4 | var sourcemap = JSON.parse(fs.readFileSync('source.map', 'utf8')); 5 | 6 | var smc = new sourceMap.SourceMapConsumer(sourcemap); 7 | 8 | console.log(smc.originalPositionFor({ 9 | line: 833, 10 | column: 2580 11 | })); -------------------------------------------------------------------------------- /dummy-minifier.js: -------------------------------------------------------------------------------- 1 | function minifier(options) { 2 | return { 3 | code: options.code, 4 | map: options.map, 5 | }; 6 | } 7 | 8 | module.exports = minifier; 9 | -------------------------------------------------------------------------------- /env/index.js: -------------------------------------------------------------------------------- 1 | import * as iosEnv from './main.ios.json' 2 | import * as androidEnv from './main.android.json' 3 | import { Platform } from 'react-native' 4 | 5 | module.exports = Platform.OS === 'ios' ? iosEnv : androidEnv 6 | -------------------------------------------------------------------------------- /gemfile: -------------------------------------------------------------------------------- 1 | source 'https://rubygems.org' 2 | 3 | # You may use http://rbenv.org/ or https://rvm.io/ to install and use this version 4 | ruby '>= 2.6.10' 5 | 6 | # Cocoapods 1.15 introduced a bug which break the build. We will remove the upper 7 | # bound in the template on Cocoapods with next React Native release. 8 | gem 'cocoapods', '>= 1.13', '< 1.15' 9 | gem 'activesupport', '>= 6.1.7.3', '< 7.1.0' -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | /** @format */ 2 | import 'react-native-gesture-handler'; 3 | import { AppRegistry, LogBox } from 'react-native'; 4 | 5 | const IGNORED_LOGS = [ 6 | 'Warning: componentWillMount is deprecated', 7 | 'Warning: componentWillReceiveProps is deprecated', 8 | 'Warning: componentWillUpdate is deprecated', 9 | 'RCTRootView cancelTouches', 10 | 'Require cycle', 11 | 'long period', 12 | 'Material Top Tab Navigator:', 13 | 'ViewPropTypes will be removed from React Native.', 14 | 'Non-serializable values were found in the navigation state.' 15 | ]; 16 | 17 | LogBox.ignoreLogs(IGNORED_LOGS); 18 | 19 | import App from './App'; 20 | import {name as appName} from './app.json'; 21 | import './shims/crypto.js'; 22 | import './shims/stringify.js'; 23 | 24 | AppRegistry.registerComponent(appName, () => App); 25 | -------------------------------------------------------------------------------- /ios/.xcode.env: -------------------------------------------------------------------------------- 1 | # This `.xcode.env` file is versioned and is used to source the environment 2 | # used when running script phases inside Xcode. 3 | # To customize your local environment, you can create an `.xcode.env.local` 4 | # file that is not versioned. 5 | 6 | # NODE_BINARY variable contains the PATH to the node executable. 7 | # 8 | # Customize the NODE_BINARY variable here. 9 | # For example, to use nvm with brew, add the following line 10 | # . "$(brew --prefix nvm)/nvm.sh" --no-use 11 | export NODE_BINARY=$(command -v node) -------------------------------------------------------------------------------- /ios/SaplingParams/sapling-output.params: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/ios/SaplingParams/sapling-output.params -------------------------------------------------------------------------------- /ios/SaplingParams/sapling-spend.params: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/ios/SaplingParams/sapling-spend.params -------------------------------------------------------------------------------- /ios/assets/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "verusmobile", 3 | "displayName": "Verus Wallet" 4 | } -------------------------------------------------------------------------------- /ios/assets/src/images/cryptologo/default/btc/bch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/ios/assets/src/images/cryptologo/default/btc/bch.png -------------------------------------------------------------------------------- /ios/assets/src/images/cryptologo/default/btc/btc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/ios/assets/src/images/cryptologo/default/btc/btc.png -------------------------------------------------------------------------------- /ios/assets/src/images/cryptologo/default/btc/ccl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/ios/assets/src/images/cryptologo/default/btc/ccl.png -------------------------------------------------------------------------------- /ios/assets/src/images/cryptologo/default/btc/dash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/ios/assets/src/images/cryptologo/default/btc/dash.png -------------------------------------------------------------------------------- /ios/assets/src/images/cryptologo/default/btc/dgb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/ios/assets/src/images/cryptologo/default/btc/dgb.png -------------------------------------------------------------------------------- /ios/assets/src/images/cryptologo/default/btc/doge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/ios/assets/src/images/cryptologo/default/btc/doge.png -------------------------------------------------------------------------------- /ios/assets/src/images/cryptologo/default/btc/kmd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/ios/assets/src/images/cryptologo/default/btc/kmd.png -------------------------------------------------------------------------------- /ios/assets/src/images/cryptologo/default/btc/ltc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/ios/assets/src/images/cryptologo/default/btc/ltc.png -------------------------------------------------------------------------------- /ios/assets/src/images/cryptologo/default/btc/oot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/ios/assets/src/images/cryptologo/default/btc/oot.png -------------------------------------------------------------------------------- /ios/assets/src/images/cryptologo/default/btc/vrsc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/ios/assets/src/images/cryptologo/default/btc/vrsc.png -------------------------------------------------------------------------------- /ios/assets/src/images/cryptologo/default/btc/zec.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/ios/assets/src/images/cryptologo/default/btc/zec.png -------------------------------------------------------------------------------- /ios/assets/src/images/cryptologo/default/btc/zectest.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/ios/assets/src/images/cryptologo/default/btc/zectest.png -------------------------------------------------------------------------------- /ios/assets/src/images/cryptologo/default/btc/zilla.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/ios/assets/src/images/cryptologo/default/btc/zilla.png -------------------------------------------------------------------------------- /ios/assets/src/images/cryptologo/default/web3/bat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/ios/assets/src/images/cryptologo/default/web3/bat.png -------------------------------------------------------------------------------- /ios/assets/src/images/cryptologo/default/web3/dai.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/ios/assets/src/images/cryptologo/default/web3/dai.png -------------------------------------------------------------------------------- /ios/assets/src/images/cryptologo/default/web3/eth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/ios/assets/src/images/cryptologo/default/web3/eth.png -------------------------------------------------------------------------------- /ios/assets/src/images/cryptologo/default_chain.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/ios/assets/src/images/cryptologo/default_chain.png -------------------------------------------------------------------------------- /ios/assets/src/images/customIcons/Verus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/ios/assets/src/images/customIcons/Verus.png -------------------------------------------------------------------------------- /ios/assets/src/images/customIcons/add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/ios/assets/src/images/customIcons/add.png -------------------------------------------------------------------------------- /ios/assets/src/images/customIcons/aproved.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/ios/assets/src/images/customIcons/aproved.png -------------------------------------------------------------------------------- /ios/assets/src/images/customIcons/bank-building.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/ios/assets/src/images/customIcons/bank-building.png -------------------------------------------------------------------------------- /ios/assets/src/images/customIcons/bank2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/ios/assets/src/images/customIcons/bank2.png -------------------------------------------------------------------------------- /ios/assets/src/images/customIcons/bankBuildingBlack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/ios/assets/src/images/customIcons/bankBuildingBlack.png -------------------------------------------------------------------------------- /ios/assets/src/images/customIcons/buy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/ios/assets/src/images/customIcons/buy.png -------------------------------------------------------------------------------- /ios/assets/src/images/customIcons/buySell.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/ios/assets/src/images/customIcons/buySell.png -------------------------------------------------------------------------------- /ios/assets/src/images/customIcons/calendar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/ios/assets/src/images/customIcons/calendar.png -------------------------------------------------------------------------------- /ios/assets/src/images/customIcons/call-answer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/ios/assets/src/images/customIcons/call-answer.png -------------------------------------------------------------------------------- /ios/assets/src/images/customIcons/coinAdd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/ios/assets/src/images/customIcons/coinAdd.png -------------------------------------------------------------------------------- /ios/assets/src/images/customIcons/email.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/ios/assets/src/images/customIcons/email.png -------------------------------------------------------------------------------- /ios/assets/src/images/customIcons/file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/ios/assets/src/images/customIcons/file.png -------------------------------------------------------------------------------- /ios/assets/src/images/customIcons/home-icon-silhouette.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/ios/assets/src/images/customIcons/home-icon-silhouette.png -------------------------------------------------------------------------------- /ios/assets/src/images/customIcons/id-card.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/ios/assets/src/images/customIcons/id-card.png -------------------------------------------------------------------------------- /ios/assets/src/images/customIcons/in-arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/ios/assets/src/images/customIcons/in-arrow.png -------------------------------------------------------------------------------- /ios/assets/src/images/customIcons/interest-plus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/ios/assets/src/images/customIcons/interest-plus.png -------------------------------------------------------------------------------- /ios/assets/src/images/customIcons/maps-and-flags.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/ios/assets/src/images/customIcons/maps-and-flags.png -------------------------------------------------------------------------------- /ios/assets/src/images/customIcons/out-arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/ios/assets/src/images/customIcons/out-arrow.png -------------------------------------------------------------------------------- /ios/assets/src/images/customIcons/pending-clock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/ios/assets/src/images/customIcons/pending-clock.png -------------------------------------------------------------------------------- /ios/assets/src/images/customIcons/pending.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/ios/assets/src/images/customIcons/pending.png -------------------------------------------------------------------------------- /ios/assets/src/images/customIcons/piggybank.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/ios/assets/src/images/customIcons/piggybank.png -------------------------------------------------------------------------------- /ios/assets/src/images/customIcons/self-arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/ios/assets/src/images/customIcons/self-arrow.png -------------------------------------------------------------------------------- /ios/assets/src/images/customIcons/sell.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/ios/assets/src/images/customIcons/sell.png -------------------------------------------------------------------------------- /ios/assets/src/images/customIcons/unknown-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/ios/assets/src/images/customIcons/unknown-logo.png -------------------------------------------------------------------------------- /ios/assets/src/images/customIcons/user.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/ios/assets/src/images/customIcons/user.png -------------------------------------------------------------------------------- /ios/assets/src/images/customIcons/verusPay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/ios/assets/src/images/customIcons/verusPay.png -------------------------------------------------------------------------------- /ios/assets/src/images/customIcons/verusQRLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/ios/assets/src/images/customIcons/verusQRLogo.png -------------------------------------------------------------------------------- /ios/bridge.swift: -------------------------------------------------------------------------------- 1 | // 2 | // bridge.swift 3 | // verusmobile 4 | // 5 | // Created by Michael Filip Toutonghi on 04/03/2020. 6 | // Copyright © 2020 Facebook. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | -------------------------------------------------------------------------------- /ios/splash-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/ios/splash-image.png -------------------------------------------------------------------------------- /ios/verusMobile.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /ios/verusMobile.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ios/verusMobile/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 | #import 12 | 13 | @interface AppDelegate : RCTAppDelegate 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /ios/verusMobile/Images.xcassets/AppIcon.appiconset/ios-app-icon-1024-1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/ios/verusMobile/Images.xcassets/AppIcon.appiconset/ios-app-icon-1024-1024.png -------------------------------------------------------------------------------- /ios/verusMobile/Images.xcassets/AppIcon.appiconset/ios-app-icon-1024-20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/ios/verusMobile/Images.xcassets/AppIcon.appiconset/ios-app-icon-1024-20.png -------------------------------------------------------------------------------- /ios/verusMobile/Images.xcassets/AppIcon.appiconset/ios-app-icon-1024-20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/ios/verusMobile/Images.xcassets/AppIcon.appiconset/ios-app-icon-1024-20@2x.png -------------------------------------------------------------------------------- /ios/verusMobile/Images.xcassets/AppIcon.appiconset/ios-app-icon-1024-20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/ios/verusMobile/Images.xcassets/AppIcon.appiconset/ios-app-icon-1024-20@3x.png -------------------------------------------------------------------------------- /ios/verusMobile/Images.xcassets/AppIcon.appiconset/ios-app-icon-1024-29.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/ios/verusMobile/Images.xcassets/AppIcon.appiconset/ios-app-icon-1024-29.png -------------------------------------------------------------------------------- /ios/verusMobile/Images.xcassets/AppIcon.appiconset/ios-app-icon-1024-29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/ios/verusMobile/Images.xcassets/AppIcon.appiconset/ios-app-icon-1024-29@2x.png -------------------------------------------------------------------------------- /ios/verusMobile/Images.xcassets/AppIcon.appiconset/ios-app-icon-1024-29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/ios/verusMobile/Images.xcassets/AppIcon.appiconset/ios-app-icon-1024-29@3x.png -------------------------------------------------------------------------------- /ios/verusMobile/Images.xcassets/AppIcon.appiconset/ios-app-icon-1024-40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/ios/verusMobile/Images.xcassets/AppIcon.appiconset/ios-app-icon-1024-40.png -------------------------------------------------------------------------------- /ios/verusMobile/Images.xcassets/AppIcon.appiconset/ios-app-icon-1024-40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/ios/verusMobile/Images.xcassets/AppIcon.appiconset/ios-app-icon-1024-40@2x.png -------------------------------------------------------------------------------- /ios/verusMobile/Images.xcassets/AppIcon.appiconset/ios-app-icon-1024-40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/ios/verusMobile/Images.xcassets/AppIcon.appiconset/ios-app-icon-1024-40@3x.png -------------------------------------------------------------------------------- /ios/verusMobile/Images.xcassets/AppIcon.appiconset/ios-app-icon-1024-60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/ios/verusMobile/Images.xcassets/AppIcon.appiconset/ios-app-icon-1024-60@2x.png -------------------------------------------------------------------------------- /ios/verusMobile/Images.xcassets/AppIcon.appiconset/ios-app-icon-1024-60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/ios/verusMobile/Images.xcassets/AppIcon.appiconset/ios-app-icon-1024-60@3x.png -------------------------------------------------------------------------------- /ios/verusMobile/Images.xcassets/AppIcon.appiconset/ios-app-icon-1024-76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/ios/verusMobile/Images.xcassets/AppIcon.appiconset/ios-app-icon-1024-76.png -------------------------------------------------------------------------------- /ios/verusMobile/Images.xcassets/AppIcon.appiconset/ios-app-icon-1024-76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/ios/verusMobile/Images.xcassets/AppIcon.appiconset/ios-app-icon-1024-76@2x.png -------------------------------------------------------------------------------- /ios/verusMobile/Images.xcassets/AppIcon.appiconset/ios-app-icon-1024-83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/ios/verusMobile/Images.xcassets/AppIcon.appiconset/ios-app-icon-1024-83.5@2x.png -------------------------------------------------------------------------------- /ios/verusMobile/Images.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /ios/verusMobile/Images.xcassets/Verus-Splash.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "Verus-Splash-2.png", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "filename" : "Verus-Splash-1.png", 10 | "idiom" : "universal", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "filename" : "Verus-Splash.png", 15 | "idiom" : "universal", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "author" : "xcode", 21 | "version" : 1 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /ios/verusMobile/Images.xcassets/Verus-Splash.imageset/Verus-Splash-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/ios/verusMobile/Images.xcassets/Verus-Splash.imageset/Verus-Splash-1.png -------------------------------------------------------------------------------- /ios/verusMobile/Images.xcassets/Verus-Splash.imageset/Verus-Splash-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/ios/verusMobile/Images.xcassets/Verus-Splash.imageset/Verus-Splash-2.png -------------------------------------------------------------------------------- /ios/verusMobile/Images.xcassets/Verus-Splash.imageset/Verus-Splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/ios/verusMobile/Images.xcassets/Verus-Splash.imageset/Verus-Splash.png -------------------------------------------------------------------------------- /ios/verusMobile/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 | -------------------------------------------------------------------------------- /ios/verusmobile-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | // 2 | // Use this file to import your target's public headers that you would like to expose to Swift. 3 | // 4 | -------------------------------------------------------------------------------- /metro.config.js: -------------------------------------------------------------------------------- 1 | const { getDefaultConfig } = require("metro-config"); 2 | 3 | module.exports = (async () => { 4 | const { 5 | resolver: {sourceExts, assetExts}, 6 | } = await getDefaultConfig(); 7 | 8 | return { 9 | transformer: { 10 | babelTransformerPath: require.resolve('react-native-svg-transformer'), 11 | minifierPath: require("path").resolve("./dummy-minifier"), 12 | minifierConfig: { 13 | mangle: { 14 | toplevel: true, 15 | reserved: ['BigInteger', 'ECPair', 'Point'], 16 | }, 17 | }, 18 | }, 19 | resolver: { 20 | assetExts: assetExts.filter(ext => ext !== 'svg'), 21 | sourceExts: [...sourceExts, 'svg'], 22 | }, 23 | }; 24 | })(); 25 | -------------------------------------------------------------------------------- /react-native.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | dependencies: { 3 | "react-native-verus-light-client": { 4 | platforms: { 5 | android: null // disable Android platform, other platforms will still autolink if provided 6 | } 7 | } 8 | }, 9 | assets: [ 10 | "./assets/fonts/" 11 | ], 12 | } -------------------------------------------------------------------------------- /src/actions/actions/alert/creators/alert.js: -------------------------------------------------------------------------------- 1 | import { PUSH_ALERT, SET_ACTIVE_ALERT, SHIFT_ALERTS } from "../../../../utils/constants/storeType" 2 | 3 | export const pushAlert = (id) => { 4 | return { 5 | type: PUSH_ALERT, 6 | payload: { 7 | alert: id 8 | } 9 | } 10 | } 11 | 12 | export const shiftAlerts = () => { 13 | return { 14 | type: SHIFT_ALERTS, 15 | } 16 | } 17 | 18 | export const setActiveAlert = (activeAlert) => { 19 | return { 20 | type: SET_ACTIVE_ALERT, 21 | payload: { 22 | activeAlert 23 | } 24 | } 25 | } 26 | 27 | export const completeAlert = (result) => { 28 | return { 29 | type: SET_ACTIVE_ALERT, 30 | payload: { 31 | activeAlert: null, 32 | result 33 | } 34 | } 35 | } -------------------------------------------------------------------------------- /src/actions/actions/cache/Cache.js: -------------------------------------------------------------------------------- 1 | import { 2 | clearCache 3 | } from '../../../utils/asyncStore/asyncStore'; 4 | 5 | import { 6 | clearDataCache 7 | } from '../../actionCreators'; 8 | 9 | export const clearCacheData = (dispatch) => { 10 | return new Promise((resolve) => { 11 | clearCache() 12 | .then((res) => { 13 | dispatch(clearDataCache()) 14 | resolve() 15 | }) 16 | .catch(e => { 17 | throw e 18 | }) 19 | }) 20 | } -------------------------------------------------------------------------------- /src/actions/actions/channels/electrum/dispatchers/ElectrumWalletReduxManager.js: -------------------------------------------------------------------------------- 1 | import Store from '../../../../../store/index' 2 | import { 3 | INIT_ELECTRUM_CHANNEL_START, 4 | CLOSE_ELECTRUM_CHANNEL, 5 | } from "../../../../../utils/constants/storeType"; 6 | 7 | export const initElectrumWallet = async (coinObj) => { 8 | Store.dispatch({ 9 | type: INIT_ELECTRUM_CHANNEL_START, 10 | payload: { chainTicker: coinObj.id } 11 | }) 12 | 13 | return 14 | } 15 | 16 | export const closeElectrumWallet = async (coinObj) => { 17 | Store.dispatch({ 18 | type: CLOSE_ELECTRUM_CHANNEL, 19 | payload: { chainTicker: coinObj.id } 20 | }) 21 | 22 | return 23 | } -------------------------------------------------------------------------------- /src/actions/actions/channels/erc20/dispatchers/Erc20WalletReduxManager.js: -------------------------------------------------------------------------------- 1 | import Store from '../../../../../store/index' 2 | import { 3 | INIT_ERC20_CHANNEL_START, 4 | CLOSE_ERC20_CHANNEL, 5 | } from "../../../../../utils/constants/storeType"; 6 | 7 | export const initErc20Wallet = async (coinObj) => { 8 | Store.dispatch({ 9 | type: INIT_ERC20_CHANNEL_START, 10 | payload: { chainTicker: coinObj.id, contractAddress: coinObj.currency_id, network: coinObj.network } 11 | }) 12 | 13 | return 14 | } 15 | 16 | export const closeErc20Wallet = async (coinObj) => { 17 | Store.dispatch({ 18 | type: CLOSE_ERC20_CHANNEL, 19 | payload: { chainTicker: coinObj.id, contractAddress: coinObj.currency_id, network: coinObj.network } 20 | }) 21 | 22 | return 23 | } -------------------------------------------------------------------------------- /src/actions/actions/channels/eth/dispatchers/EthWalletReduxManager.js: -------------------------------------------------------------------------------- 1 | import Store from '../../../../../store/index' 2 | import { 3 | INIT_ETH_CHANNEL_START, 4 | CLOSE_ETH_CHANNEL, 5 | } from "../../../../../utils/constants/storeType"; 6 | 7 | export const initEthWallet = async (coinObj) => { 8 | Store.dispatch({ 9 | type: INIT_ETH_CHANNEL_START, 10 | payload: { chainTicker: coinObj.id } 11 | }) 12 | 13 | return 14 | } 15 | 16 | export const closeEthWallet = async (coinObj) => { 17 | Store.dispatch({ 18 | type: CLOSE_ETH_CHANNEL, 19 | payload: { chainTicker: coinObj.id } 20 | }) 21 | 22 | return 23 | } -------------------------------------------------------------------------------- /src/actions/actions/channels/general/dispatchers/GeneralWalletReduxManager.js: -------------------------------------------------------------------------------- 1 | import Store from '../../../../../store/index' 2 | import { 3 | INIT_GENERAL_CHANNEL_START, 4 | CLOSE_GENERAL_CHANNEL, 5 | } from "../../../../../utils/constants/storeType"; 6 | 7 | export const initGeneralWallet = async (coinObj) => { 8 | Store.dispatch({ 9 | type: INIT_GENERAL_CHANNEL_START, 10 | payload: { chainTicker: coinObj.id } 11 | }) 12 | 13 | return 14 | } 15 | 16 | export const closeGeneralWallet = async (coinObj) => { 17 | Store.dispatch({ 18 | type: CLOSE_GENERAL_CHANNEL, 19 | payload: { chainTicker: coinObj.id } 20 | }) 21 | 22 | return 23 | } -------------------------------------------------------------------------------- /src/actions/actions/channels/wyre/dispatchers/WyreWalletReduxManager.js: -------------------------------------------------------------------------------- 1 | import Store from '../../../../../store/index' 2 | import { 3 | INIT_WYRE_COIN_CHANNEL_START, 4 | CLOSE_WYRE_COIN_CHANNEL, 5 | } from "../../../../../utils/constants/storeType"; 6 | import WyreProvider from '../../../../../utils/services/WyreProvider'; 7 | 8 | export const initWyreCoinChannel = async (coinObj) => { 9 | await WyreProvider.loadWyreCoinAddresses() 10 | 11 | Store.dispatch({ 12 | type: INIT_WYRE_COIN_CHANNEL_START, 13 | payload: { chainTicker: coinObj.id } 14 | }) 15 | 16 | return 17 | } 18 | 19 | export const closeWyreCoinWallet = async (coinObj) => { 20 | Store.dispatch({ 21 | type: CLOSE_WYRE_COIN_CHANNEL, 22 | payload: { chainTicker: coinObj.id } 23 | }) 24 | 25 | return 26 | } -------------------------------------------------------------------------------- /src/actions/actions/deeplink/creators/deeplink.js: -------------------------------------------------------------------------------- 1 | import { SET_DEEPLINK_DATA, SET_DEEPLINK_URL } from "../../../../utils/constants/storeType" 2 | 3 | export const setDeeplinkUrl = (url) => { 4 | return { 5 | type: SET_DEEPLINK_URL, 6 | payload: { url } 7 | } 8 | } 9 | 10 | export const setDeeplinkData = (id, data) => { 11 | return { 12 | type: SET_DEEPLINK_DATA, 13 | payload: { id, data } 14 | } 15 | } 16 | 17 | export const resetDeeplinkData = () => { 18 | return { 19 | type: SET_DEEPLINK_DATA, 20 | payload: { id: null, data: {}, fromService: null, passthrough: null} 21 | } 22 | } -------------------------------------------------------------------------------- /src/actions/actions/deeplink/dispatchers/deeplinkListener.js: -------------------------------------------------------------------------------- 1 | import { Linking } from "react-native" 2 | import store from "../../../../store"; 3 | import { setDeeplinkUrl } from "../creators/deeplink"; 4 | 5 | const dispatchDeeplinkUrl = (url) => store.dispatch(setDeeplinkUrl(url)) 6 | 7 | export const updateDeeplinkUrl = async (url) => { 8 | dispatchDeeplinkUrl(url) 9 | } -------------------------------------------------------------------------------- /src/actions/actions/keyboard/creators/keyboard.js: -------------------------------------------------------------------------------- 1 | import { SET_KEYBOARD_ACTIVE, SET_KEYBOARD_HEIGHT } from "../../../../utils/constants/storeType" 2 | 3 | export const setKeyboardHeight = (height) => { 4 | return { 5 | type: SET_KEYBOARD_HEIGHT, 6 | payload: { height } 7 | } 8 | } 9 | 10 | export const setKeyboardActive = (active) => { 11 | return { 12 | type: SET_KEYBOARD_ACTIVE, 13 | payload: { active } 14 | } 15 | } -------------------------------------------------------------------------------- /src/actions/actions/loadingModal/dispatchers/loadingModal.js: -------------------------------------------------------------------------------- 1 | import store from '../../../../store'; 2 | import { 3 | OPEN_LOADING_MODAL, 4 | CLOSE_LOADING_MODAL 5 | } from '../../../../utils/constants/storeType'; 6 | 7 | export const openLoadingModal = ( 8 | message, 9 | height = 442 10 | ) => { 11 | store.dispatch({ 12 | type: OPEN_LOADING_MODAL, 13 | payload: { 14 | message, 15 | height 16 | }, 17 | }); 18 | }; 19 | 20 | export const closeLoadingModal = () => { 21 | store.dispatch({ 22 | type: CLOSE_LOADING_MODAL 23 | }); 24 | } -------------------------------------------------------------------------------- /src/actions/actions/notifications/dispatchers/notifications.js: -------------------------------------------------------------------------------- 1 | import store from "../../../../store"; 2 | import { addNotification, clearAccountNotifications, clearNotifications, removeNotification, setNotifications } from "../creators/notifications"; 3 | 4 | export const dispatchAddNotification = (notification) => store.dispatch(addNotification(notification)) 5 | 6 | export const dispatchRemoveNotification = (uid) => store.dispatch(removeNotification(uid)) 7 | 8 | export const dispatchClearNotifications = () => store.dispatch(clearNotifications()) 9 | 10 | export const dispatchClearAccountNotifications = (acchash) => store.dispatch(clearAccountNotifications(acchash)) 11 | 12 | export const dispatchSetNotifications = (directory, accounts) => store.dispatch(setNotifications(directory, accounts)) -------------------------------------------------------------------------------- /src/actions/actions/personal/creators/personal.js: -------------------------------------------------------------------------------- 1 | import { SET_PERSONAL_DATA } from "../../../../utils/constants/storeType" 2 | 3 | export const setPersonalData = ( 4 | data = { 5 | attributes: null, 6 | contact: null, 7 | locations: null, 8 | payment_methods: null, 9 | images: null, 10 | } 11 | ) => ({ 12 | type: SET_PERSONAL_DATA, 13 | data, 14 | }); -------------------------------------------------------------------------------- /src/actions/actions/services/dispatchers/UpdateServiceAccount.js: -------------------------------------------------------------------------------- 1 | import { 2 | ERROR_SERVICE_ACCOUNT, 3 | SET_SERVICE_ACCOUNT 4 | } from "../../../../utils/constants/storeType"; 5 | import { WYRE_SERVICE } from "../../../../utils/constants/intervalConstants"; 6 | import { updateServiceDataValue } from "./UpdateServiceDataValue"; 7 | import { updateWyreAccount } from "./wyre/updates"; 8 | 9 | const fetchChannels = () => { 10 | return { 11 | [WYRE_SERVICE]: (channelStore) => updateWyreAccount(channelStore), 12 | }; 13 | }; 14 | 15 | export const updateServiceAccount = (state, dispatch, channels) => 16 | updateServiceDataValue( 17 | state, 18 | dispatch, 19 | channels, 20 | SET_SERVICE_ACCOUNT, 21 | ERROR_SERVICE_ACCOUNT, 22 | fetchChannels 23 | ); 24 | -------------------------------------------------------------------------------- /src/actions/actions/services/dispatchers/UpdateServiceRates.js: -------------------------------------------------------------------------------- 1 | import { 2 | ERROR_SERVICE_RATES, 3 | SET_SERVICE_RATES, 4 | } from "../../../../utils/constants/storeType"; 5 | import { WYRE_SERVICE } from "../../../../utils/constants/intervalConstants"; 6 | import { updateServiceDataValue } from "./UpdateServiceDataValue"; 7 | import { updateWyreRates } from "./wyre/updates"; 8 | 9 | const fetchChannels = () => { 10 | return { 11 | [WYRE_SERVICE]: () => updateWyreRates(), 12 | } 13 | }; 14 | 15 | export const updateServiceRates = (state, dispatch, channels) => 16 | updateServiceDataValue( 17 | state, 18 | dispatch, 19 | channels, 20 | SET_SERVICE_RATES, 21 | ERROR_SERVICE_RATES, 22 | fetchChannels 23 | ); 24 | -------------------------------------------------------------------------------- /src/actions/actions/services/dispatchers/UpdateServiceTransfers.js: -------------------------------------------------------------------------------- 1 | import { 2 | ERROR_SERVICE_TRANSFERS, 3 | SET_SERVICE_TRANSFERS 4 | } from "../../../../utils/constants/storeType"; 5 | import { WYRE_SERVICE } from "../../../../utils/constants/intervalConstants"; 6 | import { updateServiceDataValue } from "./UpdateServiceDataValue"; 7 | import { updateWyreTransfers } from "./wyre/updates"; 8 | 9 | const fetchChannels = () => { 10 | return { 11 | [WYRE_SERVICE]: channelStore => updateWyreTransfers(channelStore), 12 | }; 13 | }; 14 | 15 | export const updateServiceTransfers = (state, dispatch, channels) => 16 | updateServiceDataValue( 17 | state, 18 | dispatch, 19 | channels, 20 | SET_SERVICE_TRANSFERS, 21 | ERROR_SERVICE_TRANSFERS, 22 | fetchChannels 23 | ); 24 | -------------------------------------------------------------------------------- /src/actions/actions/wallet/dispatchers/general/updates.js: -------------------------------------------------------------------------------- 1 | import { getCoinRates } from "../../../../../utils/api/channels/general/callCreators"; 2 | import { GENERAL } from "../../../../../utils/constants/intervalConstants"; 3 | 4 | export const updateGeneralFiatPrices = async (coinObj) => { 5 | const coinRates = await getCoinRates(coinObj); 6 | 7 | const { result, ...header } = coinRates; 8 | 9 | return { 10 | chainTicker: coinObj.id, 11 | channel: GENERAL, 12 | header, 13 | body: result, 14 | }; 15 | } -------------------------------------------------------------------------------- /src/actions/actions/widgets/dispatchers/widgets.js: -------------------------------------------------------------------------------- 1 | import store from "../../../../store"; 2 | import { clearAccountWidgets, removeWidget, setWidgets, addWidget } from "../creators/widgets"; 3 | 4 | export const dispatchAddWidget = (id, acchash) => store.dispatch(addWidget(id, acchash)) 5 | 6 | export const dispatchRemoveWidget = (id, acchash) => store.dispatch(removeWidget(id, acchash)) 7 | 8 | export const dispatchClearAccountWidgets = (acchash) => store.dispatch(clearAccountWidgets(acchash)) 9 | 10 | export const dispatchSetWidgets = (order) => store.dispatch(setWidgets(order)) -------------------------------------------------------------------------------- /src/components/AnimatedActivityIndicator.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import LottieView from 'lottie-react-native'; 3 | 4 | const AnimatedActivityIndicator = (props) => ( 5 | 11 | ); 12 | 13 | export default AnimatedActivityIndicator; 14 | -------------------------------------------------------------------------------- /src/components/AnimatedActivityIndicatorBox.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from "react"; 2 | import { View } from 'react-native' 3 | import styles from "../styles"; 4 | import AnimatedActivityIndicator from "./AnimatedActivityIndicator"; 5 | 6 | class AnimatedActivityIndicatorBox extends Component { 7 | constructor(props) { 8 | super(props); 9 | } 10 | 11 | render() { 12 | return ( 13 | 14 | 19 | 20 | ); 21 | } 22 | } 23 | 24 | export default AnimatedActivityIndicatorBox; 25 | -------------------------------------------------------------------------------- /src/components/AnimatedSuccessCheckmark.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import LottieView from 'lottie-react-native'; 3 | 4 | const AnimatedSuccessCheckmark = (props) => ( 5 | 11 | ); 12 | 13 | export default AnimatedSuccessCheckmark; 14 | -------------------------------------------------------------------------------- /src/components/LargerButton.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { Button } from 'react-native-paper'; 3 | 4 | const TallButton = (props) => { 5 | return ( 6 | 16 | ); 17 | }; 18 | 19 | export default TallButton; -------------------------------------------------------------------------------- /src/components/NumberPad/NumberPad.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { SafeAreaView } from 'react-native'; 3 | import NumberPad, { Input, Display } from './index'; 4 | import { Ionicons } from '@expo/vector-icons'; 5 | 6 | export default class App extends React.Component { 7 | render() { 8 | return ( 9 | 10 | 11 | {[0, 1, 2].map((i) => ( 12 | 13 | ))} 14 | 15 | } 17 | hideIcon={} 18 | /> 19 | 20 | ); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/components/NumberPad/lib/NumberPadContext.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | export default React.createContext('react-native-number-pad'); 4 | -------------------------------------------------------------------------------- /src/components/SendModal/AddErc20Token/AddErc20TokenResult/AddErc20TokenResult.js: -------------------------------------------------------------------------------- 1 | import {useState} from 'react'; 2 | import {closeSendModal} from '../../../../actions/actions/sendModal/dispatchers/sendModal'; 3 | import {AddErc20TokenResultRender} from './AddErc20TokenResult.render'; 4 | 5 | const AddErc20TokenResult = (props) => { 6 | const [contract, setContract] = useState(props.route.params == null ? {} : props.route.params.contract); 7 | 8 | const finishSend = () => { 9 | closeSendModal() 10 | }; 11 | 12 | return AddErc20TokenResultRender({ 13 | contract, 14 | finishSend 15 | }); 16 | }; 17 | 18 | export default AddErc20TokenResult; 19 | -------------------------------------------------------------------------------- /src/containers/Home/Home.themes.js: -------------------------------------------------------------------------------- 1 | import { DefaultTheme } from 'react-native-paper'; 2 | 3 | export const HomeListItemThemeDark = { 4 | ...DefaultTheme, 5 | colors: { 6 | ...DefaultTheme.colors, 7 | text: "#FFFFFF" 8 | }, 9 | version: 2 10 | }; 11 | 12 | export const HomeListItemThemeLight = { 13 | ...DefaultTheme, 14 | colors: { 15 | ...DefaultTheme.colors, 16 | text: "#1C1C1C" 17 | }, 18 | version: 2 19 | }; 20 | 21 | -------------------------------------------------------------------------------- /src/containers/Identity/AddIdentity/Container.js: -------------------------------------------------------------------------------- 1 | import { connect } from 'react-redux'; 2 | import { bindActionCreators } from 'redux'; 3 | 4 | import { addNewIdentityName, changeActiveIdentity } from '../../../actions/actionCreators'; 5 | import { selectIdentities, selectActiveIdentityId } from '../../../selectors/identity'; 6 | 7 | const mapStateToProps = (state) => ({ 8 | identities: selectIdentities(state), 9 | activeIdentityId: selectActiveIdentityId(state), 10 | }); 11 | 12 | const mapDispatchToProps = (dispatch) => ({ 13 | actions: bindActionCreators( 14 | { 15 | addNewIdentityName, 16 | changeActiveIdentity, 17 | }, 18 | dispatch, 19 | ), 20 | }); 21 | 22 | export default connect(mapStateToProps, mapDispatchToProps); 23 | -------------------------------------------------------------------------------- /src/containers/Identity/AddIdentity/index.js: -------------------------------------------------------------------------------- 1 | import View from './View'; 2 | import Container from './Container'; 3 | 4 | export default Container(View); 5 | -------------------------------------------------------------------------------- /src/containers/Identity/Container.js: -------------------------------------------------------------------------------- 1 | import { connect } from 'react-redux'; 2 | 3 | import { selectActiveIdentityId } from '../../selectors/identity'; 4 | 5 | 6 | const mapStateToProps = (state) => ({ 7 | activeIdentityId: selectActiveIdentityId(state), 8 | }); 9 | 10 | export default connect(mapStateToProps); 11 | -------------------------------------------------------------------------------- /src/containers/Identity/Home/AttestationDetails/Container.js: -------------------------------------------------------------------------------- 1 | import { connect } from 'react-redux'; 2 | import { bindActionCreators } from 'redux'; 3 | 4 | import { selectActiveAttestation, } from '../../../../selectors/identity'; 5 | import { toggleAttestationPin, setAttestationModalVisibility } from '../../../../actions/actionCreators'; 6 | 7 | const mapStateToProps = (state) => ({ 8 | attestation: selectActiveAttestation(state), 9 | }); 10 | 11 | const mapDispatchToProps = (dispatch) => ({ 12 | actions: bindActionCreators( 13 | { 14 | toggleAttestationPin, 15 | setAttestationModalVisibility, 16 | }, 17 | dispatch, 18 | ), 19 | }); 20 | 21 | export default connect(mapStateToProps, mapDispatchToProps); 22 | -------------------------------------------------------------------------------- /src/containers/Identity/Home/AttestationDetails/index.js: -------------------------------------------------------------------------------- 1 | import View from './View'; 2 | import Container from './Container'; 3 | 4 | export default Container(View); 5 | -------------------------------------------------------------------------------- /src/containers/Identity/Home/ScanBadge/Container.js: -------------------------------------------------------------------------------- 1 | import { connect } from 'react-redux'; 2 | import { bindActionCreators } from 'redux'; 3 | 4 | import { 5 | selectScanInfoModalVisibility, 6 | } from '../../../../selectors/identity'; 7 | import { setScanInfoModalVisibility } from '../../../../actions/actionCreators'; 8 | 9 | const mapStateToProps = (state) => ({ 10 | scanInfoModalVisibility: selectScanInfoModalVisibility(state), 11 | }); 12 | 13 | const mapDispatchToProps = (dispatch) => ({ 14 | actions: bindActionCreators( 15 | { 16 | setScanInfoModalVisibility, 17 | }, 18 | dispatch, 19 | ), 20 | }); 21 | 22 | export default connect(mapStateToProps, mapDispatchToProps); 23 | -------------------------------------------------------------------------------- /src/containers/Identity/Home/ScanBadge/index.js: -------------------------------------------------------------------------------- 1 | import View from './View'; 2 | import Container from './Container'; 3 | 4 | export default Container(View); 5 | -------------------------------------------------------------------------------- /src/containers/Identity/Home/ScannedInformation/Container.js: -------------------------------------------------------------------------------- 1 | import { connect } from 'react-redux'; 2 | import { bindActionCreators } from 'redux'; 3 | import { setScanInfoModalVisibility } from '../../../../actions/actionCreators'; 4 | 5 | const mapDispatchToProps = (dispatch) => ({ 6 | actions: bindActionCreators( 7 | { 8 | setScanInfoModalVisibility, 9 | }, 10 | dispatch, 11 | ), 12 | }); 13 | 14 | export default connect(null, mapDispatchToProps); 15 | -------------------------------------------------------------------------------- /src/containers/Identity/Home/ScannedInformation/index.js: -------------------------------------------------------------------------------- 1 | import View from './View'; 2 | import Container from './Container'; 3 | 4 | export default Container(View); 5 | -------------------------------------------------------------------------------- /src/containers/Identity/Home/ScannedInformation/mockData.js: -------------------------------------------------------------------------------- 1 | 2 | export default 3 | { 4 | data: 'db6166942ef4ee75a76a5ac02d95ab84', 5 | firstName:'Faris', 6 | lastName:'Kunic', 7 | }; 8 | -------------------------------------------------------------------------------- /src/containers/Identity/Home/ScannedInformation/styles.js: -------------------------------------------------------------------------------- 1 | import { StyleSheet } from 'react-native'; 2 | 3 | export default StyleSheet.create({ 4 | 5 | text: { 6 | fontSize: 16, 7 | color: 'grey', 8 | paddingRight: 24, 9 | }, 10 | 11 | 12 | personContainer:{ 13 | marginTop:'20%', 14 | }, 15 | }); 16 | -------------------------------------------------------------------------------- /src/containers/Identity/PersonalInfo/AlphaSort/AlphabeticalSort.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { TouchableOpacity } from 'react-native'; 3 | //import FontAwesomeIcon from 'react-native-vector-icons/FontAwesome5'; 4 | 5 | const AlphabeticalSort = (props) => { 6 | const { sortBy, setSortDirection } = props; 7 | 8 | if (sortBy === 'asc') { 9 | return ( 10 | setSortDirection('desc')}> 11 | {/* */} 12 | 13 | ); 14 | } 15 | 16 | return ( 17 | setSortDirection('asc')}> 18 | {/* */} 19 | 20 | ); 21 | }; 22 | 23 | export default AlphabeticalSort; 24 | -------------------------------------------------------------------------------- /src/containers/Identity/PersonalInfo/ClaimCategoryDetails/index.js: -------------------------------------------------------------------------------- 1 | import View from './View'; 2 | import Container from './Container'; 3 | 4 | export default Container(View); 5 | -------------------------------------------------------------------------------- /src/containers/Identity/PersonalInfo/ClaimDetails/index.js: -------------------------------------------------------------------------------- 1 | import View from './View'; 2 | import Container from './Container'; 3 | 4 | export default Container(View); 5 | -------------------------------------------------------------------------------- /src/containers/Identity/PersonalInfo/ClaimManager/MoveIntoCategory/Container.js: -------------------------------------------------------------------------------- 1 | import { connect } from 'react-redux'; 2 | import { bindActionCreators } from 'redux'; 3 | 4 | import { selectClaimCategories } from '../../../../../selectors/identity'; 5 | import { moveClaimsToCategory, clearSelectedClaims } from '../../../../../actions/actionCreators'; 6 | 7 | const mapStateToProps = (state) => ({ 8 | categories: selectClaimCategories(state), 9 | }); 10 | 11 | const mapDispatchToProps = (dispatch) => ({ 12 | actions: bindActionCreators( 13 | { 14 | moveClaimsToCategory, 15 | clearSelectedClaims, 16 | }, 17 | dispatch, 18 | ), 19 | }); 20 | 21 | export default connect(mapStateToProps, mapDispatchToProps); 22 | -------------------------------------------------------------------------------- /src/containers/Identity/PersonalInfo/ClaimManager/MoveIntoCategory/index.js: -------------------------------------------------------------------------------- 1 | import View from './View'; 2 | import Container from './Container'; 3 | 4 | export default Container(View); 5 | -------------------------------------------------------------------------------- /src/containers/Identity/PersonalInfo/ClaimManager/index.js: -------------------------------------------------------------------------------- 1 | import View from './View'; 2 | import Container from './Container'; 3 | 4 | export default Container(View); 5 | -------------------------------------------------------------------------------- /src/containers/Identity/PersonalInfo/ClaimManager/utils/getShowHideIcon.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | //import Icon from 'react-native-vector-icons/Ionicons'; 3 | import { Platform } from 'react-native'; 4 | 5 | const getShowHideIcon = (show, size) => { 6 | if (!show) return (); 7 | 8 | //return (); 9 | return null 10 | }; 11 | 12 | export default getShowHideIcon; 13 | -------------------------------------------------------------------------------- /src/containers/Identity/PersonalInfo/ClaimManager/utils/truncateString.js: -------------------------------------------------------------------------------- 1 | export const truncateString = (item, size) => item.substring(0, size); 2 | 3 | export default truncateString; 4 | -------------------------------------------------------------------------------- /src/containers/Identity/PersonalInfo/RequestAttestation/Container.js: -------------------------------------------------------------------------------- 1 | import { connect } from 'react-redux'; 2 | 3 | import { 4 | selectActiveClaim, 5 | selectIdentities, 6 | } from '../../../../selectors/identity'; 7 | 8 | const mapStateToProps = (state) => ({ 9 | selectedClaim: selectActiveClaim(state), 10 | availableIdentities: selectIdentities(state), 11 | }); 12 | 13 | export default connect(mapStateToProps); 14 | -------------------------------------------------------------------------------- /src/containers/Identity/PersonalInfo/RequestAttestation/RequestDialog.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import Dialog from 'react-native-dialog'; 3 | 4 | const RequestDialog = (props) => { 5 | const { 6 | dialogShown, 7 | closeRequestDialog, 8 | requestAttestation, 9 | selectedIdentity, 10 | } = props; 11 | 12 | if (!dialogShown) return null; 13 | return ( 14 | 15 | 16 | Are you sure you want to send request to 17 |   18 | {selectedIdentity} 19 | 20 | 21 | 22 | 23 | ); 24 | }; 25 | 26 | export default RequestDialog; 27 | -------------------------------------------------------------------------------- /src/containers/Identity/PersonalInfo/RequestAttestation/index.js: -------------------------------------------------------------------------------- 1 | import View from './View'; 2 | import Container from './Container'; 3 | 4 | export default Container(View); 5 | -------------------------------------------------------------------------------- /src/containers/Identity/PersonalInfo/index.js: -------------------------------------------------------------------------------- 1 | import View from './View'; 2 | import Container from './Container'; 3 | 4 | export default Container(View); 5 | -------------------------------------------------------------------------------- /src/containers/Identity/index.js: -------------------------------------------------------------------------------- 1 | import View from './View'; 2 | import Container from './Container'; 3 | 4 | export default Container(View); 5 | -------------------------------------------------------------------------------- /src/containers/Identity/tabs.js: -------------------------------------------------------------------------------- 1 | import Home from './Home/View'; 2 | import PersonalInfo from './PersonalInfo'; 3 | import Colors from '../../globals/colors'; 4 | 5 | export default [ 6 | { 7 | key: 'Home', 8 | label: 'Identity', 9 | pressColor: 'rgba(255, 255, 255, 0.16)', 10 | screen: Home, 11 | icon: 'home', 12 | barColor: Colors.primaryColor, 13 | }, 14 | { 15 | key: 'Personal information', 16 | label: 'Personal information', 17 | pressColor: 'rgba(255, 255, 255, 0.16)', 18 | screen: PersonalInfo, 19 | icon: 'user-circle', 20 | barColor: Colors.verusGreenColor, 21 | }, 22 | ]; 23 | -------------------------------------------------------------------------------- /src/containers/LoadingScreen/LoadingScreen.js: -------------------------------------------------------------------------------- 1 | /* 2 | This screen is shown briefly before the login or sign 3 | up screen is shown, as the app is loading coin data from 4 | asyncStorage. It will be shown a little longer the more coins 5 | are added to the wallet, and should feature some animation 6 | or interesting splash image that goes well with the static 7 | splash image at the beginning. 8 | */ 9 | 10 | import React, { Component } from "react"; 11 | import { 12 | View 13 | } from "react-native"; 14 | import styles from './LoadingScreen.styles'; 15 | 16 | export default class LoadingScreen extends Component { 17 | constructor(props) { 18 | super(props) 19 | } 20 | 21 | render() { 22 | return ( 23 | 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/containers/LoadingScreen/LoadingScreen.styles.js: -------------------------------------------------------------------------------- 1 | import { StyleSheet } from "react-native"; 2 | import Colors from '../../globals/colors'; 3 | 4 | export default styles = StyleSheet.create({ 5 | loadingRoot: { 6 | backgroundColor: Colors.primaryColor, 7 | height: "100%", 8 | width: "100%" 9 | }, 10 | loadingLabel: { 11 | backgroundColor: "transparent", 12 | marginTop: 15, 13 | fontSize: 18, 14 | textAlign: "center", 15 | color: Colors.quinaryColor, 16 | width: "70%", 17 | fontFamily: 'Avenir-Book', 18 | fontWeight: 'normal' 19 | }, 20 | }); -------------------------------------------------------------------------------- /src/containers/Personal/Personal.js: -------------------------------------------------------------------------------- 1 | /* 2 | This component represents the screen the user will 3 | use to configure their personal wallet profile. They can then 4 | take this profile data and submit it to applications that require 5 | KYC if they want. 6 | */ 7 | 8 | import { Component } from "react" 9 | import { connect } from 'react-redux' 10 | import { PersonalRender } from "./Personal.render" 11 | 12 | class Personal extends Component { 13 | constructor(props) { 14 | super(props); 15 | this.state = {}; 16 | } 17 | 18 | render() { 19 | return PersonalRender.call(this); 20 | } 21 | } 22 | 23 | const mapStateToProps = (state) => { 24 | return { 25 | attributes: state.personal.attributes 26 | } 27 | }; 28 | 29 | export default connect(mapStateToProps)(Personal); -------------------------------------------------------------------------------- /src/containers/Personal/Personal.render.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import PersonalInfo from "./PersonalInfo/PersonalInfo"; 3 | import PersonalIntroSlider from "./PersonalIntroSlider/PersonalIntroSlider"; 4 | 5 | export const PersonalRender = function() { 6 | return this.props.attributes == null ? ( 7 | 8 | ) : ( 9 | 10 | ); 11 | }; 12 | -------------------------------------------------------------------------------- /src/containers/RootStack/ConvertStackScreens/ConvertStackScreens.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { createStackNavigator } from "@react-navigation/stack"; 3 | import { defaultHeaderOptions } from '../../../utils/navigation/header'; 4 | import Convert from '../../Convert/Convert'; 5 | 6 | const ConvertStack = createStackNavigator(); 7 | 8 | const ConvertStackScreens = props => { 9 | return ( 10 | 13 | 20 | 21 | ); 22 | }; 23 | 24 | export default ConvertStackScreens -------------------------------------------------------------------------------- /src/containers/RootStack/LoadingStackScreens/LoadingStackScreens.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { createStackNavigator } from "@react-navigation/stack"; 3 | import LoadingScreen from "../../LoadingScreen/LoadingScreen"; 4 | 5 | const LoadingStack = createStackNavigator(); 6 | 7 | const LoadingStackScreens = props => { 8 | return ( 9 | 10 | 17 | 18 | ); 19 | }; 20 | 21 | export default LoadingStackScreens -------------------------------------------------------------------------------- /src/containers/Services/ServiceComponents/VerusIdService/VerusIdLogin.js: -------------------------------------------------------------------------------- 1 | import { primitives } from 'verusid-ts-client' 2 | import { SET_DEEPLINK_DATA } from "../../../../utils/constants/storeType" 3 | 4 | export const processVerusId = async (props, loginConsentRequest, fromService = null, fqnToAutoLink = null) => { 5 | 6 | const req = new primitives.LoginConsentRequest(); 7 | req.fromBuffer(Buffer.from(loginConsentRequest, 'base64')); 8 | 9 | props.dispatch({ 10 | type: SET_DEEPLINK_DATA, 11 | payload: { 12 | id: primitives.LOGIN_CONSENT_REQUEST_VDXF_KEY.vdxfid, 13 | data: req.toJson(), 14 | fromService: fromService, 15 | passthrough: { fqnToAutoLink } 16 | }, 17 | }); 18 | props.navigation.navigate('DeepLink'); 19 | } 20 | -------------------------------------------------------------------------------- /src/containers/Services/ServiceTools/ServiceProvidedInfoOverview/ServiceProvidedInfoOverview.js: -------------------------------------------------------------------------------- 1 | /* 2 | This component represents the overview screen for KYC info given to a service 3 | */ 4 | 5 | import { Component } from "react" 6 | import { connect } from 'react-redux' 7 | import { ServiceProvidedInfoOverviewRender } from "./ServiceProvidedInfoOverview.render" 8 | 9 | class ServiceProvidedInfoOverview extends Component { 10 | constructor(props) { 11 | super(props); 12 | } 13 | 14 | render() { 15 | return ServiceProvidedInfoOverviewRender.call(this); 16 | } 17 | } 18 | 19 | const mapStateToProps = (state) => { 20 | return {} 21 | }; 22 | 23 | export default connect(mapStateToProps)(ServiceProvidedInfoOverview); -------------------------------------------------------------------------------- /src/containers/Services/ServiceTools/ServiceProvidedInfoOverview/ServiceProvidedInfoOverview.render.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | 3 | export const ServiceProvidedInfoOverviewRender = function () { 4 | return null 5 | }; 6 | -------------------------------------------------------------------------------- /src/containers/Services/Services.js: -------------------------------------------------------------------------------- 1 | /* 2 | This component represents the screen the user will 3 | use to configure connected wallet services like Wyre 4 | */ 5 | 6 | import { Component } from "react" 7 | import { connect } from 'react-redux' 8 | import { ServicesRender } from "./Services.render" 9 | 10 | class Services extends Component { 11 | constructor(props) { 12 | super(props); 13 | this.state = {}; 14 | } 15 | 16 | render() { 17 | return ServicesRender.call(this); 18 | } 19 | } 20 | 21 | const mapStateToProps = (state) => { 22 | return {} 23 | }; 24 | 25 | export default connect(mapStateToProps)(Services); -------------------------------------------------------------------------------- /src/containers/Services/Services.render.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import ServicesOverview from "./ServicesOverview/ServicesOverview"; 3 | 4 | export const ServicesRender = function() { 5 | return ; 6 | }; 7 | -------------------------------------------------------------------------------- /src/containers/VerusPay/VerusPay.styles.js: -------------------------------------------------------------------------------- 1 | import { StyleSheet } from "react-native"; 2 | 3 | export default styles = StyleSheet.create({ 4 | root: { 5 | backgroundColor: "#232323", 6 | flex: 1, 7 | alignItems: "center" 8 | }, 9 | QRCamera: { 10 | height: "100%" 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /src/globals/colors.js: -------------------------------------------------------------------------------- 1 | 2 | const Colors = { 3 | primaryColor: '#3165d4', // verus blue 4 | secondaryColor: '#FFFFFF', // white 5 | tertiaryColor: '#D6D6D6', //grey white 6 | verusDarkGray: '#959595', 7 | quaternaryColor: '#232323', // dark gray 8 | quinaryColor: 'black', 9 | verusGreenColor: '#4AA658', // Green 10 | warningButtonColor: '#F22D37', // Red 11 | infoButtonColor: '#F89336', // Orange 12 | linkButtonColor: '#4E73DF', // Blue 13 | basicButtonColor: 'black', 14 | lightGrey:'#b5b5b5', 15 | ultraLightGrey:'#d6cccb', 16 | ultraUltraLightGrey: "#FBFBFB" 17 | } 18 | 19 | export default Colors 20 | -------------------------------------------------------------------------------- /src/globals/globalStyles.js: -------------------------------------------------------------------------------- 1 | const GlobalStyles = { 2 | Avenir: 'Avenir', 3 | AvenirBook: 'Avenir-Book', 4 | AvenirBlack: 'Avenir-Black', 5 | AvenirMedium: 'Avenir-Medium', 6 | }; 7 | 8 | export default GlobalStyles; 9 | -------------------------------------------------------------------------------- /src/hooks/useObjectSelector.js: -------------------------------------------------------------------------------- 1 | import { isEqual } from "lodash"; 2 | import { useSelector } from "react-redux"; 3 | 4 | export const useObjectSelector = (extractor) => { 5 | return useSelector(extractor, isEqual); 6 | } -------------------------------------------------------------------------------- /src/hooks/usePrevious.js: -------------------------------------------------------------------------------- 1 | import { useEffect, useRef } from "react"; 2 | 3 | export const usePrevious = (x) => { 4 | const ref = useRef(); 5 | 6 | useEffect(() => { 7 | ref.current = x; 8 | }); 9 | 10 | return ref.current; 11 | } -------------------------------------------------------------------------------- /src/images/cryptologo/default/btc/dash/dash_dark.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/cryptologo/default/btc/dash/dash_light.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/cryptologo/default/btc/dgb/dgb_dark.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/cryptologo/default/btc/vrsc/vrsc_light.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/cryptologo/default/btc/vrsctest/vrsctest_light.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/cryptologo/default/btc/zec/zec_light.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/images/cryptologo/default/btc/zectest/zectest_light.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/images/cryptologo/default/web3/bnt/bnt_dark.svg: -------------------------------------------------------------------------------- 1 | bancor-icon 2 | -------------------------------------------------------------------------------- /src/images/cryptologo/default/web3/link/link_dark.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/cryptologo/default/web3/link/link_light.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/cryptologo/default/web3/mkr/mkr_dark.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/images/cryptologo/default/web3/mkr/mkr_light.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/images/cryptologo/default/web3/nexo/nexo_dark.svg: -------------------------------------------------------------------------------- 1 | nexo-logo-03 -------------------------------------------------------------------------------- /src/images/cryptologo/default_chain.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/src/images/cryptologo/default_chain.png -------------------------------------------------------------------------------- /src/images/cryptologo/index.js: -------------------------------------------------------------------------------- 1 | import web3 from './default/web3/index' 2 | import btc from './default/btc/index' 3 | import fiat from './default/fiat/index' 4 | import pbaas from './default/pbaas/index' 5 | 6 | export default { 7 | web3, 8 | btc, 9 | fiat, 10 | pbaas 11 | } -------------------------------------------------------------------------------- /src/images/customIcons/EnterKeyIcon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/images/customIcons/MyProfile.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/images/customIcons/MyWallet.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/images/customIcons/MyWalletLight.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/images/customIcons/Verus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/src/images/customIcons/Verus.png -------------------------------------------------------------------------------- /src/images/customIcons/add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/src/images/customIcons/add.png -------------------------------------------------------------------------------- /src/images/customIcons/addCoin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/src/images/customIcons/addCoin.png -------------------------------------------------------------------------------- /src/images/customIcons/aproved.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/src/images/customIcons/aproved.png -------------------------------------------------------------------------------- /src/images/customIcons/bank-building.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/src/images/customIcons/bank-building.png -------------------------------------------------------------------------------- /src/images/customIcons/bank.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/src/images/customIcons/bank.png -------------------------------------------------------------------------------- /src/images/customIcons/bank2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/src/images/customIcons/bank2.png -------------------------------------------------------------------------------- /src/images/customIcons/bankBuildingBlack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/src/images/customIcons/bankBuildingBlack.png -------------------------------------------------------------------------------- /src/images/customIcons/buy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/src/images/customIcons/buy.png -------------------------------------------------------------------------------- /src/images/customIcons/buySell.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/src/images/customIcons/buySell.png -------------------------------------------------------------------------------- /src/images/customIcons/calendar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/src/images/customIcons/calendar.png -------------------------------------------------------------------------------- /src/images/customIcons/call-answer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/src/images/customIcons/call-answer.png -------------------------------------------------------------------------------- /src/images/customIcons/coins-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/src/images/customIcons/coins-icon.png -------------------------------------------------------------------------------- /src/images/customIcons/email.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/src/images/customIcons/email.png -------------------------------------------------------------------------------- /src/images/customIcons/file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/src/images/customIcons/file.png -------------------------------------------------------------------------------- /src/images/customIcons/home-icon-silhouette.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/src/images/customIcons/home-icon-silhouette.png -------------------------------------------------------------------------------- /src/images/customIcons/id-card.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/src/images/customIcons/id-card.png -------------------------------------------------------------------------------- /src/images/customIcons/maps-and-flags.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/src/images/customIcons/maps-and-flags.png -------------------------------------------------------------------------------- /src/images/customIcons/pending.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/src/images/customIcons/pending.png -------------------------------------------------------------------------------- /src/images/customIcons/piggybank.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/src/images/customIcons/piggybank.png -------------------------------------------------------------------------------- /src/images/customIcons/received-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/images/customIcons/recover-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/src/images/customIcons/recover-icon.png -------------------------------------------------------------------------------- /src/images/customIcons/revoke-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/src/images/customIcons/revoke-icon.png -------------------------------------------------------------------------------- /src/images/customIcons/sell.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/src/images/customIcons/sell.png -------------------------------------------------------------------------------- /src/images/customIcons/transactions/in-arrow.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/customIcons/transactions/index.js: -------------------------------------------------------------------------------- 1 | import InArrow from './in-arrow.svg' 2 | import InterestPlus from './interest-plus.svg' 3 | import OutArrow from './out-arrow.svg' 4 | import PendingClock from './pending-clock.svg' 5 | import SelfArrow from './self-arrow.svg' 6 | import Unknown from './unknown-logo.svg' 7 | 8 | export default { 9 | InArrow, 10 | InterestPlus, 11 | OutArrow, 12 | PendingClock, 13 | SelfArrow, 14 | Unknown 15 | } -------------------------------------------------------------------------------- /src/images/customIcons/transactions/out-arrow.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/customIcons/transactions/self-arrow.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/images/customIcons/user.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/src/images/customIcons/user.png -------------------------------------------------------------------------------- /src/images/customIcons/verusHeaderLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/src/images/customIcons/verusHeaderLogo.png -------------------------------------------------------------------------------- /src/images/customIcons/vrsc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VerusCoin/Verus-Mobile/eeb5035ffabc3bfab8281f44e1f3b149018b4439/src/images/customIcons/vrsc.png -------------------------------------------------------------------------------- /src/images/servicelogo/index.js: -------------------------------------------------------------------------------- 1 | import { VERUSID_SERVICE_ID, WYRE_SERVICE_ID } from '../../utils/constants/services' 2 | import WYRE_LIGHT from './wyre/wyre_light.svg' 3 | import VERUSID_LIGHT from './verusid/verusid_light.svg' 4 | 5 | export default { 6 | [WYRE_SERVICE_ID]: { light: WYRE_LIGHT }, 7 | [VERUSID_SERVICE_ID]: { light: VERUSID_LIGHT } 8 | } -------------------------------------------------------------------------------- /src/reducers/cache/ethtxreceipts.js: -------------------------------------------------------------------------------- 1 | /* 2 | This reducer stores the cache for eth transactions. 3 | */ 4 | 5 | import { ADD_ETH_TX_RECEIPT, SET_ETH_TX_RECEIPTS, CLEAR_CACHE } from "../../utils/constants/storeType"; 6 | 7 | export const ethtxreceipts = (state = { 8 | txReceipts: {} 9 | }, action) => { 10 | switch (action.type) { 11 | case ADD_ETH_TX_RECEIPT: 12 | return { 13 | ...state, 14 | txReceipts: {...state.txReceipts, [action.key]: action.receipt}, 15 | }; 16 | case SET_ETH_TX_RECEIPTS: 17 | return { 18 | ...state, 19 | txReceipts: action.receipts, 20 | }; 21 | case CLEAR_CACHE: 22 | return { 23 | ...state, 24 | txReceipts: {}, 25 | }; 26 | default: 27 | return state; 28 | } 29 | } -------------------------------------------------------------------------------- /src/reducers/gui/buySellCrypto.js: -------------------------------------------------------------------------------- 1 | /* 2 | This reducer contains general navigation and saved form data 3 | for the buy/sell crypto screen 4 | */ 5 | 6 | import { 7 | SET_ACTIVE_SECTION_BUY_SELL_CRYPTO 8 | } from '../../utils/constants/storeType' 9 | 10 | export const buySellCrypto = (state = { 11 | activeSection: null 12 | }, action) => { 13 | switch (action.type) { 14 | case SET_ACTIVE_SECTION_BUY_SELL_CRYPTO: 15 | return { 16 | ...state, 17 | activeSection: action.activeSection, 18 | }; 19 | default: 20 | return state; 21 | } 22 | } -------------------------------------------------------------------------------- /src/reducers/gui/coinOverview.js: -------------------------------------------------------------------------------- 1 | /* 2 | This reducer contains general navigation and saved form data 3 | for the buy/sell crypto screen 4 | */ 5 | 6 | import { 7 | SET_OVERVIEW_FILTER 8 | } from '../../utils/constants/storeType' 9 | 10 | export const coinOverview = (state = { 11 | activeOverviewFilter: {} 12 | }, action) => { 13 | switch (action.type) { 14 | case SET_OVERVIEW_FILTER: 15 | return { 16 | ...state, 17 | activeOverviewFilter: {...state.activeOverviewFilter, [action.payload.chainTicker]: action.payload.filterType}, 18 | }; 19 | default: 20 | return state; 21 | } 22 | } -------------------------------------------------------------------------------- /src/reducers/gui/customCoins.js: -------------------------------------------------------------------------------- 1 | /* 2 | This reduces contains general navigation and saved form data 3 | for the custom coin adding screens 4 | */ 5 | 6 | import { 7 | SET_ACTIVE_SECTION_CUSTOM_COIN 8 | } from '../../utils/constants/storeType' 9 | 10 | export const customCoins = (state = { 11 | activeSection: null 12 | }, action) => { 13 | switch (action.type) { 14 | case SET_ACTIVE_SECTION_CUSTOM_COIN: 15 | return { 16 | ...state, 17 | activeSection: action.activeSection, 18 | }; 19 | default: 20 | return state; 21 | } 22 | } -------------------------------------------------------------------------------- /src/reducers/keyboard.js: -------------------------------------------------------------------------------- 1 | /* 2 | The keyboard reducer stores information about the phone keyboard 3 | for display purposes 4 | */ 5 | 6 | import { 7 | SET_KEYBOARD_ACTIVE, 8 | SET_KEYBOARD_HEIGHT 9 | } from "../utils/constants/storeType"; 10 | 11 | export const keyboard = ( 12 | state = { 13 | height: 0, 14 | active: false 15 | }, 16 | action 17 | ) => { 18 | switch (action.type) { 19 | case SET_KEYBOARD_HEIGHT: 20 | return { 21 | ...state, 22 | height: action.payload.height 23 | }; 24 | case SET_KEYBOARD_ACTIVE: 25 | return { 26 | ...state, 27 | active: action.payload.active 28 | } 29 | default: 30 | return state; 31 | } 32 | }; 33 | -------------------------------------------------------------------------------- /src/reducers/modal.js: -------------------------------------------------------------------------------- 1 | /* 2 | The modal reducer handles modals generated within the app, 3 | showing them one at a time as they are generated. The modal 4 | stack contains unique modal ids. 5 | */ 6 | 7 | import { 8 | PUSH_MODAL, 9 | REMOVE_MODAL 10 | } from "../utils/constants/storeType"; 11 | 12 | export const modal = ( 13 | state = { 14 | stack: [], // Array of uids 15 | }, 16 | action 17 | ) => { 18 | switch (action.type) { 19 | case PUSH_MODAL: 20 | return { 21 | ...state, 22 | stack: [...state.stack, action.payload.modal], 23 | }; 24 | case REMOVE_MODAL: 25 | return { 26 | ...state, 27 | stack: state.stack.filter(modal => modal !== action.payload.modal), 28 | }; 29 | default: 30 | return state; 31 | } 32 | }; 33 | -------------------------------------------------------------------------------- /src/sagas/channels/dlight.js: -------------------------------------------------------------------------------- 1 | import { all, takeEvery, put } from "redux-saga/effects"; 2 | import { 3 | INIT_DLIGHT_CHANNEL_START, 4 | INIT_DLIGHT_CHANNEL_FINISH, 5 | } from "../../utils/constants/storeType"; 6 | 7 | export default function * dlightSaga() { 8 | yield all([ 9 | takeEvery(INIT_DLIGHT_CHANNEL_START, handleFinishDlightInit), 10 | ]); 11 | } 12 | 13 | function * handleFinishDlightInit(action) { 14 | yield put({type: INIT_DLIGHT_CHANNEL_FINISH, payload: action.payload}) 15 | } -------------------------------------------------------------------------------- /src/sagas/channels/electrum.js: -------------------------------------------------------------------------------- 1 | import { all, takeEvery, put } from "redux-saga/effects"; 2 | import { 3 | INIT_ELECTRUM_CHANNEL_START, 4 | INIT_ELECTRUM_CHANNEL_FINISH, 5 | } from "../../utils/constants/storeType"; 6 | 7 | export default function * electrumSaga() { 8 | yield all([ 9 | takeEvery(INIT_ELECTRUM_CHANNEL_START, handleFinishElectrumInit), 10 | ]); 11 | } 12 | 13 | function * handleFinishElectrumInit(action) { 14 | yield put({type: INIT_ELECTRUM_CHANNEL_FINISH, payload: action.payload}) 15 | } -------------------------------------------------------------------------------- /src/sagas/channels/eth.js: -------------------------------------------------------------------------------- 1 | import { all, takeEvery, put } from "redux-saga/effects"; 2 | import { 3 | INIT_ETH_CHANNEL_START, 4 | INIT_ETH_CHANNEL_FINISH, 5 | } from "../../utils/constants/storeType"; 6 | 7 | export default function * ethSaga() { 8 | yield all([ 9 | takeEvery(INIT_ETH_CHANNEL_START, handleFinishEthInit), 10 | ]); 11 | } 12 | 13 | function * handleFinishEthInit(action) { 14 | yield put({type: INIT_ETH_CHANNEL_FINISH, payload: action.payload}) 15 | } -------------------------------------------------------------------------------- /src/sagas/channels/general.js: -------------------------------------------------------------------------------- 1 | import { all, takeEvery, put } from "redux-saga/effects"; 2 | import { 3 | INIT_GENERAL_CHANNEL_FINISH, 4 | INIT_GENERAL_CHANNEL_START, 5 | } from "../../utils/constants/storeType"; 6 | 7 | export default function * generalSaga() { 8 | yield all([ 9 | takeEvery(INIT_GENERAL_CHANNEL_START, handleFinishGeneralInit), 10 | ]); 11 | } 12 | 13 | function * handleFinishGeneralInit(action) { 14 | yield put({type: INIT_GENERAL_CHANNEL_FINISH, payload: action.payload}) 15 | } -------------------------------------------------------------------------------- /src/sagas/channels/wyre.js: -------------------------------------------------------------------------------- 1 | import { all, takeEvery, put } from "redux-saga/effects"; 2 | import { 3 | INIT_WYRE_COIN_CHANNEL_START, 4 | INIT_WYRE_COIN_CHANNEL_FINISH, 5 | } from "../../utils/constants/storeType"; 6 | 7 | export default function * wyreCoinSaga() { 8 | yield all([ 9 | takeEvery(INIT_WYRE_COIN_CHANNEL_START, handleFinishWyreCoinInit), 10 | ]); 11 | } 12 | 13 | function * handleFinishWyreCoinInit(action) { 14 | yield put({type: INIT_WYRE_COIN_CHANNEL_FINISH, payload: action.payload}) 15 | } -------------------------------------------------------------------------------- /src/selectors/authentication.js: -------------------------------------------------------------------------------- 1 | export const selectActiveAccount = (state) => ( 2 | state.authentication.activeAccount 3 | ); 4 | 5 | export const selectLoginState = (state) => ( 6 | state.authentication.signedIn 7 | ); 8 | 9 | export const selectPaymentMethod = (state, method) => { 10 | const { paymentMethods } = state.authentication.activeAccount; 11 | return paymentMethods && paymentMethods[method]; 12 | }; 13 | 14 | export const selectWyrePaymentMethod = (state) => ( 15 | selectPaymentMethod(state, 'wyre') 16 | ); 17 | -------------------------------------------------------------------------------- /src/selectors/networkName.js: -------------------------------------------------------------------------------- 1 | import { createSelector } from 'reselect'; 2 | import { CoinDirectory } from '../utils/CoinData/CoinDirectory'; 3 | 4 | const selectSubWallet = (state) => state.coinMenus.activeSubWallets[state.coins.activeCoin.id]; 5 | 6 | export const selectNetworkName = createSelector( 7 | [selectSubWallet], 8 | (subwallet) => { 9 | try { 10 | return subwallet.network 11 | ? CoinDirectory.getBasicCoinObj(subwallet.network).display_ticker 12 | : null; 13 | } catch (e) { 14 | return null; 15 | } 16 | } 17 | ); 18 | 19 | export default selectNetworkName; 20 | -------------------------------------------------------------------------------- /src/selectors/notifications.js: -------------------------------------------------------------------------------- 1 | import {createSelector} from 'reselect'; 2 | 3 | const selectNotificationDirectory = state => state.notifications.directory; 4 | 5 | const selectNotificationAccounts = state => state.notifications.accounts; 6 | 7 | export const selectNotifications = createSelector( 8 | [ 9 | selectNotificationDirectory, 10 | selectNotificationAccounts, 11 | ], 12 | (directory, accounts) => { 13 | return { 14 | directory, 15 | accounts 16 | }; 17 | }, 18 | ); 19 | -------------------------------------------------------------------------------- /src/selectors/settings.js: -------------------------------------------------------------------------------- 1 | import { createSelector } from 'reselect'; 2 | 3 | const addressBlocklist = state => 4 | state.settings.generalWalletSettings.addressBlocklist 5 | ? state.settings.generalWalletSettings.addressBlocklist 6 | : []; 7 | 8 | const vrpcOverrides = state => 9 | state.settings.generalWalletSettings.vrpcOverrides 10 | ? state.settings.generalWalletSettings.vrpcOverrides 11 | : {}; 12 | 13 | export const selectAddressBlocklist = createSelector( 14 | [addressBlocklist], 15 | (_addressBlocklist) => { 16 | return _addressBlocklist 17 | } 18 | ); 19 | 20 | export const selectVrpcOverrides = createSelector( 21 | [vrpcOverrides], 22 | (_vrpcOverrides) => { 23 | return _vrpcOverrides 24 | } 25 | ); -------------------------------------------------------------------------------- /src/selectors/widgets.js: -------------------------------------------------------------------------------- 1 | import {createSelector} from 'reselect'; 2 | 3 | const selectWidgetOrder = state => state.widgets.order; 4 | 5 | export const selectWidgets = createSelector( 6 | [ 7 | selectWidgetOrder 8 | ], 9 | (order) => { 10 | return { 11 | order 12 | }; 13 | }, 14 | ); 15 | -------------------------------------------------------------------------------- /src/styles/index.js: -------------------------------------------------------------------------------- 1 | import roots from './roots.styles' 2 | import buttons from './buttons.styles' 3 | import text from './text.styles' 4 | import containers from './containers.styles' 5 | import { StyleSheet } from "react-native"; 6 | import misc from './misc.styles'; 7 | import tables from './tables.styles'; 8 | 9 | export default Styles = StyleSheet.create({ 10 | ...roots, 11 | ...buttons, 12 | ...text, 13 | ...containers, 14 | ...misc, 15 | ...tables, 16 | }); -------------------------------------------------------------------------------- /src/styles/tables.styles.js: -------------------------------------------------------------------------------- 1 | import Colors from "../globals/colors"; 2 | 3 | export default tables = { 4 | infoTable: { 5 | alignSelf: 'stretch', 6 | justifyContent: 'center', 7 | }, 8 | infoTableRow: { 9 | flexDirection: 'row', 10 | justifyContent: 'space-between', 11 | marginTop: 10, 12 | }, 13 | infoTableCell: { 14 | fontSize: 16, 15 | color: Colors.quaternaryColor, 16 | flex: 1, 17 | alignItems: 'flex-end', 18 | textAlign: 'right', 19 | paddingTop: 1, 20 | alignSelf: "center" 21 | }, 22 | listItemTableCell: { 23 | fontSize: 16, 24 | alignSelf: "center", 25 | paddingRight: 6 26 | }, 27 | infoTableHeaderCell: { 28 | fontSize: 16, 29 | color: Colors.quaternaryColor, 30 | fontFamily: 'Avenir-Black', 31 | } 32 | } -------------------------------------------------------------------------------- /src/tests/helpers/MockChainInfo.js: -------------------------------------------------------------------------------- 1 | export const MOCK_TX = { 2 | id: '596574dab334726d080f15c7f71837e66ff571ca284400c1d122e47f7a97e9f5', 3 | height: 596092 4 | } -------------------------------------------------------------------------------- /src/tests/helpers/MockNetwork.js: -------------------------------------------------------------------------------- 1 | export const mockNetwork = { 2 | messagePrefix: '\x18Verus Coin Signed Message:\n', 3 | bech32: 'bc', 4 | bip32: { 5 | public: 0x0488b21e, 6 | private: 0x0488ade4 7 | }, 8 | pubKeyHash: 0x3c, 9 | scriptHash: 0x55, 10 | wif: 0xBC, 11 | consensusBranchId: { 12 | 1: 0x00, 13 | 2: 0x00, 14 | 3: 0x5ba81b19, 15 | 4: 0x76b809bb 16 | }, 17 | coin: 'vrsc', 18 | isZcash: true, 19 | version: 4 20 | } -------------------------------------------------------------------------------- /src/tests/helpers/MockNumbers.js: -------------------------------------------------------------------------------- 1 | export const MOCK_SATS = "12345678" 2 | export const MOCK_COINS = "0.12345678" 3 | export const MOCK_COINS_TRUNC = 0.1234 4 | export const NUM_DECIMALS_MOCK_COINS = 8 5 | export const MOCK_LOCKTIME = 50000000000 6 | export const MOCK_UTXO_LIST = [{value: 50000000}, {value: 50000000}, {value: 50000000}, {value: 50000000}] 7 | export const MOCK_FEE = 1000 8 | export const MOCK_MAX_SPEND = "199999000" -------------------------------------------------------------------------------- /src/tests/helpers/MockServerData.js: -------------------------------------------------------------------------------- 1 | export const MOCK_PROXY_SERVER = 'mock.proxy.server' -------------------------------------------------------------------------------- /src/utils/CoinData/electrum/dpow.js: -------------------------------------------------------------------------------- 1 | const dpowCoins = [ 2 | 'KMD', 3 | 'SUPERNET', 4 | 'REVS', 5 | 'PANGEA', 6 | 'PGT', 7 | 'DEX', 8 | 'JUMBLR', 9 | 'BET', 10 | 'CRYPTO', 11 | 'COQUI', 12 | 'HODL', 13 | 'MSHARK', 14 | 'BOTS', 15 | 'MGW', 16 | 'MVP', 17 | 'KV', 18 | 'CEAL', 19 | 'MESH', 20 | 'WLC', 21 | 'AXO', 22 | 'ETOMIC', 23 | 'BTCH', 24 | 'OOT', 25 | 'NINJA', 26 | 'GLXT', 27 | 'EQL', 28 | 'BNTN', 29 | 'PRLPAY', 30 | 'CHAIN', 31 | 'ZILLA', 32 | 'DSEC', 33 | 'VRSC', 34 | 'MGNX', 35 | 'CCL', 36 | 'PIRATE', 37 | 'DION', 38 | 'KMDICE', 39 | 'OUR', 40 | 'RFOX', 41 | 'MORTY', 42 | 'RICK', 43 | 'SEC', 44 | 'KSB', 45 | 'VOTE2019', 46 | 'HUSH3', 47 | 'KOIN', 48 | ]; 49 | 50 | module.exports = dpowCoins; 51 | -------------------------------------------------------------------------------- /src/utils/InitialData/ClaimCategory.js: -------------------------------------------------------------------------------- 1 | const generateClaimCategories = (identityId) => ([ 2 | { 3 | uid: `${identityId}-other`, 4 | id: `${identityId}-other`, 5 | name: 'other', 6 | displayName: 'Other', 7 | desc: '', 8 | identity: identityId, 9 | }, 10 | { 11 | uid:`${identityId}-personal-information`, 12 | id: `${identityId}-personal-information`, 13 | displayName: 'Personal Information', 14 | name: 'personal-information', 15 | desc: '', 16 | identity: identityId, 17 | }, 18 | { 19 | uid: `${identityId}-health`, 20 | id: `${identityId}-health`, 21 | displayName: 'Health', 22 | name: 'health', 23 | desc: '', 24 | identity: identityId, 25 | }, 26 | ]); 27 | 28 | export default generateClaimCategories; 29 | -------------------------------------------------------------------------------- /src/utils/InitialData/updateStoredItems.js: -------------------------------------------------------------------------------- 1 | const updateStoredItems = (storedItems, updatedItems, type) => { 2 | const oldEntries = storedItems.filter( 3 | (storedItem) => !updatedItems[type].some( 4 | (updatedItem) => updatedItem.uid === storedItem.uid, 5 | ), 6 | ); 7 | const updatedEntries = oldEntries.concat(updatedItems[type]); 8 | return updatedEntries; 9 | }; 10 | 11 | export default updateStoredItems; 12 | -------------------------------------------------------------------------------- /src/utils/QrScanner/ProcessedQr.js: -------------------------------------------------------------------------------- 1 | export const PROCESSED_PAYMENT_REQUEST = "PAYMENT_REQUEST" 2 | 3 | export class ProcessedQr { 4 | constructor (raw, type) { 5 | this.raw = raw 6 | this.type = type 7 | } 8 | } 9 | 10 | export class ProcessedPaymentRequest extends ProcessedQr { 11 | constructor (raw, coinObj, address, amount, note, system) { 12 | super(raw, PROCESSED_PAYMENT_REQUEST) 13 | this.coinObj = coinObj 14 | this.address = address 15 | this.amount = amount 16 | this.note = note 17 | this.system = system 18 | } 19 | 20 | toJson() { 21 | return { 22 | coinObj: this.coinObj, 23 | address: this.address, 24 | amount: this.amount, 25 | note: this.note, 26 | system: this.system 27 | } 28 | } 29 | } -------------------------------------------------------------------------------- /src/utils/__tests__/int/electrum/getBlockHeight.int.test.js: -------------------------------------------------------------------------------- 1 | import { 2 | MOCK_PROXY_SERVER 3 | } from '../../../../tests/helpers/MockServerData' 4 | 5 | import { 6 | setFetchParams 7 | } from '../../../../tests/helpers/SetFetchParams' 8 | 9 | import { getBlockHeight } from '../../../api/channels/electrum/callCreators' 10 | 11 | describe('Function to fetch blockheight', () => { 12 | it('can fetch blockheight from specified electrum and proxy server', () => { 13 | return getBlockHeight(MOCK_PROXY_SERVER, setFetchParams(true, 200, {getcurrentblock: [200000]}, true)) 14 | .then((res) => { 15 | expect(res).toHaveProperty('msg') 16 | expect(res).toHaveProperty('result') 17 | 18 | expect(res.msg).toBe('success') 19 | expect(Number(res.result)).not.toBeNaN() 20 | }) 21 | }) 22 | }) -------------------------------------------------------------------------------- /src/utils/__tests__/unit/promises.unit.test.js: -------------------------------------------------------------------------------- 1 | import { timeout } from '../../promises' 2 | 3 | const TIMEOUT_MS = 1000 4 | 5 | describe('The set of promise utility functions', () => { 6 | it('can reject a promise on timeout', async () => { 7 | await expect(timeout(TIMEOUT_MS, new Promise((r, j)=>{setTimeout(r, TIMEOUT_MS*2)}))) 8 | .rejects.toThrow('Network request timed out') 9 | }) 10 | 11 | it('can complete a promise before timeout', async () => { 12 | await expect(timeout(TIMEOUT_MS, Promise.resolve('lemon'))).resolves.toBe('lemon'); 13 | }) 14 | }) -------------------------------------------------------------------------------- /src/utils/addressBlocklist.js: -------------------------------------------------------------------------------- 1 | export const addressIsBlocked = (address, blockList) => { 2 | for (const blockedAddress of blockList) { 3 | if (blockedAddress.address.toLowerCase() === address.toLowerCase()) { 4 | return true; 5 | } 6 | } 7 | 8 | return false; 9 | } -------------------------------------------------------------------------------- /src/utils/agama-wallet-lib/block.js: -------------------------------------------------------------------------------- 1 | const bitcoin = require('bitgo-utxo-lib'); 2 | 3 | const parseBlockHeader = (hex, network) => { 4 | const block = bitcoin.Block.fromBuffer(new Buffer.from(hex, 'hex'), network, true); 5 | return block; 6 | }; 7 | 8 | const electrumMerkleRoot = (parsedBlock) => { 9 | if (parsedBlock.merkleRoot) { // electrum protocol v1.4 10 | return Buffer.from(parsedBlock.merkleRoot.reverse()).toString('hex'); 11 | } else { 12 | return parsedBlock.merkle_root; 13 | } 14 | }; 15 | 16 | module.exports = { 17 | parseBlockHeader, 18 | electrumMerkleRoot, 19 | }; -------------------------------------------------------------------------------- /src/utils/agama-wallet-lib/dlight-servers.js: -------------------------------------------------------------------------------- 1 | let dlightServers = { 2 | vrsc: ['lightwallet.verus.services:8120'], 3 | zec: ['lightwalletd.z.cash:9067'], 4 | zectest: ['lightwalletd.testnet.z.cash:9067'] 5 | }; 6 | 7 | module.exports = { 8 | dlightServers 9 | }; 10 | -------------------------------------------------------------------------------- /src/utils/api/channels/dlight/requests/getAddresses.js: -------------------------------------------------------------------------------- 1 | import { makeDlightRequest } from '../callCreators' 2 | import { DLIGHT_PRIVATE_ADDRESSES } from '../../../../constants/dlightConstants' 3 | 4 | // Lists addresses associated with a light daemon wallet 5 | export const getAddresses = (coinId, accountHash, coinProto) => { 6 | return makeDlightRequest(coinId, accountHash, coinProto, 0, DLIGHT_PRIVATE_ADDRESSES, []) 7 | } -------------------------------------------------------------------------------- /src/utils/api/channels/dlight/requests/getBlockCount.js: -------------------------------------------------------------------------------- 1 | import { makeDlightRequest } from '../callCreators' 2 | import { DLIGHT_BLOCKCOUNT } from '../../../../constants/dlightConstants' 3 | 4 | // Get the current chain blockheight 5 | export const getBlockCount = (coinId, accountHash, coinProto) => { 6 | return makeDlightRequest(coinId, accountHash, coinProto, 0, DLIGHT_BLOCKCOUNT, []) 7 | } -------------------------------------------------------------------------------- /src/utils/api/channels/dlight/requests/getInfo.js: -------------------------------------------------------------------------------- 1 | import { makeDlightRequest } from '../callCreators' 2 | import { DLIGHT_INFO } from '../../../../constants/dlightConstants' 3 | 4 | // Get the syncing status/information about a blockchain 5 | export const getInfo = (coinId, accountHash, coinProto) => { 6 | return makeDlightRequest(coinId, accountHash, coinProto, 0, DLIGHT_INFO, []) 7 | } -------------------------------------------------------------------------------- /src/utils/api/channels/dlight/requests/getPrivateBalance.js: -------------------------------------------------------------------------------- 1 | import { makeDlightRequest } from '../callCreators' 2 | import { DLIGHT_PRIVATE_BALANCES } from '../../../../constants/dlightConstants' 3 | import BigNumber from "bignumber.js"; 4 | 5 | // Get the total private balance associated with a light wallet daemon 6 | export const getPrivateBalance = async (coinId, accountHash, coinProto) => { 7 | const res = await makeDlightRequest(coinId, accountHash, coinProto, 0, DLIGHT_PRIVATE_BALANCES, []) 8 | 9 | return { 10 | ...res, 11 | result: res.result ? { 12 | confirmed: BigNumber(res.result.confirmed), 13 | total: BigNumber(res.result.total), 14 | pending: BigNumber(res.result.total).minus(BigNumber(res.result.confirmed)) 15 | } : res.result 16 | } 17 | } -------------------------------------------------------------------------------- /src/utils/api/channels/dlight/requests/getTransactions.js: -------------------------------------------------------------------------------- 1 | import { makeDlightRequest } from '../callCreators' 2 | import { DLIGHT_PRIVATE_TRANSACTIONS } from '../../../../constants/dlightConstants' 3 | 4 | // Get the transactions associated with a light daemon wallet 5 | // based on tx type (either "pending", "cleared", "received", "sent", or "all") 6 | export const getZTransactions = (coinId, accountHash, coinProto, transactionType) => { 7 | return makeDlightRequest(coinId, accountHash, coinProto, 0, DLIGHT_PRIVATE_TRANSACTIONS, [transactionType == null ? "all" : transactionType]) 8 | } -------------------------------------------------------------------------------- /src/utils/api/channels/dlight/state/synchronizer.js: -------------------------------------------------------------------------------- 1 | import VerusLightClient from 'react-native-verus-light-client' 2 | 3 | // Uses a coin's ticker symbol (id), protocol (btc || vrsc) 4 | // and user's account hash to identify a light client wallet 5 | // and start syncing it to the blockchain 6 | export const startSync = (coinId, coinProto, accountHash) => { 7 | return VerusLightClient.startSync(coinId, coinProto, accountHash) 8 | } 9 | 10 | // Uses a coin's ticker symbol (id), protocol (btc || vrsc) 11 | // and user's account hash to identify a light client wallet 12 | // and stop it syncing to the blockchain 13 | export const stopSync = (coinId, coinProto, accountHash) => { 14 | return VerusLightClient.stopSync(coinId, coinProto, accountHash) 15 | } -------------------------------------------------------------------------------- /src/utils/api/channels/electrum/proxyServers.js: -------------------------------------------------------------------------------- 1 | import { Platform } from 'react-native'; 2 | 3 | const proxyServersHttps = ['el0.verus.io', 'el1.verus.io', 'el2.verus.io','el3.verus.io']; 4 | const proxyServersHttp = ['94.130.225.86:80', '94.130.225.86:80']; 5 | 6 | export const httpsEnabled = Platform.OS === 'android' && Platform.Version <= 24 ? false : true; 7 | 8 | export const proxyServers = httpsEnabled ? proxyServersHttps : proxyServersHttp; 9 | -------------------------------------------------------------------------------- /src/utils/api/channels/electrum/requests/getBlockHeight.js: -------------------------------------------------------------------------------- 1 | import { httpsEnabled } from '../proxyServers' 2 | import { isJson } from '../../../../objectManip' 3 | import axios from 'axios'; 4 | 5 | export const getBlockHeight = (proxyServer, electrumServer) => { 6 | return new Promise((resolve, reject) => { 7 | axios.get(`${httpsEnabled ? 'https' : 'http'}://${proxyServer}/api/getcurrentblock?port=${electrumServer.port}&ip=${electrumServer.ip}&proto=${electrumServer.proto}`) 8 | .then((response) => { 9 | if (!isJson(response.data)) { 10 | throw new Error("Invalid JSON in getBlockHeight.js, received: " + response) 11 | } 12 | 13 | resolve(response.data) 14 | }) 15 | .catch((err) => { 16 | reject(err) 17 | }) 18 | }); 19 | } -------------------------------------------------------------------------------- /src/utils/api/channels/electrum/requests/getTransaction.js: -------------------------------------------------------------------------------- 1 | import { electrumRequest } from '../callCreators' 2 | 3 | export const getOneTransaction = (coinObj, txid) => { 4 | const callType = 'gettransaction' 5 | let params = { txid: txid } 6 | 7 | return new Promise((resolve, reject) => { 8 | electrumRequest(coinObj, callType, params) 9 | .then((response) => { 10 | resolve(response) 11 | }) 12 | .catch((err) => { 13 | console.log("Caught error in getTransaction.js") 14 | console.log(err) 15 | reject(err) 16 | }) 17 | }); 18 | } -------------------------------------------------------------------------------- /src/utils/api/channels/erc20/callCreator.js: -------------------------------------------------------------------------------- 1 | export * from './requests/getErc20Balance' 2 | export * from './requests/getErc20Transactions' 3 | export * from './requests/preflight' 4 | export * from './requests/send' 5 | export * from './requests/specific/index' -------------------------------------------------------------------------------- /src/utils/api/channels/erc20/requests/specific/index.js: -------------------------------------------------------------------------------- 1 | import rfox from './rfox' 2 | 3 | export const UtilityContracts = { 4 | rfox 5 | } -------------------------------------------------------------------------------- /src/utils/api/channels/erc20/requests/specific/rfox/index.js: -------------------------------------------------------------------------------- 1 | import { getRfoxAccountBalances } from './getTotalAccountBalance' 2 | import { claimRFoxAccountBalances } from './claimAccountBalance' 3 | 4 | 5 | export default { 6 | getRfoxAccountBalances, 7 | claimRFoxAccountBalances 8 | } -------------------------------------------------------------------------------- /src/utils/api/channels/eth/callCreator.js: -------------------------------------------------------------------------------- 1 | export * from './requests/getEthBalance' 2 | export * from './requests/getEthTransactions' 3 | export * from './requests/preflight' 4 | export * from './requests/send' -------------------------------------------------------------------------------- /src/utils/api/channels/eth/requests/getEthBalance.js: -------------------------------------------------------------------------------- 1 | import { getWeb3ProviderForNetwork } from '../../../../web3/provider' 2 | import ethers from 'ethers'; 3 | import BigNumber from "bignumber.js"; 4 | 5 | // Gets the Ethereum balance of an address or name as a big number 6 | export const getEthBalance = async (address, network = 'homestead') => { 7 | return await getWeb3ProviderForNetwork(network).DefaultProvider.getBalance(address) 8 | } 9 | 10 | //TODO: Handle BigNumbers 11 | export const getStandardEthBalance = async (address, network) => { 12 | return BigNumber(ethers.utils.formatUnits(await getEthBalance(address, network))) 13 | } -------------------------------------------------------------------------------- /src/utils/api/channels/verusid/callCreators.js: -------------------------------------------------------------------------------- 1 | export * from './requests/getIdentity'; 2 | export * from './requests/getWatchedIdentities'; 3 | export * from './requests/getFriendlyNameMap'; 4 | export * from './requests/getCurrency'; 5 | export * from './requests/getCurrencyNameMap'; -------------------------------------------------------------------------------- /src/utils/api/channels/verusid/requests/getWatchedIdentities.js: -------------------------------------------------------------------------------- 1 | import store from '../../../../../store'; 2 | 3 | export const getWatchedIdentities = coinObj => { 4 | const state = store.getState(); 5 | return state.channelStore_verusid.watchedVerusIds[coinObj.id]; 6 | }; 7 | -------------------------------------------------------------------------------- /src/utils/api/channels/vrpc/requests/createVerusPayInvoice.js: -------------------------------------------------------------------------------- 1 | import VrpcProvider from "../../../../vrpc/vrpcInterface" 2 | 3 | export const createVerusPayInvoice = async (coinObj, invoiceDetails) => { 4 | const verusIdInterface = VrpcProvider.getVerusIdInterface(coinObj.system_id); 5 | 6 | const inv = await verusIdInterface.createVerusPayInvoice( 7 | invoiceDetails 8 | ); 9 | 10 | return inv; 11 | }; -------------------------------------------------------------------------------- /src/utils/api/channels/vrpc/requests/estimateConversion.js: -------------------------------------------------------------------------------- 1 | import VrpcProvider from "../../../../vrpc/vrpcInterface" 2 | 3 | export const estimateConversion = (systemId, currency, convertto, amount, via, preconvert) => { 4 | return VrpcProvider.getEndpoint(systemId).estimateConversion({ 5 | currency, 6 | convertto, 7 | amount, 8 | via, 9 | preconvert 10 | }) 11 | } -------------------------------------------------------------------------------- /src/utils/api/channels/vrpc/requests/extractLoginConsentSig.js: -------------------------------------------------------------------------------- 1 | import { primitives } from "verusid-ts-client" 2 | import { getSignatureInfo } from "./getSignatureInfo"; 3 | 4 | export const extractLoginConsentSig = (coinObj, request) => { 5 | const loginConsentRequest = new primitives.LoginConsentRequest(request); 6 | 7 | return getSignatureInfo( 8 | coinObj.system_id, 9 | loginConsentRequest.signing_id, 10 | loginConsentRequest.signature.signature 11 | ); 12 | }; -------------------------------------------------------------------------------- /src/utils/api/channels/vrpc/requests/extractVerusPayInvoiceSig.js: -------------------------------------------------------------------------------- 1 | import { primitives } from "verusid-ts-client" 2 | import { getSignatureInfo } from "./getSignatureInfo"; 3 | 4 | export const extractVerusPayInvoiceSig = (coinObj, inv) => { 5 | const invoice = primitives.VerusPayInvoice.fromJson(inv); 6 | 7 | return getSignatureInfo( 8 | coinObj.system_id, 9 | invoice.signing_id, 10 | invoice.signature.signature 11 | ); 12 | }; -------------------------------------------------------------------------------- /src/utils/api/channels/vrpc/requests/fundRawTransaction.js: -------------------------------------------------------------------------------- 1 | import VrpcProvider from "../../../../vrpc/vrpcInterface" 2 | 3 | export const fundRawTransaction = (systemId, txHex, utxos, changeAddr, fee) => { 4 | return VrpcProvider.getEndpoint(systemId).fundRawTransaction(txHex, utxos, changeAddr, fee) 5 | } -------------------------------------------------------------------------------- /src/utils/api/channels/vrpc/requests/getAddressBalances.js: -------------------------------------------------------------------------------- 1 | import VrpcProvider from "../../../../vrpc/vrpcInterface" 2 | 3 | export const getAddressBalances = (systemId, addresses, includeFriendlyNames) => { 4 | return VrpcProvider.getEndpoint(systemId).getAddressBalance({ 5 | addresses, 6 | friendlynames: includeFriendlyNames, 7 | }); 8 | } -------------------------------------------------------------------------------- /src/utils/api/channels/vrpc/requests/getAddressDeltas.js: -------------------------------------------------------------------------------- 1 | import VrpcProvider from "../../../../vrpc/vrpcInterface" 2 | 3 | export const getAddressDeltas = (systemId, addresses, includeFriendlyNames, verbosity) => { 4 | return VrpcProvider.getEndpoint(systemId).getAddressDeltas({ 5 | addresses, 6 | friendlynames: includeFriendlyNames, 7 | verbosity 8 | }); 9 | } -------------------------------------------------------------------------------- /src/utils/api/channels/vrpc/requests/getAddressMempool.js: -------------------------------------------------------------------------------- 1 | import VrpcProvider from "../../../../vrpc/vrpcInterface" 2 | 3 | export const getAddressMempool = (systemId, addresses, includeFriendlyNames, verbosity) => { 4 | return VrpcProvider.getEndpoint(systemId).getAddressMempool({ 5 | addresses, 6 | friendlynames: includeFriendlyNames, 7 | verbosity 8 | }); 9 | } -------------------------------------------------------------------------------- /src/utils/api/channels/vrpc/requests/getBlock.js: -------------------------------------------------------------------------------- 1 | import VrpcProvider from "../../../../vrpc/vrpcInterface" 2 | 3 | export const getBlock = (systemId, hashOrHeight, verbosity) => { 4 | return VrpcProvider.getEndpoint(systemId).getBlock(hashOrHeight, verbosity); 5 | } -------------------------------------------------------------------------------- /src/utils/api/channels/vrpc/requests/getCurrencyConverters.js: -------------------------------------------------------------------------------- 1 | import VrpcProvider from "../../../../vrpc/vrpcInterface" 2 | 3 | export const getCurrencyConverters = async (systemId, paramObj) => { 4 | const endpoint = VrpcProvider.getEndpoint(systemId); 5 | 6 | return endpoint.getCurrencyConverters([JSON.stringify(paramObj)]) 7 | } -------------------------------------------------------------------------------- /src/utils/api/channels/vrpc/requests/getInfo.js: -------------------------------------------------------------------------------- 1 | import VrpcProvider from "../../../../vrpc/vrpcInterface" 2 | 3 | export const getInfo = (systemId) => { 4 | return VrpcProvider.getEndpoint(systemId).getInfo(); 5 | } -------------------------------------------------------------------------------- /src/utils/api/channels/vrpc/requests/getSendCurrencyTransaction.js: -------------------------------------------------------------------------------- 1 | import VrpcProvider from "../../../../vrpc/vrpcInterface"; 2 | 3 | export const getSendCurrencyTransaction = async ( 4 | systemId, 5 | currency, 6 | amount, 7 | address, 8 | exportto, 9 | convertto, 10 | feecurrency, 11 | via, 12 | source = '*', 13 | ) => { 14 | const params = { 15 | currency, 16 | amount, 17 | exportto, 18 | convertto, 19 | via, 20 | address, 21 | }; 22 | 23 | if (feecurrency != null) params.feecurrency = feecurrency; 24 | 25 | return await VrpcProvider.getEndpoint(systemId).sendCurrency( 26 | source, 27 | [ 28 | params 29 | ], 30 | 1, 31 | 0.0001, 32 | true, 33 | ); 34 | }; 35 | -------------------------------------------------------------------------------- /src/utils/api/channels/vrpc/requests/getSignatureInfo.js: -------------------------------------------------------------------------------- 1 | import VrpcProvider from "../../../../vrpc/vrpcInterface" 2 | 3 | export const getSignatureInfo = (systemId, iAddrOrIdentity, base64Sig) => { 4 | return VrpcProvider.getVerusIdInterface(systemId).getSignatureInfo( 5 | iAddrOrIdentity, 6 | base64Sig 7 | ); 8 | } -------------------------------------------------------------------------------- /src/utils/api/channels/vrpc/requests/getVdxfid.js: -------------------------------------------------------------------------------- 1 | import VrpcProvider from "../../../../vrpc/vrpcInterface" 2 | 3 | export const getVdxfId = async (system_id, vdxfuri, initialdata) => { 4 | 5 | const vdxfid = await VrpcProvider.getEndpoint(system_id).getVdxfId( 6 | vdxfuri, 7 | initialdata 8 | ); 9 | 10 | return vdxfid; 11 | }; -------------------------------------------------------------------------------- /src/utils/api/channels/vrpc/requests/listCurrencies.js: -------------------------------------------------------------------------------- 1 | import VrpcProvider from "../../../../vrpc/vrpcInterface" 2 | 3 | export const listCurrencies = (systemId, systemType = "local") => { 4 | return VrpcProvider.getEndpoint(systemId).listCurrencies({ systemtype: systemType }); 5 | } -------------------------------------------------------------------------------- /src/utils/api/channels/vrpc/requests/sendRawTransaction.js: -------------------------------------------------------------------------------- 1 | import VrpcProvider from "../../../../vrpc/vrpcInterface" 2 | 3 | export const sendRawTransaction = (systemId, hexstring, allowHighFees) => { 4 | return VrpcProvider.getEndpoint(systemId).sendRawTransaction(hexstring, allowHighFees); 5 | } -------------------------------------------------------------------------------- /src/utils/api/channels/vrpc/requests/signIdProvisioningRequest.js: -------------------------------------------------------------------------------- 1 | import { primitives, VerusIdInterface } from "verusid-ts-client" 2 | import { requestPrivKey } from "../../../../auth/authBox"; 3 | import { VRPC } from "../../../../constants/intervalConstants"; 4 | 5 | export const signIdProvisioningRequest = async (coinObj, rawRequest) => { 6 | const request = new primitives.LoginConsentProvisioningRequest(rawRequest) 7 | 8 | return await VerusIdInterface.signVerusIdProvisioningRequest( 9 | request, 10 | await requestPrivKey(coinObj.id, VRPC), 11 | ); 12 | }; -------------------------------------------------------------------------------- /src/utils/api/channels/vrpc/requests/signMessage.js: -------------------------------------------------------------------------------- 1 | import { requestPrivKey } from "../../../../auth/authBox" 2 | import { VRPC } from "../../../../constants/intervalConstants" 3 | import VrpcProvider from "../../../../vrpc/vrpcInterface" 4 | 5 | export const signMessage = async (coinObj, iAddrOrIdentity, message) => { 6 | const privKey = await requestPrivKey(coinObj.id, VRPC) 7 | 8 | return VrpcProvider.getVerusIdInterface(coinObj.system_id).signMessage( 9 | iAddrOrIdentity, 10 | message, 11 | privKey, 12 | ); 13 | } -------------------------------------------------------------------------------- /src/utils/api/channels/vrpc/requests/verifyIdProvisioningResponse.js: -------------------------------------------------------------------------------- 1 | import { primitives } from "verusid-ts-client" 2 | import VrpcProvider from "../../../../vrpc/vrpcInterface" 3 | 4 | export const verifyIdProvisioningResponse = (coinObj, response) => { 5 | const provisioningResponse = new primitives.LoginConsentProvisioningResponse(response); 6 | 7 | return VrpcProvider.getVerusIdInterface(coinObj.system_id).verifyVerusIdProvisioningResponse( 8 | provisioningResponse, 9 | ); 10 | }; -------------------------------------------------------------------------------- /src/utils/api/channels/vrpc/requests/verifyLoginConsentRequest.js: -------------------------------------------------------------------------------- 1 | import { primitives } from "verusid-ts-client" 2 | import VrpcProvider from "../../../../vrpc/vrpcInterface" 3 | 4 | export const verifyLoginConsentRequest = (coinObj, request) => { 5 | const loginConsentRequest = new primitives.LoginConsentRequest(request); 6 | 7 | return VrpcProvider.getVerusIdInterface(coinObj.system_id).verifyLoginConsentRequest( 8 | loginConsentRequest, 9 | ); 10 | }; -------------------------------------------------------------------------------- /src/utils/api/channels/vrpc/requests/verifyMessage.js: -------------------------------------------------------------------------------- 1 | import VrpcProvider from "../../../../vrpc/vrpcInterface" 2 | 3 | export const verifyMessage = (systemId, iAddrOrIdentity, base64Sig, message) => { 4 | return VrpcProvider.getVerusIdInterface(systemId).verifyMessage( 5 | iAddrOrIdentity, 6 | base64Sig, 7 | message, 8 | ); 9 | } -------------------------------------------------------------------------------- /src/utils/api/channels/vrpc/requests/verifyVerusPayInvoice.js: -------------------------------------------------------------------------------- 1 | import { primitives } from "verusid-ts-client" 2 | import VrpcProvider from "../../../../vrpc/vrpcInterface" 3 | 4 | export const verifyVerusPayInvoice = (coinObj, inv) => { 5 | const invoice = new primitives.VerusPayInvoice(inv); 6 | 7 | return VrpcProvider.getVerusIdInterface(coinObj.system_id).verifySignedVerusPayInvoice( 8 | invoice, 9 | ); 10 | }; -------------------------------------------------------------------------------- /src/utils/api/channels/wyre/requests/getRates.js: -------------------------------------------------------------------------------- 1 | import { conditionallyUpdateService } from "../../../../../actions/actionDispatchers"; 2 | import store from "../../../../../store"; 3 | import { API_GET_SERVICE_RATES, WYRE_SERVICE } from "../../../../constants/intervalConstants"; 4 | 5 | export const getRates = async (coinObj) => { 6 | await conditionallyUpdateService(store.getState(), store.dispatch, API_GET_SERVICE_RATES) 7 | 8 | const state = store.getState(); 9 | let body = null; 10 | 11 | if (state.services.rates[WYRE_SERVICE] != null) { 12 | body = state.services.rates[WYRE_SERVICE][coinObj.currency_id]; 13 | } 14 | 15 | return body 16 | }; 17 | -------------------------------------------------------------------------------- /src/utils/api/channels/wyre/requests/getTransferFollowup.js: -------------------------------------------------------------------------------- 1 | import WyreProvider from "../../../../services/WyreProvider" 2 | 3 | export const getTransferFollowup = async ({ transferId }) => { 4 | try { 5 | return await WyreProvider.getTransferInstructions({ 6 | transferId 7 | }); 8 | } catch(e) { 9 | console.error(e) 10 | 11 | throw e 12 | } 13 | } -------------------------------------------------------------------------------- /src/utils/api/errors/apiError.js: -------------------------------------------------------------------------------- 1 | class ApiException extends Error { 2 | constructor(message, data, chainTicker, channel, code = -1, header = {}) { 3 | super(message) 4 | this.message = message 5 | this.data = data 6 | this.channel = channel 7 | this.code = code 8 | this.chainTicker = chainTicker 9 | this.header = header 10 | 11 | if ("captureStackTrace" in Error) Error.captureStackTrace(this, ApiException); 12 | else this.stack = new Error().stack; 13 | } 14 | } 15 | 16 | ApiException.prototype.name = "ApiException" 17 | 18 | export default ApiException -------------------------------------------------------------------------------- /src/utils/api/errors/errorCodes.js: -------------------------------------------------------------------------------- 1 | // Dlight errors 2 | export const INVALID_REQUEST = -32600 3 | export const GENERIC_ERROR = -1 4 | export const INTERNAL_ERROR = -32603 5 | export const INVALID_PARAMS = -32602 6 | export const NO_RESPONSE = -2 7 | export const ADD_WALLET_FAIL = -3 8 | export const START_SYNC_ERROR = -4 9 | export const STOP_SYNC_ERROR = -5 10 | 11 | // Electrum errors 12 | export const NO_VALID_SERVER = -100 13 | 14 | // General Errors 15 | export const GENERAL_CONNECTION_ERROR = 404 -------------------------------------------------------------------------------- /src/utils/api/errors/errorMessages.js: -------------------------------------------------------------------------------- 1 | export const CONNECTION_ERROR = "Connection Error" -------------------------------------------------------------------------------- /src/utils/api/routers/convert.js: -------------------------------------------------------------------------------- 1 | import { WYRE_SERVICE } from "../../constants/intervalConstants"; 2 | import * as wyre from "../channels/wyre/callCreators"; 3 | 4 | const CONVERT_FUNCTION_MAP = { 5 | [WYRE_SERVICE]: wyre.convert, 6 | }; 7 | 8 | export const convert = async ( 9 | coinObj, 10 | activeUser, 11 | from, 12 | to, 13 | address, 14 | amount, 15 | channel, 16 | params 17 | ) => { 18 | if (CONVERT_FUNCTION_MAP[channel] == null) 19 | throw new Error(`No conversion function available for channel ${channel}`); 20 | else 21 | return await CONVERT_FUNCTION_MAP[channel]( 22 | coinObj, 23 | activeUser, 24 | from, 25 | to, 26 | address, 27 | amount, 28 | params 29 | ); 30 | }; 31 | -------------------------------------------------------------------------------- /src/utils/api/routers/getDepositSources.js: -------------------------------------------------------------------------------- 1 | import { 2 | WYRE_SERVICE, 3 | } from "../../constants/intervalConstants"; 4 | import * as wyre from "../channels/wyre/callCreators"; 5 | 6 | const CONVERSION_PATH_FUNCTION_MAP = { 7 | [WYRE_SERVICE]: wyre.getDepositSources, 8 | }; 9 | 10 | export const getDepositSources = async (coinObj, channel, params) => { 11 | if (CONVERSION_PATH_FUNCTION_MAP[channel] == null) 12 | throw new Error(`No deposit source function available for channel ${channel}`); 13 | else return await CONVERSION_PATH_FUNCTION_MAP[channel](coinObj, channel, params); 14 | }; -------------------------------------------------------------------------------- /src/utils/api/routers/getPendingDeposits.js: -------------------------------------------------------------------------------- 1 | import { 2 | WYRE_SERVICE, 3 | } from "../../constants/intervalConstants"; 4 | import * as wyre from "../channels/wyre/callCreators"; 5 | 6 | const CONVERSION_PATH_FUNCTION_MAP = { 7 | [WYRE_SERVICE]: wyre.getPendingDeposits, 8 | }; 9 | 10 | export const getPendingDeposits = async (coinObj, channel) => { 11 | if (CONVERSION_PATH_FUNCTION_MAP[channel] == null) 12 | throw new Error(`No pending deposit function available for channel ${channel}`); 13 | else return await CONVERSION_PATH_FUNCTION_MAP[channel](coinObj, channel); 14 | }; -------------------------------------------------------------------------------- /src/utils/api/routers/getTransferFollowup.js: -------------------------------------------------------------------------------- 1 | import { WYRE_SERVICE } from "../../constants/intervalConstants"; 2 | import * as wyre from "../channels/wyre/callCreators"; 3 | 4 | const TRANSFER_FOLLOWUP_FUNCTION_MAP = { 5 | [WYRE_SERVICE]: wyre.getTransferFollowup, 6 | }; 7 | 8 | export const getTransferFollowup = async ( 9 | channel, 10 | params 11 | ) => { 12 | if (TRANSFER_FOLLOWUP_FUNCTION_MAP[channel] == null) 13 | throw new Error(`No transfer follow up function available for channel ${channel}`); 14 | else 15 | return await TRANSFER_FOLLOWUP_FUNCTION_MAP[channel](params); 16 | }; 17 | -------------------------------------------------------------------------------- /src/utils/api/routers/getWithdrawDestinations.js: -------------------------------------------------------------------------------- 1 | import { 2 | WYRE_SERVICE, 3 | } from "../../constants/intervalConstants"; 4 | import * as wyre from "../channels/wyre/callCreators"; 5 | 6 | const CONVERSION_PATH_FUNCTION_MAP = { 7 | [WYRE_SERVICE]: wyre.getWithdrawDestinations, 8 | }; 9 | 10 | export const getWithdrawDestinations = async (coinObj, channel, params) => { 11 | if (CONVERSION_PATH_FUNCTION_MAP[channel] == null) 12 | throw new Error(`No withraw destination function available for channel ${channel}`); 13 | else return await CONVERSION_PATH_FUNCTION_MAP[channel](coinObj, channel, params); 14 | }; -------------------------------------------------------------------------------- /src/utils/asyncStore/notificationsStorage.js: -------------------------------------------------------------------------------- 1 | import AsyncStorage from '@react-native-async-storage/async-storage'; 2 | import { NOTIFICATIONS_STORAGE_INTERNAL_KEY } from '../../../env/index' 3 | 4 | export const storeNotifications = async data => { 5 | if (typeof data !== 'object') { 6 | throw new Error( 7 | `Notification store function expected object, received ${typeof data}`, 8 | ); 9 | } 10 | 11 | await AsyncStorage.setItem( 12 | NOTIFICATIONS_STORAGE_INTERNAL_KEY, 13 | JSON.stringify(data), 14 | ) 15 | 16 | return data 17 | }; 18 | 19 | export const loadNotifications = async () => { 20 | const res = await AsyncStorage.getItem(NOTIFICATIONS_STORAGE_INTERNAL_KEY) 21 | 22 | if (res) return JSON.parse(res) 23 | else return {} 24 | }; 25 | -------------------------------------------------------------------------------- /src/utils/asyncStore/transactionsStorage.js: -------------------------------------------------------------------------------- 1 | 2 | import AsyncStorage from '@react-native-async-storage/async-storage'; 3 | import { BLOCK_HEIGHT_STORAGE_INTERNAL_KEY } from '../../../env/index'; 4 | 5 | export const storeBlockHeight = async (blockHeight) => { 6 | try { 7 | await AsyncStorage.setItem(BLOCK_HEIGHT_STORAGE_INTERNAL_KEY, JSON.stringify(blockHeight)); 8 | } catch (error) { 9 | console.log(error); 10 | } 11 | }; 12 | 13 | export const getStoredBlockHeight = async () => { 14 | try { 15 | const result = await AsyncStorage.getItem(BLOCK_HEIGHT_STORAGE_INTERNAL_KEY); 16 | return result ? JSON.parse(result) : 0; 17 | } catch (error) { 18 | console.log(error); 19 | } 20 | }; 21 | -------------------------------------------------------------------------------- /src/utils/block.js: -------------------------------------------------------------------------------- 1 | import BigNumber from "bignumber.js"; 2 | 3 | export const estimateBlocktimeAtHeight = ( 4 | chainStart, 5 | height, 6 | secondsPerBlock = 60, 7 | ) => { 8 | const startBn = BigNumber(chainStart); 9 | const heightBn = BigNumber(height); 10 | const secondsPerBlockBn = BigNumber(secondsPerBlock); 11 | 12 | return startBn.plus(heightBn.times(secondsPerBlockBn)).toString(); 13 | }; 14 | -------------------------------------------------------------------------------- /src/utils/buffer.js: -------------------------------------------------------------------------------- 1 | export const reverse = (src) => { 2 | var buffer = Buffer.alloc(src.length) 3 | 4 | for (var i = 0, j = src.length - 1; i <= j; ++i, --j) { 5 | buffer[i] = src[j] 6 | buffer[j] = src[i] 7 | } 8 | 9 | return buffer 10 | } -------------------------------------------------------------------------------- /src/utils/clipboard/clipboard.js: -------------------------------------------------------------------------------- 1 | import { Alert, Clipboard } from 'react-native'; 2 | 3 | export const copyToClipboard = (data, alertInfo) => { 4 | Clipboard.setString(data) 5 | 6 | if (alertInfo != null) { 7 | Alert.alert(alertInfo.title ? alertInfo.title : "Copied", alertInfo.message); 8 | } 9 | } -------------------------------------------------------------------------------- /src/utils/constants/apps.js: -------------------------------------------------------------------------------- 1 | export const WALLET_APP = 'wallet' 2 | export const WALLET_APP_OVERVIEW = `${WALLET_APP}-overview` 3 | export const WALLET_APP_SEND = `${WALLET_APP}-send` 4 | export const WALLET_APP_RECEIVE = `${WALLET_APP}-receive` 5 | export const WALLET_APP_CONVERT = `${WALLET_APP}-convert` 6 | export const WALLET_APP_MANAGE = `${WALLET_APP}-manage` -------------------------------------------------------------------------------- /src/utils/constants/convert.js: -------------------------------------------------------------------------------- 1 | export const CONVERT_CARD_MODAL_MODES = { 2 | SEND: 'send', 3 | RECEIVE: 'receive' 4 | }; -------------------------------------------------------------------------------- /src/utils/constants/deeplink.js: -------------------------------------------------------------------------------- 1 | export const LOGIN_CONSENT_INFO = 'LOGIN_CONSENT_INFO' 2 | export const VERUSPAY_INVOICE_INFO = 'VERUSPAY_INVOICE_INFO' -------------------------------------------------------------------------------- /src/utils/constants/dlightConstants.js: -------------------------------------------------------------------------------- 1 | export const DLIGHT_PRIVATE_ADDRESSES = 'listaddresses' 2 | export const DLIGHT_PRIVATE_BALANCES = 'getprivatebalance' 3 | export const DLIGHT_PRIVATE_TRANSACTIONS = 'listprivatetransactions' 4 | export const DLIGHT_INFO = 'getinfo' 5 | export const DLIGHT_BLOCKCOUNT = 'getblockcount' 6 | export const DLIGHT_PRIVATE_SEND_PRIVATE_TX = 'sendprivatetransaction' -------------------------------------------------------------------------------- /src/utils/constants/errors.js: -------------------------------------------------------------------------------- 1 | export const UNKNOWN_ERROR = 'UNKNOWN_ERROR' 2 | export const INACTIVE_COIN = 'INACTIVE_COIN' -------------------------------------------------------------------------------- /src/utils/constants/notifications.js: -------------------------------------------------------------------------------- 1 | export const NOTIFICATION_TYPE_BASIC = 'NOTIFICATION_TYPE_BASIC' 2 | export const NOTIFICATION_TYPE_NAVIGATION = 'NOTIFICATION_TYPE_NAVIGATION' 3 | export const NOTIFICATION_TYPE_LOADING = 'NOTIFICATION_TYPE_LOADING' 4 | export const NOTIFICATION_TYPE_DEEPLINK = 'NOTIFICATION_TYPE_DEEPLINK' 5 | export const NOTIFICATION_TYPE_VERUS_ID_PROVISIONING = 'NOTIFICATION_TYPE_VERUS_ID_PROVISIONING ' 6 | 7 | export const NOTIFICATION_ICON_VERUSID = 'NOTIFICATION_ICON_VERUSID' 8 | export const NOTIFICATION_ICON_TX = 'NOTIFICATION_ICON_TX' 9 | export const NOTIFICATION_ICON_INFO = 'NOTIFICATION_ICON_INFO' 10 | export const NOTIFICATION_ICON_ERROR = 'NOTIFICATION_ICON_ERROR' -------------------------------------------------------------------------------- /src/utils/constants/widgets.js: -------------------------------------------------------------------------------- 1 | export const CURRENCY_WIDGET_TYPE = 'currency' 2 | export const TOTAL_UNI_BALANCE_WIDGET_TYPE = 'totalunibalance' 3 | export const VERUSID_WIDGET_TYPE = 'verusid' -------------------------------------------------------------------------------- /src/utils/crypto/nullTx.js: -------------------------------------------------------------------------------- 1 | const NULL_TX = Buffer.from( 2 | Array.apply(null, Array(32)).map(function() { 3 | return 0; 4 | }), 5 | "hex" 6 | ); 7 | 8 | module.exports = NULL_TX -------------------------------------------------------------------------------- /src/utils/crypto/randomBytes.js: -------------------------------------------------------------------------------- 1 | import { randomBytes as rnRandomBytes } from 'react-native-randombytes' 2 | 3 | export const randomBytes = (length) => { 4 | return new Promise((resolve, reject) => { 5 | rnRandomBytes(length, (err, bytes) => { 6 | if (err) reject(err) 7 | else resolve(bytes) 8 | }) 9 | }) 10 | } -------------------------------------------------------------------------------- /src/utils/date.js: -------------------------------------------------------------------------------- 1 | export const parseDate = (date) => { 2 | return (new Date(date).toJSON()).split('T')[0] 3 | } -------------------------------------------------------------------------------- /src/utils/delayedAlert.js: -------------------------------------------------------------------------------- 1 | import { Alert } from 'react-native'; 2 | 3 | const delayedInvocation = (delay, args) => ( 4 | setTimeout(() => (Alert.alert(...args)), delay) 5 | ) 6 | 7 | export default (...args) => ( 8 | delayedInvocation(1000, args) 9 | ) 10 | -------------------------------------------------------------------------------- /src/utils/delayedAsyncAlert.js: -------------------------------------------------------------------------------- 1 | import AlertAsync from "react-native-alert-async"; 2 | 3 | const delay = (ms) => { 4 | return new Promise(resolve => setTimeout(resolve, ms)); 5 | } 6 | 7 | export default async (...args) => { 8 | await delay(1000); 9 | return AlertAsync(...args); 10 | } 11 | -------------------------------------------------------------------------------- /src/utils/dragDetection.js: -------------------------------------------------------------------------------- 1 | import { Platform } from "react-native"; 2 | 3 | export const dragDetectionEnabled = (homeCardDragDetection = false) => { 4 | if (homeCardDragDetection != null) return homeCardDragDetection; 5 | else return false; 6 | } -------------------------------------------------------------------------------- /src/utils/enabledChannels.js: -------------------------------------------------------------------------------- 1 | import { 2 | ENABLE_DLIGHT, 3 | ENABLE_WYRE_COIN, 4 | DISABLED_CHANNELS, 5 | ENABLE_VRPC 6 | } from '../../env/index'; 7 | import store from '../store'; 8 | import {DLIGHT_PRIVATE} from './constants/intervalConstants'; 9 | 10 | export const dlightEnabled = () => { 11 | const state = store.getState(); 12 | 13 | return ( 14 | ENABLE_DLIGHT && state.authentication.activeAccount.seeds[DLIGHT_PRIVATE] 15 | ); 16 | }; 17 | 18 | export const wyreCoinChannelEnabled = () => { 19 | return ENABLE_WYRE_COIN; 20 | }; 21 | 22 | export const vrpcChannelEnabled = () => { 23 | return ENABLE_VRPC; 24 | }; 25 | 26 | export const getDisabledChannels = () => { 27 | return dlightEnabled() 28 | ? DISABLED_CHANNELS 29 | : [...DISABLED_CHANNELS, DLIGHT_PRIVATE]; 30 | }; -------------------------------------------------------------------------------- /src/utils/extraCoins/extraCoins.js: -------------------------------------------------------------------------------- 1 | const extraCoins = require('./cryptocurrencies.json'); 2 | 3 | module.exports = extraCoins; 4 | module.exports.symbols = () => Object.keys(extraCoins); 5 | 6 | -------------------------------------------------------------------------------- /src/utils/fullyqualifiedname.js: -------------------------------------------------------------------------------- 1 | export const convertFqnToDisplayFormat = fqn => { 2 | return fqn.replace('.VRSC@', '@'); 3 | }; 4 | -------------------------------------------------------------------------------- /src/utils/haptics/haptics.js: -------------------------------------------------------------------------------- 1 | import ReactNativeHapticFeedback from "react-native-haptic-feedback"; 2 | 3 | export const triggerHaptic = (type) => { 4 | ReactNativeHapticFeedback.trigger(type, { 5 | enableVibrateFallback: true, 6 | ignoreAndroidSystemSettings: false, 7 | }); 8 | } 9 | 10 | export const triggerLightHaptic = () => { 11 | triggerHaptic("impactLight") 12 | } 13 | 14 | export const triggerHapticSuccess = () => { 15 | triggerHaptic("notificationSuccess") 16 | } -------------------------------------------------------------------------------- /src/utils/identityTransform/identityNormalizers.js: -------------------------------------------------------------------------------- 1 | import { normalize, schema } from 'normalizr'; 2 | 3 | const identities = new schema.Entity('identities'); 4 | const claimCategory = new schema.Entity('claimCategories'); 5 | const claims = new schema.Entity('claims', {}, { idAttribute: 'uid' }); 6 | const attestations = new schema.Entity('attestations', {}, { idAttribute: 'uid' }); 7 | 8 | export const normalizeIdentities = (identityData) => normalize(identityData, [identities]); 9 | export const normalizeCategories = (categoryData) => normalize(categoryData, [claimCategory]); 10 | export const normalizeClaims = (claimsData) => normalize(claimsData, [claims]); 11 | export const normalizeAttestations = (attestationData) => normalize(attestationData, [attestations]); 12 | -------------------------------------------------------------------------------- /src/utils/keyGenerator/keyGenerator.js: -------------------------------------------------------------------------------- 1 | import { randomBytes } from '../crypto/randomBytes'; 2 | import { generateMnemonic } from 'bip39' 3 | 4 | export const getKey = async (strength) => { 5 | return await generateMnemonic(strength, randomBytes) 6 | } -------------------------------------------------------------------------------- /src/utils/linking.js: -------------------------------------------------------------------------------- 1 | import { Linking } from "react-native" 2 | 3 | export const openUrl = (url) => { 4 | try { 5 | if (url != null) { 6 | Linking.openURL(url) 7 | } 8 | } catch(e) { 9 | console.warn(e) 10 | } 11 | } -------------------------------------------------------------------------------- /src/utils/memoUtils.js: -------------------------------------------------------------------------------- 1 | const base64 = require('base-64'); 2 | const utf8 = require('utf8'); 3 | 4 | export const decodeMemo = (memoEncoded) => { 5 | try { 6 | return utf8.decode(base64.decode(memoEncoded)); 7 | } catch (e) { 8 | return null; 9 | } 10 | }; 11 | 12 | export const encodeMemo = (memoDecoded) => { 13 | try { 14 | return base64.encode(utf8.encode(memoDecoded)); 15 | } catch(e) { 16 | throw e 17 | } 18 | } -------------------------------------------------------------------------------- /src/utils/paymentMethod.js: -------------------------------------------------------------------------------- 1 | const hasPaymentMethod = (paymentMethod) => paymentMethod.id; 2 | 3 | export default hasPaymentMethod; -------------------------------------------------------------------------------- /src/utils/price.js: -------------------------------------------------------------------------------- 1 | import { isNumber, truncateDecimal } from './math'; 2 | 3 | export const calculatePrice = (amount, fromCurr, toCurr, rates) => { 4 | let conversion = `${fromCurr}${toCurr}` 5 | const exchangeRate = rates[conversion] 6 | 7 | if (amount.toString() && isNumber(amount) && exchangeRate) { 8 | return Number(truncateDecimal(amount/exchangeRate, 8)) 9 | } 10 | 11 | return '-' 12 | } -------------------------------------------------------------------------------- /src/utils/services/WyreProvider.js: -------------------------------------------------------------------------------- 1 | import { WyreApi } from './WyreApi' 2 | 3 | export default new WyreApi() -------------------------------------------------------------------------------- /src/utils/uid.js: -------------------------------------------------------------------------------- 1 | /** generate unique id for selector */ 2 | var counter = Date.now() % 1e9; 3 | 4 | module.exports = function getUid(){ 5 | return (Math.random() * 1e9 >>> 0) + (counter++); 6 | }; -------------------------------------------------------------------------------- /src/utils/verusPay/index.js: -------------------------------------------------------------------------------- 1 | import v0 from './versions/v0' 2 | 3 | export default { 4 | v0 5 | } -------------------------------------------------------------------------------- /src/utils/verusPay/versions/v0.js: -------------------------------------------------------------------------------- 1 | import { readRequest, writeRequest } from 'verus-pay-utils' 2 | 3 | const readVerusPay = (data) => { 4 | return readRequest(data, true) 5 | } 6 | 7 | const writeVerusPayQR = (coinObj, amount, address, note) => { 8 | const { id, system_id, display_name, display_ticker } = coinObj; 9 | 10 | return writeRequest( 11 | id, 12 | system_id, 13 | display_name, 14 | display_ticker, 15 | address, 16 | amount, 17 | null, 18 | null, 19 | note, 20 | true 21 | ); 22 | } 23 | 24 | export default { 25 | readVerusPay, 26 | writeVerusPayQR 27 | } --------------------------------------------------------------------------------