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 34c0be677f1..88327937ab8 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 @@ -155,6 +155,13 @@ public class AssetDetailActivity extends AsyncInitializationActivity BuySendSwapActivity.ActivityType.SWAP, mAssetSymbol); } }); + if (!Utils.isCustomNetwork(mChainId)) { + btnBuy.setVisibility(View.VISIBLE); + btnSwap.setVisibility(View.VISIBLE); + } else { + btnBuy.setVisibility(View.GONE); + btnSwap.setVisibility(View.GONE); + } RadioGroup radioGroup = findViewById(R.id.asset_duration_radio_group); checkedTimeframeType = radioGroup.getCheckedRadioButtonId(); diff --git a/android/java/org/chromium/chrome/browser/crypto_wallet/activities/BraveWalletActivity.java b/android/java/org/chromium/chrome/browser/crypto_wallet/activities/BraveWalletActivity.java index c5711a2fa1b..457b013b1e7 100644 --- a/android/java/org/chromium/chrome/browser/crypto_wallet/activities/BraveWalletActivity.java +++ b/android/java/org/chromium/chrome/browser/crypto_wallet/activities/BraveWalletActivity.java @@ -139,10 +139,14 @@ public class BraveWalletActivity extends AsyncInitializationActivity } mSwapButton.setOnClickListener(v -> { - SwapBottomSheetDialogFragment swapBottomSheetDialogFragment = - SwapBottomSheetDialogFragment.newInstance(); - swapBottomSheetDialogFragment.show( - getSupportFragmentManager(), SwapBottomSheetDialogFragment.TAG_FRAGMENT); + assert mJsonRpcService != null; + mJsonRpcService.getChainId(chainId -> { + SwapBottomSheetDialogFragment swapBottomSheetDialogFragment = + SwapBottomSheetDialogFragment.newInstance(); + swapBottomSheetDialogFragment.setChainId(chainId); + swapBottomSheetDialogFragment.show( + getSupportFragmentManager(), SwapBottomSheetDialogFragment.TAG_FRAGMENT); + }); }); mCryptoLayout = findViewById(R.id.crypto_layout); diff --git a/android/java/org/chromium/chrome/browser/crypto_wallet/activities/BuySendSwapActivity.java b/android/java/org/chromium/chrome/browser/crypto_wallet/activities/BuySendSwapActivity.java index 50738648a31..1bf5cc16d41 100644 --- a/android/java/org/chromium/chrome/browser/crypto_wallet/activities/BuySendSwapActivity.java +++ b/android/java/org/chromium/chrome/browser/crypto_wallet/activities/BuySendSwapActivity.java @@ -238,8 +238,6 @@ public class BuySendSwapActivity extends AsyncInitializationActivity fromValueText.setHint("0"); TextView fromBalanceText = findViewById(R.id.from_balance_text); - TextView fromAssetText = findViewById(R.id.from_asset_text); - TextView toBalanceText = findViewById(R.id.to_balance_text); TextView toAssetText = findViewById(R.id.to_asset_text); @@ -306,28 +304,31 @@ public class BuySendSwapActivity extends AsyncInitializationActivity public void onItemSelected(AdapterView parent, View view, int position, long id) { if (parent.getId() == R.id.network_spinner) { String item = parent.getItemAtPosition(position).toString(); - final String chainId = Utils.getNetworkConst(this, item); + mJsonRpcService.getAllNetworks(chains -> { + EthereumChain[] customNetworks = Utils.getCustomNetworks(chains); + final String chainId = Utils.getNetworkConst(this, item, customNetworks); - if (mActivityType == ActivityType.BUY) { - adjustTestFaucetControls(getPerNetworkUiInfo(chainId)); - } + if (mActivityType == ActivityType.BUY) { + adjustTestFaucetControls(getPerNetworkUiInfo(chainId)); + } - if (mJsonRpcService != null) { - mJsonRpcService.setNetwork(chainId, (success) -> { - if (!success) { - Log.e(TAG, "Could not set network"); - } - mCurrentChainId = chainId; - }); - } - updateBalance(mCustomAccountAdapter.getTitleAtPosition( - mAccountSpinner.getSelectedItemPosition()), - true); - if (mActivityType == ActivityType.SWAP) { + if (mJsonRpcService != null) { + mJsonRpcService.setNetwork(chainId, (success) -> { + if (!success) { + Log.e(TAG, "Could not set network"); + } + mCurrentChainId = chainId; + }); + } updateBalance(mCustomAccountAdapter.getTitleAtPosition( mAccountSpinner.getSelectedItemPosition()), - false); - } + true); + if (mActivityType == ActivityType.SWAP) { + updateBalance(mCustomAccountAdapter.getTitleAtPosition( + mAccountSpinner.getSelectedItemPosition()), + false); + } + }); } else if (parent.getId() == R.id.accounts_spinner) { updateBalance(mCustomAccountAdapter.getTitleAtPosition(position), true); if (mActivityType == ActivityType.SWAP) { @@ -673,8 +674,8 @@ public class BuySendSwapActivity extends AsyncInitializationActivity } } - private int getIndexOf(Spinner spinner, String chainId) { - String strNetwork = Utils.getNetworkText(this, chainId).toString(); + private int getIndexOf(Spinner spinner, String chainId, EthereumChain[] customNetworks) { + String strNetwork = Utils.getNetworkText(this, chainId, customNetworks).toString(); for (int i = 0; i < spinner.getCount(); i++) { if (spinner.getItemAtPosition(i).toString().equalsIgnoreCase(strNetwork)) { return i; @@ -1633,11 +1634,28 @@ public class BuySendSwapActivity extends AsyncInitializationActivity mCurrentChainId = chainId; Spinner spinner = findViewById(R.id.network_spinner); spinner.setOnItemSelectedListener(this); - // Creating adapter for spinner - NetworkSpinnerAdapter dataAdapter = new NetworkSpinnerAdapter( - this, Utils.getNetworksList(this), Utils.getNetworksAbbrevList(this)); - spinner.setAdapter(dataAdapter); - spinner.setSelection(getIndexOf(spinner, chainId)); + mJsonRpcService.getAllNetworks(chains -> { + EthereumChain[] customNetworks = Utils.getCustomNetworks(chains); + // Creating adapter for spinner + NetworkSpinnerAdapter dataAdapter = new NetworkSpinnerAdapter(this, + Utils.getNetworksList(this, customNetworks), + Utils.getNetworksAbbrevList(this, customNetworks)); + spinner.setAdapter(dataAdapter); + spinner.setSelection(getIndexOf(spinner, chainId, customNetworks)); + + for (EthereumChain chain : chains) { + if (chainId.equals(chain.chainId)) { + TextView fromAssetText = findViewById(R.id.from_asset_text); + if (Utils.isCustomNetwork(chainId)) { + Utils.setBlockiesBitmapCustomAsset(mExecutor, mHandler, null, "", + chain.symbol, getResources().getDisplayMetrics().density, + fromAssetText, this, true, (float) 0.5); + } + fromAssetText.setText(chain.symbol); + break; + } + } + }); }); } if (mKeyringService != null) { diff --git a/android/java/org/chromium/chrome/browser/crypto_wallet/fragments/ApproveTxBottomSheetDialogFragment.java b/android/java/org/chromium/chrome/browser/crypto_wallet/fragments/ApproveTxBottomSheetDialogFragment.java index 4ce46466a7e..459d0c24bb5 100644 --- a/android/java/org/chromium/chrome/browser/crypto_wallet/fragments/ApproveTxBottomSheetDialogFragment.java +++ b/android/java/org/chromium/chrome/browser/crypto_wallet/fragments/ApproveTxBottomSheetDialogFragment.java @@ -35,6 +35,7 @@ import org.chromium.brave_wallet.mojom.BlockchainToken; import org.chromium.brave_wallet.mojom.BraveWalletConstants; import org.chromium.brave_wallet.mojom.BraveWalletService; import org.chromium.brave_wallet.mojom.EthTxService; +import org.chromium.brave_wallet.mojom.EthereumChain; import org.chromium.brave_wallet.mojom.JsonRpcService; import org.chromium.brave_wallet.mojom.TransactionInfo; import org.chromium.brave_wallet.mojom.TransactionType; @@ -176,8 +177,12 @@ public class ApproveTxBottomSheetDialogFragment extends BottomSheetDialogFragmen JsonRpcService jsonRpcService = getJsonRpcService(); assert jsonRpcService != null; jsonRpcService.getChainId(chainId -> { - TextView networkName = view.findViewById(R.id.network_name); - networkName.setText(Utils.getNetworkText(getActivity(), chainId).toString()); + jsonRpcService.getAllNetworks(chains -> { + EthereumChain[] customNetworks = Utils.getCustomNetworks(chains); + TextView networkName = view.findViewById(R.id.network_name); + networkName.setText( + Utils.getNetworkText(getActivity(), chainId, customNetworks).toString()); + }); TextView txType = view.findViewById(R.id.tx_type); txType.setText(getResources().getString(R.string.send)); if (mTxInfo.txType == TransactionType.ERC20_TRANSFER diff --git a/android/java/org/chromium/chrome/browser/crypto_wallet/fragments/EditVisibleAssetsBottomSheetDialogFragment.java b/android/java/org/chromium/chrome/browser/crypto_wallet/fragments/EditVisibleAssetsBottomSheetDialogFragment.java index bf44ec53098..c663a8e9eab 100644 --- a/android/java/org/chromium/chrome/browser/crypto_wallet/fragments/EditVisibleAssetsBottomSheetDialogFragment.java +++ b/android/java/org/chromium/chrome/browser/crypto_wallet/fragments/EditVisibleAssetsBottomSheetDialogFragment.java @@ -351,17 +351,19 @@ public class EditVisibleAssetsBottomSheetDialogFragment extends BottomSheetDialo walletCoinAdapter = new WalletCoinAdapter(mType); List walletListItemModelList = new ArrayList<>(); String tokensPath = BlockchainRegistryFactory.getInstance().getTokensIconsLocation(); - // Add ETH as a first item always - BlockchainToken eth = Utils.createEthereumBlockchainToken(); - WalletListItemModel itemModelEth = - new WalletListItemModel(R.drawable.ic_eth, eth.name, eth.symbol, "", ""); - itemModelEth.setIsUserSelected( - selectedTokensSymbols.contains(eth.symbol.toUpperCase(Locale.getDefault()))); - itemModelEth.setIconPath("file://" + tokensPath + "/" + eth.logo); - itemModelEth.setBlockchainToken(eth); - walletListItemModelList.add(itemModelEth); + if (!Utils.isCustomNetwork(mChainId)) { + // Add ETH as a first item always + BlockchainToken eth = Utils.createEthereumBlockchainToken(); + WalletListItemModel itemModelEth = + new WalletListItemModel(R.drawable.ic_eth, eth.name, eth.symbol, "", ""); + itemModelEth.setIsUserSelected( + selectedTokensSymbols.contains(eth.symbol.toUpperCase(Locale.getDefault()))); + itemModelEth.setIconPath("file://" + tokensPath + "/" + eth.logo); + itemModelEth.setBlockchainToken(eth); + walletListItemModelList.add(itemModelEth); + } for (int i = 0; i < tokens.length; i++) { - if (tokens[i].symbol.equals("ETH")) { + if (tokens[i].symbol.equals("ETH") && !Utils.isCustomNetwork(mChainId)) { // We have added ETH already continue; } diff --git a/android/java/org/chromium/chrome/browser/crypto_wallet/fragments/PortfolioFragment.java b/android/java/org/chromium/chrome/browser/crypto_wallet/fragments/PortfolioFragment.java index 78e6e5925ca..50438ef00b5 100644 --- a/android/java/org/chromium/chrome/browser/crypto_wallet/fragments/PortfolioFragment.java +++ b/android/java/org/chromium/chrome/browser/crypto_wallet/fragments/PortfolioFragment.java @@ -36,6 +36,7 @@ import org.chromium.brave_wallet.mojom.AssetRatioService; import org.chromium.brave_wallet.mojom.BlockchainToken; import org.chromium.brave_wallet.mojom.BraveWalletService; import org.chromium.brave_wallet.mojom.EthTxService; +import org.chromium.brave_wallet.mojom.EthereumChain; import org.chromium.brave_wallet.mojom.JsonRpcService; import org.chromium.brave_wallet.mojom.KeyringService; import org.chromium.brave_wallet.mojom.TransactionInfo; @@ -140,26 +141,34 @@ public class PortfolioFragment extends Fragment }); // Creating adapter for spinner - NetworkSpinnerAdapter dataAdapter = new NetworkSpinnerAdapter(getActivity(), - Utils.getNetworksList(getActivity()), Utils.getNetworksAbbrevList(getActivity())); - mSpinner.setAdapter(dataAdapter); - updateNetwork(); + JsonRpcService jsonRpcService = getJsonRpcService(); + assert jsonRpcService != null; + jsonRpcService.getAllNetworks(chains -> { + EthereumChain[] customNetworks = Utils.getCustomNetworks(chains); + NetworkSpinnerAdapter dataAdapter = new NetworkSpinnerAdapter(getActivity(), + Utils.getNetworksList(getActivity(), customNetworks), + Utils.getNetworksAbbrevList(getActivity(), customNetworks)); + mSpinner.setAdapter(dataAdapter); + updateNetwork(); + }); return view; } private void updateNetwork() { JsonRpcService jsonRpcService = getJsonRpcService(); - if (jsonRpcService != null) { - jsonRpcService.getChainId(chain_id -> { + assert jsonRpcService != null; + jsonRpcService.getChainId(chain_id -> { + jsonRpcService.getAllNetworks(chains -> { + EthereumChain[] customNetworks = Utils.getCustomNetworks(chains); String chainName = mSpinner.getSelectedItem().toString(); - String chainId = Utils.getNetworkConst(getActivity(), chainName); + String chainId = Utils.getNetworkConst(getActivity(), chainName, customNetworks); if (chainId.equals(chain_id)) { return; } - mSpinner.setSelection(getIndexOf(mSpinner, chain_id)); + mSpinner.setSelection(getIndexOf(mSpinner, chain_id, customNetworks)); }); - } + }); } @Override @@ -168,8 +177,9 @@ public class PortfolioFragment extends Fragment updateNetwork(); } - private int getIndexOf(Spinner spinner, String chain_id) { - String strNetwork = Utils.getNetworkText(getActivity(), chain_id).toString(); + private int getIndexOf(Spinner spinner, String chain_id, EthereumChain[] customNetworks) { + String strNetwork = + Utils.getNetworkText(getActivity(), chain_id, customNetworks).toString(); for (int i = 0; i < spinner.getCount(); i++) { if (spinner.getItemAtPosition(i).toString().equalsIgnoreCase(strNetwork)) { return i; @@ -184,12 +194,16 @@ public class PortfolioFragment extends Fragment String item = parent.getItemAtPosition(position).toString(); JsonRpcService jsonRpcService = getJsonRpcService(); if (jsonRpcService != null) { - jsonRpcService.setNetwork(Utils.getNetworkConst(getActivity(), item), (success) -> { - if (!success) { - Log.e(TAG, "Could not set network"); - return; - } - updatePortfolioGetPendingTx(true); + jsonRpcService.getAllNetworks(chains -> { + EthereumChain[] customNetworks = Utils.getCustomNetworks(chains); + jsonRpcService.setNetwork( + Utils.getNetworkConst(getActivity(), item, customNetworks), (success) -> { + if (!success) { + Log.e(TAG, "Could not set network"); + return; + } + updatePortfolioGetPendingTx(true); + }); }); } } @@ -204,26 +218,31 @@ public class PortfolioFragment extends Fragment TextView editVisibleAssets = view.findViewById(R.id.edit_visible_assets); editVisibleAssets.setOnClickListener(v -> { - String chainName = mSpinner.getSelectedItem().toString(); - String chainId = Utils.getNetworkConst(getActivity(), chainName); + JsonRpcService jsonRpcService = getJsonRpcService(); + assert jsonRpcService != null; + jsonRpcService.getAllNetworks(chains -> { + String chainName = mSpinner.getSelectedItem().toString(); + EthereumChain[] customNetworks = Utils.getCustomNetworks(chains); + String chainId = Utils.getNetworkConst(getActivity(), chainName, customNetworks); - EditVisibleAssetsBottomSheetDialogFragment bottomSheetDialogFragment = - EditVisibleAssetsBottomSheetDialogFragment.newInstance( - WalletCoinAdapter.AdapterType.EDIT_VISIBLE_ASSETS_LIST); + EditVisibleAssetsBottomSheetDialogFragment bottomSheetDialogFragment = + EditVisibleAssetsBottomSheetDialogFragment.newInstance( + WalletCoinAdapter.AdapterType.EDIT_VISIBLE_ASSETS_LIST); - bottomSheetDialogFragment.setChainId(chainId); - bottomSheetDialogFragment.setDismissListener( - new EditVisibleAssetsBottomSheetDialogFragment.DismissListener() { - @Override - public void onDismiss(Boolean isAssetsListChanged) { - if (isAssetsListChanged != null && isAssetsListChanged) { - updatePortfolioGetPendingTx(false); + bottomSheetDialogFragment.setChainId(chainId); + bottomSheetDialogFragment.setDismissListener( + new EditVisibleAssetsBottomSheetDialogFragment.DismissListener() { + @Override + public void onDismiss(Boolean isAssetsListChanged) { + if (isAssetsListChanged != null && isAssetsListChanged) { + updatePortfolioGetPendingTx(false); + } } - } - }); + }); - bottomSheetDialogFragment.show( - getFragmentManager(), EditVisibleAssetsBottomSheetDialogFragment.TAG_FRAGMENT); + bottomSheetDialogFragment.show(getFragmentManager(), + EditVisibleAssetsBottomSheetDialogFragment.TAG_FRAGMENT); + }); }); RadioGroup radioGroup = view.findViewById(R.id.portfolio_duration_radio_group); @@ -280,10 +299,15 @@ public class PortfolioFragment extends Fragment @Override public void onAssetClick(BlockchainToken asset) { - String chainName = mSpinner.getSelectedItem().toString(); - String chainId = Utils.getNetworkConst(getActivity(), chainName); - Utils.openAssetDetailsActivity(getActivity(), chainId, asset.symbol, asset.name, - asset.contractAddress, asset.logo, asset.decimals); + JsonRpcService jsonRpcService = getJsonRpcService(); + assert jsonRpcService != null; + jsonRpcService.getAllNetworks(chains -> { + EthereumChain[] customNetworks = Utils.getCustomNetworks(chains); + String chainName = mSpinner.getSelectedItem().toString(); + String chainId = Utils.getNetworkConst(getActivity(), chainName, customNetworks); + Utils.openAssetDetailsActivity(getActivity(), chainId, asset.symbol, asset.name, + asset.contractAddress, asset.logo, asset.decimals); + }); } private AssetRatioService getAssetRatioService() { @@ -372,37 +396,41 @@ public class PortfolioFragment extends Fragment KeyringService keyringService = getKeyringService(); assert keyringService != null; keyringService.getDefaultKeyringInfo(keyringInfo -> { - AccountInfo[] accountInfos = new AccountInfo[] {}; - if (keyringInfo != null) { - accountInfos = keyringInfo.accountInfos; - } + JsonRpcService jsonRpcService = getJsonRpcService(); + assert jsonRpcService != null; + jsonRpcService.getAllNetworks(chains -> { + AccountInfo[] accountInfos = new AccountInfo[] {}; + if (keyringInfo != null) { + accountInfos = keyringInfo.accountInfos; + } - if (mPortfolioHelper == null) { - mPortfolioHelper = new PortfolioHelper(getBraveWalletService(), - getAssetRatioService(), getJsonRpcService(), accountInfos); - } + if (mPortfolioHelper == null) { + mPortfolioHelper = new PortfolioHelper(getBraveWalletService(), + getAssetRatioService(), getJsonRpcService(), accountInfos); + } + EthereumChain[] customNetworks = Utils.getCustomNetworks(chains); + String chainName = mSpinner.getSelectedItem().toString(); + String chainId = Utils.getNetworkConst(getActivity(), chainName, customNetworks); + mPortfolioHelper.setChainId(chainId); + mPortfolioHelper.calculateBalances(() -> { + final String fiatSumString = String.format( + Locale.getDefault(), "$%,.2f", mPortfolioHelper.getTotalFiatSum()); + PostTask.runOrPostTask(UiThreadTaskTraits.DEFAULT, () -> { + mFiatSumString = fiatSumString; + mBalance.setText(mFiatSumString); + mBalance.invalidate(); - String chainName = mSpinner.getSelectedItem().toString(); - String chainId = Utils.getNetworkConst(getActivity(), chainName); - mPortfolioHelper.setChainId(chainId); - mPortfolioHelper.calculateBalances(() -> { - final String fiatSumString = String.format( - Locale.getDefault(), "$%,.2f", mPortfolioHelper.getTotalFiatSum()); - PostTask.runOrPostTask(UiThreadTaskTraits.DEFAULT, () -> { - mFiatSumString = fiatSumString; - mBalance.setText(mFiatSumString); - mBalance.invalidate(); + setUpCoinList(mPortfolioHelper.getUserAssets(), + mPortfolioHelper.getPerTokenCryptoSum(), + mPortfolioHelper.getPerTokenFiatSum()); - setUpCoinList(mPortfolioHelper.getUserAssets(), - mPortfolioHelper.getPerTokenCryptoSum(), - mPortfolioHelper.getPerTokenFiatSum()); - - updatePortfolioGraph(); + updatePortfolioGraph(); + }); }); + if (getPendingTx) { + getPendingTx(accountInfos); + } }); - if (getPendingTx) { - getPendingTx(accountInfos); - } }); } diff --git a/android/java/org/chromium/chrome/browser/crypto_wallet/fragments/SwapBottomSheetDialogFragment.java b/android/java/org/chromium/chrome/browser/crypto_wallet/fragments/SwapBottomSheetDialogFragment.java index 03c74d7ed2f..1cd9a551d6c 100644 --- a/android/java/org/chromium/chrome/browser/crypto_wallet/fragments/SwapBottomSheetDialogFragment.java +++ b/android/java/org/chromium/chrome/browser/crypto_wallet/fragments/SwapBottomSheetDialogFragment.java @@ -30,11 +30,16 @@ public class SwapBottomSheetDialogFragment LinearLayout mBuyLayout; LinearLayout mSendLayout; LinearLayout mSwapLayout; + private String mChainId; public static SwapBottomSheetDialogFragment newInstance() { return new SwapBottomSheetDialogFragment(); } + public void setChainId(String chainId) { + mChainId = chainId; + } + @Override public void show(FragmentManager manager, String tag) { try { @@ -66,6 +71,14 @@ public class SwapBottomSheetDialogFragment mSendLayout.setOnClickListener(this); mSwapLayout = view.findViewById(R.id.swap_layout); mSwapLayout.setOnClickListener(this); + assert mChainId != null; + if (!Utils.isCustomNetwork(mChainId)) { + mBuyLayout.setVisibility(View.VISIBLE); + mSwapLayout.setVisibility(View.VISIBLE); + } else { + mBuyLayout.setVisibility(View.GONE); + mSwapLayout.setVisibility(View.GONE); + } dialog.setContentView(view); ViewParent parent = view.getParent(); 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 dd6c6a2c9f4..b7a032bad15 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 @@ -220,7 +220,45 @@ public class Utils { activity.startActivity(assetDetailIntent); } - public static String[] getNetworksList(Activity activity) { + public static EthereumChain[] getCustomNetworks(EthereumChain[] chains) { + List al = new ArrayList(); + for (EthereumChain chain : chains) { + switch (chain.chainId) { + case BraveWalletConstants.RINKEBY_CHAIN_ID: + case BraveWalletConstants.ROPSTEN_CHAIN_ID: + case BraveWalletConstants.GOERLI_CHAIN_ID: + case BraveWalletConstants.KOVAN_CHAIN_ID: + case BraveWalletConstants.LOCALHOST_CHAIN_ID: + case BraveWalletConstants.MAINNET_CHAIN_ID: + continue; + default: + al.add(chain); + } + } + + EthereumChain[] arr = new EthereumChain[al.size()]; + arr = al.toArray(arr); + + return arr; + } + + public static boolean isCustomNetwork(String chainId) { + switch (chainId) { + case BraveWalletConstants.RINKEBY_CHAIN_ID: + case BraveWalletConstants.ROPSTEN_CHAIN_ID: + case BraveWalletConstants.GOERLI_CHAIN_ID: + case BraveWalletConstants.KOVAN_CHAIN_ID: + case BraveWalletConstants.LOCALHOST_CHAIN_ID: + case BraveWalletConstants.MAINNET_CHAIN_ID: + return false; + default: + break; + } + + return true; + } + + public static String[] getNetworksList(Activity activity, EthereumChain[] customNetworks) { List categories = new ArrayList(); categories.add(activity.getText(R.string.mainnet).toString()); categories.add(activity.getText(R.string.rinkeby).toString()); @@ -231,11 +269,15 @@ public class Utils { if (0 != (activity.getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE)) { categories.add(activity.getText(R.string.localhost).toString()); } + for (EthereumChain chain : customNetworks) { + categories.add(chain.chainName); + } return categories.toArray(new String[0]); } - public static String[] getNetworksAbbrevList(Activity activity) { + public static String[] getNetworksAbbrevList( + Activity activity, EthereumChain[] customNetworks) { List categories = new ArrayList(); categories.add(activity.getText(R.string.mainnet_short).toString()); categories.add(activity.getText(R.string.rinkeby_short).toString()); @@ -246,11 +288,15 @@ public class Utils { if (0 != (activity.getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE)) { categories.add(activity.getText(R.string.localhost).toString()); } + for (EthereumChain chain : customNetworks) { + categories.add(chain.chainName); + } return categories.toArray(new String[0]); } - public static CharSequence getNetworkText(Activity activity, String chain_id) { + public static CharSequence getNetworkText( + Activity activity, String chain_id, EthereumChain[] customNetworks) { CharSequence strNetwork = activity.getText(R.string.mainnet); switch (chain_id) { case BraveWalletConstants.RINKEBY_CHAIN_ID: @@ -269,8 +315,15 @@ public class Utils { strNetwork = activity.getText(R.string.localhost); break; case BraveWalletConstants.MAINNET_CHAIN_ID: - default: strNetwork = activity.getText(R.string.mainnet); + break; + default: + for (EthereumChain chain : customNetworks) { + if (chain_id.equals(chain.chainId)) { + strNetwork = chain.chainName; + break; + } + } } return strNetwork; @@ -318,18 +371,25 @@ public class Utils { } } - public static String getNetworkConst(Activity activity, String network) { + public static String getNetworkConst( + Activity activity, String network, EthereumChain[] customNetworks) { String networkConst = BraveWalletConstants.MAINNET_CHAIN_ID; if (network.equals(activity.getText(R.string.rinkeby).toString())) { - networkConst = BraveWalletConstants.RINKEBY_CHAIN_ID; + return BraveWalletConstants.RINKEBY_CHAIN_ID; } else if (network.equals(activity.getText(R.string.ropsten).toString())) { - networkConst = BraveWalletConstants.ROPSTEN_CHAIN_ID; + return BraveWalletConstants.ROPSTEN_CHAIN_ID; } else if (network.equals(activity.getText(R.string.goerli).toString())) { - networkConst = BraveWalletConstants.GOERLI_CHAIN_ID; + return BraveWalletConstants.GOERLI_CHAIN_ID; } else if (network.equals(activity.getText(R.string.kovan).toString())) { - networkConst = BraveWalletConstants.KOVAN_CHAIN_ID; + return BraveWalletConstants.KOVAN_CHAIN_ID; } else if (network.equals(activity.getText(R.string.localhost).toString())) { - networkConst = BraveWalletConstants.LOCALHOST_CHAIN_ID; + return BraveWalletConstants.LOCALHOST_CHAIN_ID; + } + + for (EthereumChain chain : customNetworks) { + if (network.equals(chain.chainName)) { + return chain.chainId; + } } return networkConst; diff --git a/android/java/org/chromium/chrome/browser/settings/BraveWalletNetworksPreference.java b/android/java/org/chromium/chrome/browser/settings/BraveWalletNetworksPreference.java index 6df85f0b2f7..5db47cf53b2 100644 --- a/android/java/org/chromium/chrome/browser/settings/BraveWalletNetworksPreference.java +++ b/android/java/org/chromium/chrome/browser/settings/BraveWalletNetworksPreference.java @@ -19,6 +19,7 @@ import org.chromium.brave_wallet.mojom.EthereumChain; import org.chromium.brave_wallet.mojom.JsonRpcService; import org.chromium.chrome.R; import org.chromium.chrome.browser.crypto_wallet.JsonRpcServiceFactory; +import org.chromium.chrome.browser.crypto_wallet.util.Utils; import org.chromium.components.browser_ui.widget.TintedDrawable; import org.chromium.mojo.bindings.ConnectionErrorHandler; import org.chromium.mojo.system.MojoException; @@ -62,9 +63,7 @@ public class BraveWalletNetworksPreference extends Preference updateNetworksList(); } - @Override - protected void onPrepareForRemoval() { - super.onPrepareForRemoval(); + public void destroy() { mJsonRpcService.close(); } @@ -123,33 +122,11 @@ public class BraveWalletNetworksPreference extends Preference assert mJsonRpcService != null; mJsonRpcService.getChainId(chainId -> { mJsonRpcService.getAllNetworks(chains -> { - mAdapter.setDisplayedNetworks(chainId, getCustomNetworks(chains)); + mAdapter.setDisplayedNetworks(chainId, Utils.getCustomNetworks(chains)); if (mRecyclerView.getAdapter() != mAdapter) { mRecyclerView.setAdapter(mAdapter); } }); }); } - - private EthereumChain[] getCustomNetworks(EthereumChain[] chains) { - List al = new ArrayList(); - for (EthereumChain chain : chains) { - switch (chain.chainId) { - case BraveWalletConstants.RINKEBY_CHAIN_ID: - case BraveWalletConstants.ROPSTEN_CHAIN_ID: - case BraveWalletConstants.GOERLI_CHAIN_ID: - case BraveWalletConstants.KOVAN_CHAIN_ID: - case BraveWalletConstants.LOCALHOST_CHAIN_ID: - case BraveWalletConstants.MAINNET_CHAIN_ID: - continue; - default: - al.add(chain); - } - } - - EthereumChain[] arr = new EthereumChain[al.size()]; - arr = al.toArray(arr); - - return arr; - } } diff --git a/android/java/org/chromium/chrome/browser/settings/BraveWalletNetworksPreferenceFragment.java b/android/java/org/chromium/chrome/browser/settings/BraveWalletNetworksPreferenceFragment.java index a008a82f428..dccde63923e 100644 --- a/android/java/org/chromium/chrome/browser/settings/BraveWalletNetworksPreferenceFragment.java +++ b/android/java/org/chromium/chrome/browser/settings/BraveWalletNetworksPreferenceFragment.java @@ -35,6 +35,14 @@ public class BraveWalletNetworksPreferenceFragment extends BravePreferenceFragme mNetworksAddPref.registerActivityLauncher(this); } + @Override + public void onDestroy() { + super.onDestroy(); + BraveWalletNetworksPreference mNetworksAddPref = + (BraveWalletNetworksPreference) findPreference(PREF_BRAVE_WALLET_NETWORKS_ADD); + mNetworksAddPref.destroy(); + } + @Override public void setSettingsLauncher(SettingsLauncher settingsLauncher) { mSettingsLauncher = settingsLauncher;