Skip to content

Commit

Permalink
Merge pull request #14497 from brave/show-tx-for-default-networks
Browse files Browse the repository at this point in the history
 feat(wallet): show default network tx
  • Loading branch information
Pavneet Singh committed Aug 8, 2022
2 parents f97eca6 + 41a421c commit bf33985
Show file tree
Hide file tree
Showing 14 changed files with 329 additions and 121 deletions.
1 change: 1 addition & 0 deletions android/brave_java_sources.gni
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,7 @@ brave_java_sources = [
"../../brave/android/java/org/chromium/chrome/browser/crypto_wallet/util/ParsedTransactionFees.java",
"../../brave/android/java/org/chromium/chrome/browser/crypto_wallet/util/PendingTxHelper.java",
"../../brave/android/java/org/chromium/chrome/browser/crypto_wallet/util/PortfolioHelper.java",
"../../brave/android/java/org/chromium/chrome/browser/crypto_wallet/util/SelectedAccountResponsesCollector.java",
"../../brave/android/java/org/chromium/chrome/browser/crypto_wallet/util/SmoothLineChartEquallySpaced.java",
"../../brave/android/java/org/chromium/chrome/browser/crypto_wallet/util/SolanaTransactionsGasHelper.java",
"../../brave/android/java/org/chromium/chrome/browser/crypto_wallet/util/TokenUtils.java",
Expand Down
32 changes: 22 additions & 10 deletions android/java/org/chromium/chrome/browser/app/BraveActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -1302,18 +1302,30 @@ private void setupObservers() {
networkInfo.symbolName))
.setPositiveButton(R.string.wallet_action_yes,
(dialog, which) -> {
mWalletModel.getKeyringModel().addAccount(
WalletUtils.getUniqueNextAccountName(this,
mWalletModel.getKeyringModel()
.mAccountInfos.getValue()
.toArray(
new AccountInfo[0]),
networkInfo.symbolName,
networkInfo.coin),
networkInfo.coin, isAccountAdded -> {});
mWalletModel.getCryptoModel()
.getNetworkModel()
.clearCreateAccountState();
.setNetwork(networkInfo, success -> {
if (success) {
mWalletModel.getKeyringModel().addAccount(
WalletUtils.getUniqueNextAccountName(
this,
mWalletModel
.getKeyringModel()
.mAccountInfos
.getValue()
.toArray(
new AccountInfo
[0]),
networkInfo
.symbolName,
networkInfo.coin),
networkInfo.coin,
isAccountAdded -> {});
}
mWalletModel.getCryptoModel()
.getNetworkModel()
.clearCreateAccountState();
});
})
.setNegativeButton(
R.string.wallet_action_no, (dialog, which) -> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MediatorLiveData;
import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.Observer;
import androidx.lifecycle.Transformations;

import org.chromium.brave_wallet.mojom.AccountInfo;
Expand All @@ -35,6 +36,7 @@
import org.chromium.chrome.browser.crypto_wallet.activities.BraveWalletDAppsActivity;
import org.chromium.chrome.browser.crypto_wallet.model.CryptoAccountTypeInfo;
import org.chromium.chrome.browser.crypto_wallet.util.PendingTxHelper;
import org.chromium.chrome.browser.crypto_wallet.util.SelectedAccountResponsesCollector;
import org.chromium.chrome.browser.crypto_wallet.util.Utils;
import org.chromium.chrome.browser.crypto_wallet.util.WalletUtils;
import org.chromium.chrome.browser.flags.ChromeFeatureList;
Expand Down Expand Up @@ -133,12 +135,17 @@ public void init() {
if (mKeyringService == null || mPendingTxHelper == null) {
return;
}
getPendingTxHelper().fetchTransactions(null);
mKeyringService.getKeyringsInfo(mSharedData.getEnabledKeyrings(), keyringInfos -> {
List<AccountInfo> accountInfos =
WalletUtils.getAccountInfosFromKeyrings(keyringInfos);
mPendingTxHelper.setAccountInfos(accountInfos);
});
// TODO(pav): uncomment the below and mvoe to refreshTransactions.
// To process pending tx from all networks and full network name

// mKeyringService.getKeyringsInfo(mSharedData.getEnabledKeyrings(),
// keyringInfos -> {
// List<AccountInfo> accountInfos =
// WalletUtils.getAccountInfosFromKeyrings(keyringInfos);
// mPendingTxHelper.setAccountInfos(accountInfos);
// });

refreshTransactions();

// Filter out a separate list of unapproved transactions
mPendingTransactions =
Expand Down Expand Up @@ -192,10 +199,19 @@ public void refreshTransactions() {
if (mKeyringService == null || mPendingTxHelper == null) {
return;
}
List<Integer> coins = new ArrayList<>();
for (CryptoAccountTypeInfo cryptoAccountTypeInfo :
mSharedData.getSupportedCryptoAccountTypes()) {
coins.add(cryptoAccountTypeInfo.getCoinType());
}

mKeyringService.getKeyringsInfo(mSharedData.getEnabledKeyrings(), keyringInfos -> {
List<AccountInfo> accountInfos =
WalletUtils.getAccountInfosFromKeyrings(keyringInfos);
mPendingTxHelper.setAccountInfos(accountInfos);
new SelectedAccountResponsesCollector(mKeyringService, coins, accountInfos)
.getAccounts(defaultAccountPerCoin -> {
mPendingTxHelper.setAccountInfos(accountInfos);
});
});
}
}
Expand All @@ -210,7 +226,7 @@ public LiveData<TransactionInfo> getSelectedPendingRequest() {
}

public LiveData<List<TransactionInfo>> getPendingTransactions() {
return mPendingTransactions;
return mPendingTxHelper.mPendingTransactionInfoLd;
}

public LiveData<List<TransactionInfo>> getAllTransactions() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,5 @@
public interface CryptoSharedActions {
void updateCoinType();
void updateCoinAccountNetworkInfo(@CoinType.EnumType int coin);
void onNewAccountAdded();
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,9 @@
import org.chromium.brave_wallet.mojom.KeyringInfo;
import org.chromium.brave_wallet.mojom.KeyringService;
import org.chromium.brave_wallet.mojom.KeyringServiceObserver;
import org.chromium.chrome.browser.crypto_wallet.model.CryptoAccountTypeInfo;
import org.chromium.chrome.browser.crypto_wallet.util.AccountsPermissionsHelper;
import org.chromium.chrome.browser.crypto_wallet.util.SelectedAccountResponsesCollector;
import org.chromium.chrome.browser.crypto_wallet.util.Utils;
import org.chromium.chrome.browser.crypto_wallet.util.WalletUtils;
import org.chromium.mojo.bindings.Callbacks;
Expand Down Expand Up @@ -232,6 +234,7 @@ public void addAccount(String accountName, @CoinType.EnumType int coinType,
}
}
mCryptoSharedActions.updateCoinType();
mCryptoSharedActions.onNewAccountAdded();
callback.call(result);
});
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,7 @@ public void init() {
}
}

