[Android] select native asset on network change

This commit is contained in:
wchen342
2022-07-08 17:26:04 +03:00
parent a045b2cf6e
commit 544ba76eb1
2 changed files with 65 additions and 12 deletions
@@ -302,13 +302,16 @@ public class BuySendSwapActivity extends BraveWalletBaseActivity
// Shall be fine regardless of activity type
mFromValueText.setText("");
mFromValueText.setHint("0");
resetSwapFromToAssets();
mJsonRpcService.setNetwork(chainId, CoinType.ETH, (success) -> {
if (!success) {
Log.e(TAG, "Could not set network");
}
mCurrentChainId = chainId;
mJsonRpcService.getNetwork(CoinType.ETH, selectedNetwork -> {
BlockchainToken nativeAsset = Utils.makeNetworkAsset(selectedNetwork);
resetSwapFromToAssets(nativeAsset);
});
});
updateBalanceMaybeSwap(getCurrentSelectedAccountAddr());
});
@@ -454,23 +457,27 @@ public class BuySendSwapActivity extends BraveWalletBaseActivity
checkBalanceShowError(response, errorResponse);
}
private void resetSwapFromToAssets() {
// TODO (Wengling): change to pass NetworkInfo with
// https://github.com/brave/brave-core/pull/14046
private void resetSwapFromToAssets(BlockchainToken defaultToken) {
if (mBlockchainRegistry != null && mCustomAccountAdapter != null
&& mInitialLayoutInflationComplete) {
final BlockchainToken eth =
Utils.createEthereumBlockchainToken(BraveWalletConstants.MAINNET_CHAIN_ID);
final BlockchainToken nativeAsset = defaultToken == null
? Utils.createEthereumBlockchainToken(BraveWalletConstants.MAINNET_CHAIN_ID)
: defaultToken;
// Swap from
String swapFromAssetSymbol = getIntent().getStringExtra("swapFromAssetSymbol");
if (swapFromAssetSymbol == null
|| swapFromAssetSymbol.equals(eth.symbol)) { // default swap from ETH
updateBuySendSwapAsset(eth.symbol, eth, true);
resetSwapToAsset(eth, swapFromAssetSymbol);
|| swapFromAssetSymbol.equals(
nativeAsset.symbol)) { // default swap from native asset
updateBuySendSwapAsset(nativeAsset.symbol, nativeAsset, true);
resetSwapToAsset(nativeAsset, swapFromAssetSymbol);
} else {
mBlockchainRegistry.getTokenBySymbol(BraveWalletConstants.MAINNET_CHAIN_ID,
CoinType.ETH, swapFromAssetSymbol, token -> {
if (token != null) {
updateBuySendSwapAsset(token.symbol, token, true);
resetSwapToAsset(eth, swapFromAssetSymbol);
resetSwapToAsset(nativeAsset, swapFromAssetSymbol);
return;
}
@@ -482,7 +489,7 @@ public class BuySendSwapActivity extends BraveWalletBaseActivity
if (swapFromAssetSymbol.equals(filteredToken.symbol)) {
updateBuySendSwapAsset(
filteredToken.symbol, filteredToken, true);
resetSwapToAsset(eth, swapFromAssetSymbol);
resetSwapToAsset(nativeAsset, swapFromAssetSymbol);
break;
}
}
@@ -492,12 +499,12 @@ public class BuySendSwapActivity extends BraveWalletBaseActivity
}
}
private void resetSwapToAsset(BlockchainToken eth, String swapFromAssetSymbol) {
private void resetSwapToAsset(BlockchainToken nativeAsset, String swapFromAssetSymbol) {
if (mActivityType != ActivityType.SWAP) return;
final String defaultSwapToAsset = "BAT";
// Swap to
if (defaultSwapToAsset.equals(swapFromAssetSymbol)) { // swap from BAT
updateBuySendSwapAsset(eth.symbol, eth, false);
updateBuySendSwapAsset(nativeAsset.symbol, nativeAsset, false);
} else {
// Only ERC20 tokens can be swapped
mBlockchainRegistry.getTokenBySymbol(BraveWalletConstants.MAINNET_CHAIN_ID,
@@ -1515,7 +1522,7 @@ public class BuySendSwapActivity extends BraveWalletBaseActivity
// updateBuySendSwapAsset needs mCustomAccountAdapter to be
// initialized
resetSwapFromToAssets();
resetSwapFromToAssets(null);
});
}
});
@@ -1095,6 +1095,52 @@ public class Utils {
return eth;
}
public static BlockchainToken makeNetworkAsset(NetworkInfo network) {
String logo;
// TODO: Add missing logos
// case "SOL":
// logo = "sol.png";
// break;
// case "FIL":
// logo = "fil.png";
// break;
// case network.chainId === BraveWallet.OPTIMISM_MAINNET_CHAIN_ID:
// logo = "optimism.png";
// break;
// case network.chainId === BraveWallet.AVALANCHE_MAINNET_CHAIN_ID:
// logo = "avax.png";
// break;
// case network.chainId === BraveWallet.FANTOM_MAINNET_CHAIN_ID:
// logo = "fantom.png";
// break;
// case network.chainId === BraveWallet.CELO_MAINNET_CHAIN_ID:
// logo = "celo.png";
// break;
if (network.chainId.equals(BraveWalletConstants.MAINNET_CHAIN_ID)) {
logo = "eth.png";
} else if (network.chainId.equals(BraveWalletConstants.POLYGON_MAINNET_CHAIN_ID)) {
logo = "matic.png";
} else if (network.chainId.equals(
BraveWalletConstants.BINANCE_SMART_CHAIN_MAINNET_CHAIN_ID)) {
logo = "bnb.png";
} else {
logo = "";
}
BlockchainToken asset = new BlockchainToken();
asset.name = network.symbolName;
asset.symbol = network.symbol;
asset.contractAddress = "";
asset.isErc20 = false;
asset.isErc721 = false;
asset.logo = logo;
asset.decimals = network.decimals;
asset.visible = true;
asset.chainId = network.chainId;
return asset;
}
public static BlockchainToken[] fixupTokensRegistry(BlockchainToken[] tokens, String chainId) {
for (BlockchainToken token : tokens) {
token.contractAddress =