From 3fb94be5f21902d8a23ed6980bc2adbaa22c1536 Mon Sep 17 00:00:00 2001 From: Serg Date: Wed, 12 Jan 2022 09:29:37 -0500 Subject: [PATCH] Fixes gas fees to be dependant on a chain main currency instead of ETH on Android --- .../activities/AccountDetailActivity.java | 3 +- .../activities/AssetDetailActivity.java | 3 +- .../ApproveTxFragmentPageAdapter.java | 12 +- .../adapters/WalletCoinAdapter.java | 1 + .../ApproveTxBottomSheetDialogFragment.java | 94 ++++++++------ .../crypto_wallet/fragments/TxFragment.java | 29 +++-- .../model/WalletListItemModel.java | 18 +++ .../browser/crypto_wallet/util/Utils.java | 116 +++++++++++------- .../res/layout/brave_wallet_add_network.xml | 2 +- .../xml/brave_wallet_networks_preference.xml | 2 +- .../android/strings/android_brave_strings.grd | 6 +- 11 files changed, 184 insertions(+), 102 deletions(-) diff --git a/android/java/org/chromium/chrome/browser/crypto_wallet/activities/AccountDetailActivity.java b/android/java/org/chromium/chrome/browser/crypto_wallet/activities/AccountDetailActivity.java index 63ac2dec6ba..c14b62166ff 100644 --- a/android/java/org/chromium/chrome/browser/crypto_wallet/activities/AccountDetailActivity.java +++ b/android/java/org/chromium/chrome/browser/crypto_wallet/activities/AccountDetailActivity.java @@ -192,7 +192,8 @@ public class AccountDetailActivity extends AsyncInitializationActivity accountInfos[0] = accountInfo; Utils.setUpTransactionList(accountInfos, mAssetRatioService, mEthTxService, mBlockchainRegistry, mBraveWalletService, null, null, 0, - findViewById(R.id.rv_transactions), this, this, chainId); + findViewById(R.id.rv_transactions), this, this, chainId, + mJsonRpcService); break; } } diff --git a/android/java/org/chromium/chrome/browser/crypto_wallet/activities/AssetDetailActivity.java b/android/java/org/chromium/chrome/browser/crypto_wallet/activities/AssetDetailActivity.java index 88327937ab8..fc536d2a77f 100644 --- a/android/java/org/chromium/chrome/browser/crypto_wallet/activities/AssetDetailActivity.java +++ b/android/java/org/chromium/chrome/browser/crypto_wallet/activities/AssetDetailActivity.java @@ -235,7 +235,8 @@ public class AssetDetailActivity extends AsyncInitializationActivity AccountInfo[] accountInfos = keyringInfo.accountInfos; Utils.setUpTransactionList(accountInfos, mAssetRatioService, mEthTxService, null, null, mAssetSymbol, mContractAddress, mAssetDecimals, - findViewById(R.id.rv_transactions), this, this, null); + findViewById(R.id.rv_transactions), this, this, mChainId, + mJsonRpcService); SingleTokenBalanceHelper singleTokenBalanceHelper = new SingleTokenBalanceHelper( diff --git a/android/java/org/chromium/chrome/browser/crypto_wallet/adapters/ApproveTxFragmentPageAdapter.java b/android/java/org/chromium/chrome/browser/crypto_wallet/adapters/ApproveTxFragmentPageAdapter.java index bbbb9197980..a833a5d0a5a 100644 --- a/android/java/org/chromium/chrome/browser/crypto_wallet/adapters/ApproveTxFragmentPageAdapter.java +++ b/android/java/org/chromium/chrome/browser/crypto_wallet/adapters/ApproveTxFragmentPageAdapter.java @@ -26,13 +26,20 @@ public class ApproveTxFragmentPageAdapter extends FragmentStatePagerAdapter { private List mTitles; private TransactionInfo mTxInfo; private String mAsset; + private int mDecimals; + private String mChainSymbol; + private int mChainDecimals; private double mTotalPrice; public ApproveTxFragmentPageAdapter(FragmentManager fm, TransactionInfo txInfo, String asset, - double totalPrice, Activity activity) { + int decimals, String chainSymbol, int chainDecimals, double totalPrice, + Activity activity) { super(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT); mTxInfo = txInfo; mAsset = asset; + mDecimals = decimals; + mChainSymbol = chainSymbol; + mChainDecimals = chainDecimals; mTotalPrice = totalPrice; mTitles = new ArrayList<>(Arrays.asList(activity.getText(R.string.transaction).toString(), activity.getText(R.string.transaction_details).toString())); @@ -42,7 +49,8 @@ public class ApproveTxFragmentPageAdapter extends FragmentStatePagerAdapter { @Override public Fragment getItem(int position) { if (position == 0) { - return TxFragment.newInstance(mTxInfo, mAsset, mTotalPrice); + return TxFragment.newInstance( + mTxInfo, mAsset, mDecimals, mChainSymbol, mChainDecimals, mTotalPrice); } else { return TxDetailsFragment.newInstance(mTxInfo); } diff --git a/android/java/org/chromium/chrome/browser/crypto_wallet/adapters/WalletCoinAdapter.java b/android/java/org/chromium/chrome/browser/crypto_wallet/adapters/WalletCoinAdapter.java index 414e427bdd4..cc2f3aa5a72 100644 --- a/android/java/org/chromium/chrome/browser/crypto_wallet/adapters/WalletCoinAdapter.java +++ b/android/java/org/chromium/chrome/browser/crypto_wallet/adapters/WalletCoinAdapter.java @@ -102,6 +102,7 @@ public class WalletCoinAdapter extends RecyclerView.Adapter { - for (BlockchainToken token : tokens) { - // Replace USDC and DAI contract addresses for Ropsten network - token.contractAddress = Utils.getContractAddress( - chainId, token.symbol, token.contractAddress); - String symbol = token.symbol; - int decimals = token.decimals; - if (mTxInfo.txType == TransactionType.ERC20_APPROVE) { - txType.setText(String.format( - getResources().getString(R.string.activate_erc20), - symbol)); - symbol = "ETH"; - decimals = 18; - } - if (token.contractAddress.toLowerCase(Locale.getDefault()) - .equals(mTxInfo.txData.baseData.to.toLowerCase( - Locale.getDefault()))) { - fillAssetDependentControls(symbol, view, decimals); - break; - } - } - }); - } else { - if (mTxInfo.txData.baseData.to.toLowerCase(Locale.getDefault()) - .equals(Utils.SWAP_EXCHANGE_PROXY.toLowerCase( - Locale.getDefault()))) { - txType.setText(getResources().getString(R.string.swap)); + String chainSymbol = "ETH"; + int chainDecimals = 18; + for (EthereumChain chain : chains) { + if (chainId.equals(chain.chainId)) { + if (Utils.isCustomNetwork(chainId)) { + chainSymbol = chain.symbol; + chainDecimals = chain.decimals; + break; + } + } } - fillAssetDependentControls("ETH", view, 18); - } + mChainSymbol = chainSymbol; + mChainDecimals = chainDecimals; + TextView txType = view.findViewById(R.id.tx_type); + txType.setText(getResources().getString(R.string.send)); + if (mTxInfo.txType == TransactionType.ERC20_TRANSFER + || mTxInfo.txType == TransactionType.ERC20_APPROVE) { + BlockchainRegistry blockchainRegistry = getBlockchainRegistry(); + assert blockchainRegistry != null; + TokenUtils.getAllTokensFiltered( + getBraveWalletService(), blockchainRegistry, chainId, tokens -> { + for (BlockchainToken token : tokens) { + // Replace USDC and DAI contract addresses for Ropsten network + token.contractAddress = Utils.getContractAddress( + chainId, token.symbol, token.contractAddress); + String symbol = token.symbol; + int decimals = token.decimals; + if (mTxInfo.txType == TransactionType.ERC20_APPROVE) { + txType.setText(String.format( + getResources().getString(R.string.activate_erc20), + symbol)); + symbol = mChainSymbol; + decimals = mChainDecimals; + } + if (token.contractAddress.toLowerCase(Locale.getDefault()) + .equals(mTxInfo.txData.baseData.to.toLowerCase( + Locale.getDefault()))) { + fillAssetDependentControls(symbol, view, decimals); + break; + } + } + }); + } else { + if (mTxInfo.txData.baseData.to.toLowerCase(Locale.getDefault()) + .equals(Utils.SWAP_EXCHANGE_PROXY.toLowerCase( + Locale.getDefault()))) { + txType.setText(getResources().getString(R.string.swap)); + } + fillAssetDependentControls(mChainSymbol, view, mChainDecimals); + } + }); }); ImageView icon = (ImageView) view.findViewById(R.id.account_picture); Utils.setBlockiesBitmapResource(mExecutor, mHandler, icon, mTxInfo.fromAddress, true); @@ -281,7 +298,8 @@ public class ApproveTxBottomSheetDialogFragment extends BottomSheetDialogFragmen String.format(Locale.getDefault(), "%.2f", mTotalPrice))); ViewPager viewPager = view.findViewById(R.id.navigation_view_pager); ApproveTxFragmentPageAdapter adapter = new ApproveTxFragmentPageAdapter( - getChildFragmentManager(), mTxInfo, asset, mTotalPrice, getActivity()); + getChildFragmentManager(), mTxInfo, asset, decimals, mChainSymbol, + mChainDecimals, mTotalPrice, getActivity()); viewPager.setAdapter(adapter); viewPager.setOffscreenPageLimit(adapter.getCount() - 1); TabLayout tabLayout = view.findViewById(R.id.tabs); diff --git a/android/java/org/chromium/chrome/browser/crypto_wallet/fragments/TxFragment.java b/android/java/org/chromium/chrome/browser/crypto_wallet/fragments/TxFragment.java index 8986f8220a0..afd5e60cedb 100644 --- a/android/java/org/chromium/chrome/browser/crypto_wallet/fragments/TxFragment.java +++ b/android/java/org/chromium/chrome/browser/crypto_wallet/fragments/TxFragment.java @@ -40,14 +40,18 @@ import java.util.Locale; public class TxFragment extends Fragment { private TransactionInfo mTxInfo; private String mAsset; + private int mDecimals; + private String mChainSymbol; + private int mChainDecimals; private double mTotalPrice; private boolean mIsEIP1559; private int mCheckedPriorityId; private int mPreviousCheckedPriorityId; private double mEthRate; - public static TxFragment newInstance(TransactionInfo txInfo, String asset, double totalPrice) { - return new TxFragment(txInfo, asset, totalPrice); + public static TxFragment newInstance(TransactionInfo txInfo, String asset, int decimals, + String chainSymbol, int chainDecimals, double totalPrice) { + return new TxFragment(txInfo, asset, decimals, chainSymbol, chainDecimals, totalPrice); } private AssetRatioService getAssetRatioService() { @@ -72,9 +76,13 @@ public class TxFragment extends Fragment { return null; } - private TxFragment(TransactionInfo txInfo, String asset, double totalPrice) { + private TxFragment(TransactionInfo txInfo, String asset, int decimals, String chainSymbol, + int chainDecimals, double totalPrice) { mTxInfo = txInfo; mAsset = asset; + mDecimals = decimals; + mChainSymbol = chainSymbol; + mChainDecimals = chainDecimals; mTotalPrice = totalPrice; mEthRate = 0; mCheckedPriorityId = -1; @@ -340,7 +348,8 @@ public class TxFragment extends Fragment { }; private void fillMaxFee(TextView textView, String gasLimit, String maxFeePerGas) { - double totalGas = Utils.fromHexWei(Utils.multiplyHexBN(gasLimit, maxFeePerGas), 18); + double totalGas = + Utils.fromHexWei(Utils.multiplyHexBN(gasLimit, maxFeePerGas), mChainDecimals); double price = totalGas * mEthRate; textView.setText(String.format(getResources().getString(R.string.wallet_maximum_fee), String.format(Locale.getDefault(), "%.2f", price), @@ -352,13 +361,13 @@ public class TxFragment extends Fragment { final double totalGas = mIsEIP1559 ? Utils.fromHexWei(Utils.multiplyHexBN(mTxInfo.txData.baseData.gasLimit, mTxInfo.txData.maxFeePerGas), - 18) + mChainDecimals) : Utils.fromHexWei(Utils.multiplyHexBN(mTxInfo.txData.baseData.gasLimit, mTxInfo.txData.baseData.gasPrice), - 18); + mChainDecimals); gasFeeAmount.setText( String.format(getResources().getString(R.string.crypto_wallet_gas_fee_amount), - String.format(Locale.getDefault(), "%.8f", totalGas))); + String.format(Locale.getDefault(), "%.8f", totalGas), mChainSymbol)); String valueAsset = mTxInfo.txData.baseData.value; if (mTxInfo.txType == TransactionType.ERC20_TRANSFER && mTxInfo.txArgs.length > 1) { valueAsset = mTxInfo.txArgs[1]; @@ -366,11 +375,11 @@ public class TxFragment extends Fragment { TextView totalAmount = view.findViewById(R.id.total_amount); totalAmount.setText(String.format( getResources().getString(R.string.crypto_wallet_total_amount), - String.format(Locale.getDefault(), "%.8f", Utils.fromHexWei(valueAsset, 18)), - mAsset, String.format(Locale.getDefault(), "%.8f", totalGas))); + String.format(Locale.getDefault(), "%.8f", Utils.fromHexWei(valueAsset, mDecimals)), + mAsset, String.format(Locale.getDefault(), "%.8f", totalGas), mChainSymbol)); AssetRatioService assetRatioService = getAssetRatioService(); if (assetRatioService != null) { - String[] assets = {"eth"}; + String[] assets = {mChainSymbol.toLowerCase(Locale.getDefault())}; String[] toCurr = {"usd"}; assetRatioService.getPrice( assets, toCurr, AssetPriceTimeframe.LIVE, (success, values) -> { diff --git a/android/java/org/chromium/chrome/browser/crypto_wallet/model/WalletListItemModel.java b/android/java/org/chromium/chrome/browser/crypto_wallet/model/WalletListItemModel.java index dd146234c0b..772e534cec9 100644 --- a/android/java/org/chromium/chrome/browser/crypto_wallet/model/WalletListItemModel.java +++ b/android/java/org/chromium/chrome/browser/crypto_wallet/model/WalletListItemModel.java @@ -26,6 +26,8 @@ public class WalletListItemModel { private double mTotalGasFiat; private String[] mAddressesForBitmap; private TransactionInfo mTxInfo; + private String mChainSymbol; + private int mChainDecimals; public WalletListItemModel(int icon, String title, String subTitle, String text1, String text2, boolean isImportedAccount) { @@ -88,6 +90,22 @@ public class WalletListItemModel { return mTotalGasFiat; } + public void setChainSymbol(String chainSymbol) { + mChainSymbol = chainSymbol; + } + + public String getChainSymbol() { + return mChainSymbol; + } + + public void setChainDecimals(int chainDecimals) { + mChainDecimals = chainDecimals; + } + + public int getChainDecimals() { + return mChainDecimals; + } + public void setTxStatus(String txStatus) { mTxStatus = txStatus; } diff --git a/android/java/org/chromium/chrome/browser/crypto_wallet/util/Utils.java b/android/java/org/chromium/chrome/browser/crypto_wallet/util/Utils.java index b7a032bad15..d7f18117458 100644 --- a/android/java/org/chromium/chrome/browser/crypto_wallet/util/Utils.java +++ b/android/java/org/chromium/chrome/browser/crypto_wallet/util/Utils.java @@ -981,44 +981,63 @@ public class Utils { BlockchainRegistry blockchainRegistry, BraveWalletService braveWalletService, String assetSymbol, String contractAddress, int assetDecimals, RecyclerView rvTransactions, OnWalletListItemClick callback, Context context, - String chainId) { - assert assetRatioService != null; - String[] assets = {"eth"}; - String[] toCurr = {"usd"}; - assetRatioService.getPrice(assets, toCurr, AssetPriceTimeframe.LIVE, (success, values) -> { - String tempPrice = "0"; - if (values.length != 0) { - tempPrice = values[0].price; - } - if ((assetSymbol == null && assetDecimals == 0) - || assetSymbol.toLowerCase(Locale.getDefault()).equals("eth")) { - try { - fetchTransactions(accountInfos, Double.valueOf(tempPrice), - Double.valueOf(tempPrice), ethTxService, blockchainRegistry, - contractAddress, rvTransactions, callback, context, assetSymbol, - assetDecimals, chainId, assetRatioService, braveWalletService); - } catch (NumberFormatException exc) { + String chainId, JsonRpcService jsonRpcService) { + assert jsonRpcService != null; + jsonRpcService.getAllNetworks(networks -> { + String chainSymbol = "ETH"; + int chainDecimals = 18; + for (EthereumChain network : networks) { + if (chainId.equals(network.chainId)) { + chainSymbol = network.symbol; + chainDecimals = network.decimals; } - - return; } - final String ethPrice = tempPrice; - assets[0] = assetSymbol.toLowerCase(Locale.getDefault()); - toCurr[0] = "usd"; + + final String finalChainSymbol = chainSymbol; + final int finalChainDecimals = chainDecimals; + assert assetRatioService != null; + String[] assets = {chainSymbol.toLowerCase(Locale.getDefault())}; + String[] toCurr = {"usd"}; assetRatioService.getPrice( - assets, toCurr, AssetPriceTimeframe.LIVE, (successAsset, valuesAsset) -> { - String tempPriceAsset = "0"; - if (valuesAsset.length != 0) { - tempPriceAsset = valuesAsset[0].price; + assets, toCurr, AssetPriceTimeframe.LIVE, (success, values) -> { + String tempPrice = "0"; + if (values.length != 0) { + tempPrice = values[0].price; } - try { - fetchTransactions(accountInfos, Double.valueOf(ethPrice), - Double.valueOf(tempPriceAsset), ethTxService, - blockchainRegistry, contractAddress, rvTransactions, callback, - context, assetSymbol, assetDecimals, chainId, assetRatioService, - braveWalletService); - } catch (NumberFormatException exc) { + if ((assetSymbol == null && assetDecimals == 0) + || assetSymbol.toLowerCase(Locale.getDefault()) + .equals(finalChainSymbol.toLowerCase( + Locale.getDefault()))) { + try { + fetchTransactions(accountInfos, Double.valueOf(tempPrice), + Double.valueOf(tempPrice), ethTxService, blockchainRegistry, + contractAddress, rvTransactions, callback, context, + assetSymbol, assetDecimals, chainId, assetRatioService, + braveWalletService, finalChainSymbol, finalChainDecimals); + } catch (NumberFormatException exc) { + } + + return; } + final String ethPrice = tempPrice; + assets[0] = assetSymbol.toLowerCase(Locale.getDefault()); + toCurr[0] = "usd"; + assetRatioService.getPrice(assets, toCurr, AssetPriceTimeframe.LIVE, + (successAsset, valuesAsset) -> { + String tempPriceAsset = "0"; + if (valuesAsset.length != 0) { + tempPriceAsset = valuesAsset[0].price; + } + try { + fetchTransactions(accountInfos, Double.valueOf(ethPrice), + Double.valueOf(tempPriceAsset), ethTxService, + blockchainRegistry, contractAddress, rvTransactions, + callback, context, assetSymbol, assetDecimals, + chainId, assetRatioService, braveWalletService, + finalChainSymbol, finalChainDecimals); + } catch (NumberFormatException exc) { + } + }); }); }); } @@ -1027,7 +1046,8 @@ public class Utils { double assetPrice, EthTxService ethTxService, BlockchainRegistry blockchainRegistry, String contractAddress, RecyclerView rvTransactions, OnWalletListItemClick callback, Context context, String assetSymbol, int assetDecimals, String chainId, - AssetRatioService assetRatioService, BraveWalletService braveWalletService) { + AssetRatioService assetRatioService, BraveWalletService braveWalletService, + String chainSymbol, int chainDecimals) { assert ethTxService != null; PendingTxHelper pendingTxHelper = new PendingTxHelper(ethTxService, accountInfos, true, contractAddress); @@ -1035,11 +1055,12 @@ public class Utils { HashMap pendingTxInfos = pendingTxHelper.getTransactions(); if (assetSymbol != null && assetDecimals != 0) { workWithTransactions(accountInfos, ethPrice, assetPrice, rvTransactions, callback, - context, assetSymbol, assetDecimals, pendingTxInfos, null, null, null); + context, assetSymbol, assetDecimals, pendingTxInfos, null, null, null, + chainSymbol, chainDecimals); } else { fetchAssetsPricesDecimals(accountInfos, ethPrice, assetPrice, blockchainRegistry, rvTransactions, callback, context, pendingTxInfos, chainId, - assetRatioService, braveWalletService); + assetRatioService, braveWalletService, chainSymbol, chainDecimals); } }); } @@ -1048,7 +1069,8 @@ public class Utils { double assetPrice, BlockchainRegistry blockchainRegistry, RecyclerView rvTransactions, OnWalletListItemClick callback, Context context, HashMap pendingTxInfos, String chainId, - AssetRatioService assetRatioService, BraveWalletService braveWalletService) { + AssetRatioService assetRatioService, BraveWalletService braveWalletService, + String chainSymbol, int chainDecimals) { assert chainId != null; assert blockchainRegistry != null; TokenUtils.getAllTokensFiltered(braveWalletService, blockchainRegistry, chainId, tokens -> { @@ -1066,8 +1088,8 @@ public class Utils { String symbol = token.symbol; int decimals = token.decimals; if (txInfo.txType == TransactionType.ERC20_APPROVE) { - symbol = "ETH"; - decimals = 18; + symbol = chainSymbol; + decimals = chainDecimals; } if (token.contractAddress.toLowerCase(Locale.getDefault()) .equals(txInfo.txData.baseData.to.toLowerCase( @@ -1078,13 +1100,14 @@ public class Utils { } } } else { - assets.put(txInfo.id, "ETH"); - assetsDecimals.put("ETH", 18); + assets.put(txInfo.id, chainSymbol); + assetsDecimals.put(chainSymbol, chainDecimals); } } } fetchAssetsPrices(accountInfos, ethPrice, assetPrice, rvTransactions, callback, context, - pendingTxInfos, assets, assetsDecimals, assetRatioService); + pendingTxInfos, assets, assetsDecimals, assetRatioService, chainSymbol, + chainDecimals); }); } @@ -1092,13 +1115,13 @@ public class Utils { double assetPrice, RecyclerView rvTransactions, OnWalletListItemClick callback, Context context, HashMap pendingTxInfos, HashMap assets, HashMap assetsDecimals, - AssetRatioService assetRatioService) { + AssetRatioService assetRatioService, String chainSymbol, int chainDecimals) { AssetsPricesHelper assetsPricesHelper = new AssetsPricesHelper(assetRatioService, new HashSet(assets.values())); assetsPricesHelper.fetchPrices(() -> { workWithTransactions(accountInfos, ethPrice, assetPrice, rvTransactions, callback, context, "", 0, pendingTxInfos, assets, assetsDecimals, - assetsPricesHelper.getAssetsPrices()); + assetsPricesHelper.getAssetsPrices(), chainSymbol, chainDecimals); }); } @@ -1106,7 +1129,8 @@ public class Utils { double assetPrice, RecyclerView rvTransactions, OnWalletListItemClick callback, Context context, String assetSymbol, int assetDecimals, HashMap pendingTxInfos, HashMap assets, - HashMap assetsDecimals, HashMap assetsPrices) { + HashMap assetsDecimals, HashMap assetsPrices, + String chainSymbol, int chainDecimals) { WalletCoinAdapter walletCoinAdapter = new WalletCoinAdapter(WalletCoinAdapter.AdapterType.VISIBLE_ASSETS_LIST); List walletListItemModelList = new ArrayList<>(); @@ -1235,6 +1259,8 @@ public class Utils { txInfo.txData.baseData.gasPrice), 18); double totalGasFiat = totalGas * ethPrice; + itemModel.setChainSymbol(chainSymbol); + itemModel.setChainDecimals(chainDecimals); itemModel.setTotalGas(totalGas); itemModel.setTotalGasFiat(totalGasFiat); itemModel.setAddressesForBitmap(txInfo.fromAddress, to); diff --git a/android/java/res/layout/brave_wallet_add_network.xml b/android/java/res/layout/brave_wallet_add_network.xml index b690b4db875..38f1e55f63b 100644 --- a/android/java/res/layout/brave_wallet_add_network.xml +++ b/android/java/res/layout/brave_wallet_add_network.xml @@ -224,4 +224,4 @@ android:textColor="@android:color/white" style="?android:attr/borderlessButtonStyle"/> - \ No newline at end of file + diff --git a/android/java/res/xml/brave_wallet_networks_preference.xml b/android/java/res/xml/brave_wallet_networks_preference.xml index 5882a2878d8..f8fc74d3b4b 100644 --- a/android/java/res/xml/brave_wallet_networks_preference.xml +++ b/android/java/res/xml/brave_wallet_networks_preference.xml @@ -1,5 +1,5 @@ - diff --git a/browser/ui/android/strings/android_brave_strings.grd b/browser/ui/android/strings/android_brave_strings.grd index aa6963726e0..b876740c873 100644 --- a/browser/ui/android/strings/android_brave_strings.grd +++ b/browser/ui/android/strings/android_brave_strings.grd @@ -2470,10 +2470,10 @@ If you don't accept this request, VPN will not reconnect and your internet conne $%1$s3.08 - %1$s0.0000015 ETH + %1$s0.0000015 %2$sETH - %1$s0.0015 %2$sETH + %3$s0.00000015 ETH + %1$s0.0015 %2$sETH + %3$s0.00000015 %4$sETH Gas Price (Gwei) @@ -2596,7 +2596,7 @@ If you don't accept this request, VPN will not reconnect and your internet conne Error - Fee: %1$s0.000123 ETH ($%2$s101.22) + Fee: %1$s0.000123 %2$sETH ($%3$s101.22) Are you using the fastest web browser?