Add implementation for update account

This commit is contained in:
Deep
2021-10-01 10:35:24 -04:00
parent e8dcb04934
commit 7bbf0b65c9
9 changed files with 166 additions and 36 deletions
@@ -5,6 +5,7 @@
package org.chromium.chrome.browser.crypto_wallet.activities;
import android.app.Activity;
import android.content.Intent;
import android.view.MenuItem;
import android.view.View;
@@ -16,6 +17,7 @@ import androidx.recyclerview.widget.RecyclerView;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.crypto_wallet.AssetRatioControllerFactory;
import org.chromium.chrome.browser.crypto_wallet.activities.AddAccountActivity;
import org.chromium.chrome.browser.crypto_wallet.adapters.WalletCoinAdapter;
import org.chromium.chrome.browser.crypto_wallet.listeners.OnWalletListItemClick;
import org.chromium.chrome.browser.crypto_wallet.model.WalletListItemModel;
@@ -27,15 +29,17 @@ import java.util.List;
public class AccountDetailActivity
extends AsyncInitializationActivity implements OnWalletListItemClick {
private String address;
private String name;
private static final int UPDATE_ACCOUNT_REQUEST_CODE = 2;
private String mAddress;
private String mName;
private TextView mAccountText;
@Override
protected void triggerLayoutInflation() {
setContentView(R.layout.activity_account_detail);
if (getIntent() != null) {
address = getIntent().getStringExtra("address");
name = getIntent().getStringExtra("name");
mAddress = getIntent().getStringExtra("address");
mName = getIntent().getStringExtra("name");
}
Toolbar toolbar = findViewById(R.id.toolbar);
@@ -43,11 +47,11 @@ public class AccountDetailActivity
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setTitle("");
TextView accountText = findViewById(R.id.account_text);
accountText.setText(name);
mAccountText = findViewById(R.id.account_text);
mAccountText.setText(mName);
TextView accountValueText = findViewById(R.id.account_value_text);
accountValueText.setText(address);
accountValueText.setText(mAddress);
TextView btnDetails = findViewById(R.id.details_btn);
btnDetails.setOnClickListener(new View.OnClickListener() {
@@ -55,8 +59,8 @@ public class AccountDetailActivity
public void onClick(View v) {
Intent accountDetailsWithQrActivityIntent =
new Intent(AccountDetailActivity.this, AccountDetailsWithQrActivity.class);
accountDetailsWithQrActivityIntent.putExtra("address", address);
accountDetailsWithQrActivityIntent.putExtra("name", name);
accountDetailsWithQrActivityIntent.putExtra("address", mAddress);
accountDetailsWithQrActivityIntent.putExtra("name", mName);
startActivity(accountDetailsWithQrActivityIntent);
}
});
@@ -64,7 +68,11 @@ public class AccountDetailActivity
btnRename.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO add action for edit
Intent addAccountActivityIntent =
new Intent(AccountDetailActivity.this, AddAccountActivity.class);
addAccountActivityIntent.putExtra("address", mAddress);
addAccountActivityIntent.putExtra("name", mName);
startActivityForResult(addAccountActivityIntent, UPDATE_ACCOUNT_REQUEST_CODE);
}
});
@@ -108,6 +116,8 @@ public class AccountDetailActivity
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
Intent returnIntent = new Intent();
setResult(Activity.RESULT_OK, returnIntent);
finish();
return true;
}
@@ -131,4 +141,25 @@ public class AccountDetailActivity
@Override
public void onTransactionClick() {}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == UPDATE_ACCOUNT_REQUEST_CODE) {
if (resultCode == Activity.RESULT_OK && data != null) {
mName = data.getStringExtra("name");
if (mAccountText != null) {
mAccountText.setText(mName);
}
}
}
}
@Override
public void onBackPressed() {
Intent returnIntent = new Intent();
setResult(Activity.RESULT_OK, returnIntent);
finish();
}
}
@@ -7,6 +7,7 @@ package org.chromium.chrome.browser.crypto_wallet.activities;
import android.app.Activity;
import android.content.Intent;
import android.text.TextUtils;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
@@ -23,15 +24,51 @@ import org.chromium.mojo.bindings.ConnectionErrorHandler;
import org.chromium.mojo.system.MojoException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class AddAccountActivity
extends AsyncInitializationActivity implements ConnectionErrorHandler {
public enum AccountType {
PRIMARY_ACCOUNT(0),
SECONDARY_ACCOUNT(1);
private int value;
private static Map map = new HashMap<>();
private AccountType(int value) {
this.value = value;
}
static {
for (AccountType activityType : AccountType.values()) {
map.put(activityType.value, activityType);
}
}
public static AccountType valueOf(int activityType) {
return (AccountType) map.get(activityType);
}
public int getValue() {
return value;
}
}
private String mAddress;
private String mName;
private boolean mIsUpdate;
private KeyringController mKeyringController;
@Override
protected void triggerLayoutInflation() {
setContentView(R.layout.activity_add_account);
if (getIntent() != null) {
mAddress = getIntent().getStringExtra("address");
mName = getIntent().getStringExtra("name");
}
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
@@ -39,22 +76,39 @@ public class AddAccountActivity
EditText addAccountText = findViewById(R.id.add_account_text);
Button btnBuy = findViewById(R.id.btn_add);
btnBuy.setOnClickListener(new View.OnClickListener() {
Button btnAdd = findViewById(R.id.btn_add);
btnAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Add account action
if (mKeyringController != null) {
mKeyringController.addAccount(addAccountText.getText().toString(), result -> {
if (result) {
Intent returnIntent = new Intent();
returnIntent.putExtra("result", result);
setResult(Activity.RESULT_OK, returnIntent);
finish();
} else {
addAccountText.setError(getString(R.string.password_error));
}
});
if (mIsUpdate) {
mKeyringController.setDefaultKeyringDerivedAccountName(
mAddress, addAccountText.getText().toString(), result -> {
if (result) {
Intent returnIntent = new Intent();
returnIntent.putExtra(
"name", addAccountText.getText().toString());
setResult(Activity.RESULT_OK, returnIntent);
finish();
} else {
addAccountText.setError(
getString(R.string.account_update_failed));
}
});
} else {
mKeyringController.addAccount(
addAccountText.getText().toString(), result -> {
if (result) {
Intent returnIntent = new Intent();
returnIntent.putExtra("result", result);
setResult(Activity.RESULT_OK, returnIntent);
finish();
} else {
addAccountText.setError(
getString(R.string.account_name_empty_error));
}
});
}
}
}
});
@@ -82,6 +136,15 @@ public class AddAccountActivity
}
});
if (!TextUtils.isEmpty(mAddress) && !TextUtils.isEmpty(mName)) {
btnAdd.setText(getResources().getString(R.string.update));
addAccountText.setText(mName);
getSupportActionBar().setTitle(getResources().getString(R.string.update_account));
findViewById(R.id.import_account_layout).setVisibility(View.GONE);
findViewById(R.id.import_account_text).setVisibility(View.GONE);
mIsUpdate = true;
}
onInitialLayoutInflationComplete();
}
@@ -6,6 +6,8 @@
package org.chromium.chrome.browser.crypto_wallet.activities;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.MenuItem;
import android.view.MotionEvent;
@@ -27,6 +29,7 @@ import org.chromium.brave_wallet.mojom.KeyringInfo;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.crypto_wallet.AssetRatioControllerFactory;
import org.chromium.chrome.browser.crypto_wallet.KeyringControllerFactory;
import org.chromium.chrome.browser.crypto_wallet.activities.AccountDetailActivity;
import org.chromium.chrome.browser.crypto_wallet.activities.BuySendSwapActivity;
import org.chromium.chrome.browser.crypto_wallet.adapters.WalletCoinAdapter;
import org.chromium.chrome.browser.crypto_wallet.listeners.OnWalletListItemClick;
@@ -42,6 +45,7 @@ import java.util.List;
public class AssetDetailActivity extends AsyncInitializationActivity
implements ConnectionErrorHandler, OnWalletListItemClick {
private static final int ACCOUNT_REQUEST_CODE = 2;
private SmoothLineChartEquallySpaced chartES;
private AssetRatioController mAssetRatioController;
private KeyringController mKeyringController;
@@ -228,8 +232,11 @@ public class AssetDetailActivity extends AsyncInitializationActivity
@Override
public void onAccountClick(WalletListItemModel walletListItemModel) {
Utils.openAccountDetailActivity(AssetDetailActivity.this, walletListItemModel.getTitle(),
walletListItemModel.getSubTitle());
Intent accountDetailActivityIntent =
new Intent(AssetDetailActivity.this, AccountDetailActivity.class);
accountDetailActivityIntent.putExtra("name", walletListItemModel.getTitle());
accountDetailActivityIntent.putExtra("address", walletListItemModel.getSubTitle());
startActivityForResult(accountDetailActivityIntent, ACCOUNT_REQUEST_CODE);
}
@Override
@@ -246,4 +253,15 @@ public class AssetDetailActivity extends AsyncInitializationActivity
public KeyringController getKeyringController() {
return mKeyringController;
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == ACCOUNT_REQUEST_CODE) {
if (resultCode == Activity.RESULT_OK) {
setUpAccountList();
}
}
}
}
@@ -23,6 +23,7 @@ import org.chromium.brave_wallet.mojom.AccountInfo;
import org.chromium.brave_wallet.mojom.KeyringController;
import org.chromium.brave_wallet.mojom.KeyringInfo;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.crypto_wallet.activities.AccountDetailActivity;
import org.chromium.chrome.browser.crypto_wallet.activities.AddAccountActivity;
import org.chromium.chrome.browser.crypto_wallet.activities.BraveWalletActivity;
import org.chromium.chrome.browser.crypto_wallet.adapters.WalletCoinAdapter;
@@ -112,8 +113,10 @@ public class AccountsFragment extends Fragment implements OnWalletListItemClick
@Override
public void onAccountClick(WalletListItemModel walletListItemModel) {
Utils.openAccountDetailActivity(
getActivity(), walletListItemModel.getTitle(), walletListItemModel.getSubTitle());
Intent accountDetailActivityIntent = new Intent(getActivity(), AccountDetailActivity.class);
accountDetailActivityIntent.putExtra("name", walletListItemModel.getTitle());
accountDetailActivityIntent.putExtra("address", walletListItemModel.getSubTitle());
startActivityForResult(accountDetailActivityIntent, ACCOUNT_REQUEST_CODE);
}
@Override
@@ -60,7 +60,7 @@ public class UnlockWalletFragment extends CryptoOnboardingFragment {
onNextPage.gotoNextPage(true);
}
} else {
unlockWalletPassword.setError(getString(R.string.password_error));
unlockWalletPassword.setError(getString(R.string.incorrect_password_error));
}
});
}
@@ -128,14 +128,6 @@ public class Utils {
activity.startActivity(addAccountActivityIntent);
}
public static void openAccountDetailActivity(Activity activity, String name, String address) {
assert activity != null;
Intent accountDetailActivityIntent = new Intent(activity, AccountDetailActivity.class);
accountDetailActivityIntent.putExtra("name", name);
accountDetailActivityIntent.putExtra("address", address);
activity.startActivity(accountDetailActivityIntent);
}
public static String[] getNetworksList(Activity activity) {
List<String> categories = new ArrayList<String>();
categories.add(activity.getText(R.string.mainnet).toString());
@@ -53,6 +53,9 @@
android:text="@string/details"
android:textColor="@color/wallet_text_color"
android:background="@drawable/rounded_white_holo_bg"
android:foreground="?android:attr/selectableItemBackground"
android:clickable="true"
android:focusable="true"
app:drawableStartCompat="@drawable/ic_qr_code_18"
android:drawablePadding="8dp"
android:layout_marginEnd="8dp"
@@ -74,6 +77,9 @@
android:drawablePadding="8dp"
android:gravity="center"
android:textSize="14sp"
android:foreground="?android:attr/selectableItemBackground"
android:clickable="true"
android:focusable="true"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:paddingStart="16dp"
@@ -51,6 +51,7 @@
android:textColorHint="@color/wallet_edittext_outline_color" />
<TextView
android:id="@+id/import_account_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="24dp"
@@ -61,6 +62,7 @@
android:textSize="14sp" />
<LinearLayout
android:id="@+id/import_account_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
@@ -1810,6 +1810,9 @@ until they verify, or until 90 days have passed.
<message name="IDS_ADD_ACCOUNT" desc="Brave Wallet account dialog button text">
Add Account
</message>
<message name="IDS_UPDATE_ACCOUNT" desc="Brave Wallet account dialog button text">
Update Account
</message>
<message name="IDS_RECOVERY_PHRASE_ITEM_TEXT" desc="Brave Wallet onboarding text">
<ph name="NUMBER">%1$s</ph>. <ph name="RECOVERY_PHRASE">%2$s</ph>
</message>
@@ -2290,6 +2293,18 @@ If you don't accept this request, VPN will not reconnect and your internet conne
<message name="IDS_EDIT" desc="Brave wallet accounts text">
Edit
</message>
<message name="IDS_UPDATE" desc="Brave wallet accounts text">
Update
</message>
<message name="IDS_ACCOUNT_UPDATE_FAILED" desc="Brave Wallet account update error text">
Account update failed.
</message>
<message name="IDS_ACCOUNT_NAME_EMPTY_ERROR" desc="Brave Wallet empty account error text">
Account name can't be empty.
</message>
<message name="IDS_INCORRECT_PASSWORD_ERROR" desc="Brave Wallet incorrect password error text">
Incorrect password
</message>
</messages>
</release>
</grit>