public void setNetwork(
public void setNetworkWithAccountCheck(
NetworkInfo networkToBeSetAsSelected, Callbacks.Callback1<Boolean> callback) {
List<AccountInfo> accountInfos = mSharedData.getAccounts().getValue();
boolean hasAccountOfNetworkType = false;
Expand Down Expand Up @@ -199,6 +199,16 @@ public void setNetwork(
}
}

public void setNetwork(
NetworkInfo networkToBeSetAsSelected, Callbacks.Callback1<Boolean> callback) {
mJsonRpcService.setNetwork(
networkToBeSetAsSelected.chainId, networkToBeSetAsSelected.coin, isSelected -> {
callback.call(isSelected);
mCryptoActions.updateCoinType();
init();
});
}

public void clearCreateAccountState() {
_mNeedToCreateAccountForNetwork.postValue(null);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -203,5 +203,10 @@ public void updateCoinAccountNetworkInfo(@CoinType.EnumType int coin) {
mCryptoModel.getNetworkModel().init();
});
}

@Override
public void onNewAccountAdded() {
mCryptoModel.refreshTransactions();
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@
import com.google.android.gms.vision.MultiProcessor;
import com.google.android.gms.vision.barcode.Barcode;
import com.google.android.gms.vision.barcode.BarcodeDetector;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;

import org.chromium.base.Log;
import org.chromium.brave_wallet.mojom.AccountInfo;
Expand Down Expand Up @@ -90,7 +91,6 @@
import org.chromium.ui.text.NoUnderlineClickableSpan;

import java.io.IOException;
import java.math.BigDecimal;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
Expand Down Expand Up @@ -307,12 +307,13 @@ public void onItemSelected(AdapterView<?> parent, View view, int position, long
mFromValueText.setText("");
mFromValueText.setHint("0");

mWalletModel.getCryptoModel().getNetworkModel().setNetwork(networkInfo, success -> {
if (!success) {
return;
}
mSelectedNetwork = networkInfo;
});
mWalletModel.getCryptoModel().getNetworkModel().setNetworkWithAccountCheck(
networkInfo, success -> {
if (!success) {
return;
}
mSelectedNetwork = networkInfo;
});
}

} else if (parent.getId() == R.id.accounts_spinner) {
Expand Down Expand Up @@ -1582,6 +1583,46 @@ mSelectedNetwork.symbol, getResources().getDisplayMetrics().density,
resetSwapFromToAssets();
}
});

mWalletModel.getCryptoModel().getNetworkModel().mNeedToCreateAccountForNetwork.observe(this, networkInfo -> {
if (networkInfo == null) return;
MaterialAlertDialogBuilder builder =
new MaterialAlertDialogBuilder(this, R.style.BraveWalletAlertDialogTheme)
.setMessage(getString(R.string.brave_wallet_create_account_description,
networkInfo.symbolName))
.setPositiveButton(R.string.wallet_action_yes,
(dialog, which) -> {
mWalletModel.getCryptoModel().getNetworkModel().setNetwork(
networkInfo, success -> {
if (success) {
mWalletModel.getKeyringModel().addAccount(
WalletUtils.getUniqueNextAccountName(
this,
mWalletModel
.getKeyringModel()
.mAccountInfos
.getValue()
.toArray(
new AccountInfo
[0]),
networkInfo.symbolName,
networkInfo.coin),
networkInfo.coin,
isAccountAdded -> {});
}
mWalletModel.getCryptoModel()
.getNetworkModel()
.clearCreateAccountState();
});
})
.setNegativeButton(R.string.wallet_action_no, (dialog, which) -> {
mWalletModel.getCryptoModel()
.getNetworkModel()
.clearCreateAccountState();
dialog.dismiss();
});
builder.show();
});
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@

import com.google.android.material.appbar.MaterialToolbar;

import org.chromium.base.Log;
import org.chromium.brave_wallet.mojom.NetworkInfo;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.app.BraveActivity;
Expand Down Expand Up @@ -71,16 +70,17 @@ private void setSelectedNetworkObserver() {

@Override
public void onNetworkItemSelected(NetworkInfo networkInfo) {
mWalletModel.getCryptoModel().getNetworkModel().setNetwork(networkInfo, isSelected -> {
if (!isSelected) {
Toast.makeText(this,
getString(R.string.brave_wallet_network_selection_error,
networkInfo.chainName),
Toast.LENGTH_SHORT)
.show();
networkSelectorAdapter.setSelectedNetwork(mSelectedNetwork);
}
finish();
});
mWalletModel.getCryptoModel().getNetworkModel().setNetworkWithAccountCheck(
networkInfo, isSelected -> {
if (!isSelected) {
Toast.makeText(this,
getString(R.string.brave_wallet_network_selection_error,
networkInfo.chainName),
Toast.LENGTH_SHORT)
.show();
networkSelectorAdapter.setSelectedNetwork(mSelectedNetwork);
}
finish();
});
}
}
Loading

0 comments on commit bf33985

Please sign in to comment.