WalletStatus cleanup, external wallet flows refactor.

This commit is contained in:
Szilard Szaloki
2022-11-11 08:15:52 -05:00
parent d16bacac88
commit b5044f4a77
180 changed files with 4359 additions and 5656 deletions
@@ -6,16 +6,15 @@
package org.chromium.chrome.browser;
import android.content.Context;
import androidx.annotation.IntDef;
import androidx.annotation.VisibleForTesting;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import org.json.JSONException;
import org.json.JSONObject;
import org.chromium.base.ContextUtils;
import org.chromium.chrome.R;
import org.json.JSONException;
import org.json.JSONObject;
import org.chromium.ledger.mojom.WalletStatus;
public class BraveRewardsExternalWallet {
//fields
@@ -29,23 +28,9 @@ public class BraveRewardsExternalWallet {
public static final String WITHDRAW_URL = "withdraw_url";
public static final String LOGIN_URL = "login_url";
//WalletStatus @
//vendor/bat-native-ledger/include/bat/ledger/public/interfaces/ledger.mojom
@Retention(RetentionPolicy.SOURCE)
@IntDef({NOT_CONNECTED, CONNECTED, VERIFIED, DISCONNECTED_NOT_VERIFIED,
DISCONNECTED_VERIFIED, PENDING})
public @interface WalletStatus {}
public static final int NOT_CONNECTED = 0;
public static final int CONNECTED = 1;
public static final int VERIFIED = 2;
public static final int DISCONNECTED_NOT_VERIFIED = 3;
public static final int DISCONNECTED_VERIFIED = 4;
public static final int PENDING = 5;
private String mAccountUrl;
private String mAddUrl;
private String mAddress;
@WalletStatus
private int mStatus;
private String mToken;
private String mType;
@@ -116,33 +101,21 @@ public class BraveRewardsExternalWallet {
+ '\'' + ", mLoginUrl='" + mLoginUrl + '\'' + '}';
}
public static String WalletStatusToString (@WalletStatus int status){
public static String WalletStatusToString(int status) {
String value = "";
Context context = ContextUtils.getApplicationContext();
switch (status){
case NOT_CONNECTED:
case WalletStatus.NOT_CONNECTED:
value = context.getResources().getString(
R.string.user_wallet_status_not_connected);
break;
case CONNECTED:
value = context.getResources().getString(
R.string.user_wallet_status_connected);
break;
case VERIFIED:
case WalletStatus.CONNECTED:
value = context.getResources().getString(
R.string.user_wallet_status_verified);
break;
case DISCONNECTED_NOT_VERIFIED:
case WalletStatus.LOGGED_OUT:
value = context.getResources().getString(
R.string.user_wallet_status_disconnected_not_verified);
break;
case DISCONNECTED_VERIFIED:
value = context.getResources().getString(
R.string.user_wallet_status_disconnected_verified);
break;
case PENDING:
value = context.getResources().getString(
R.string.user_wallet_status_pending);
R.string.brave_ui_wallet_button_logged_out);
break;
default:
break;
@@ -635,9 +635,9 @@ public class BraveRewardsNativeWorker {
}
@CalledByNative
public void OnGetExternalWallet(int error_code, String external_wallet) {
public void OnGetExternalWallet(String external_wallet) {
for (BraveRewardsObserver observer : mObservers) {
observer.OnGetExternalWallet(error_code, external_wallet);
observer.OnGetExternalWallet(external_wallet);
}
}
@@ -21,7 +21,7 @@ public interface BraveRewardsObserver {
default public void OnRecurringDonationUpdated(){};
default public void OnResetTheWholeState(boolean success){};
default public void OnGrantFinish(int result){};
default public void OnGetExternalWallet(int error_code, String external_wallet){};
default public void OnGetExternalWallet(String external_wallet){};
default public void onGetAvailableCountries(String[] countries){};
default public void OnDisconnectWallet(int error_code, String external_wallet){};
default public void OnClaimPromotion(int error_code){};
@@ -17,6 +17,7 @@ import android.widget.TextView;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.widget.Toolbar;
import org.chromium.base.Log;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.BraveRewardsBalance;
import org.chromium.chrome.browser.BraveRewardsExternalWallet;
@@ -24,9 +25,12 @@ import org.chromium.chrome.browser.BraveRewardsNativeWorker;
import org.chromium.chrome.browser.BraveWalletProvider;
import org.chromium.chrome.browser.app.BraveActivity;
import org.chromium.chrome.browser.init.AsyncInitializationActivity;
import org.chromium.ledger.mojom.WalletStatus;
public class BraveRewardsUserWalletActivity extends AsyncInitializationActivity {
private static final String TAG = "BraveRewards";
public static final String DISCONNECT_WALLET_URL = "brave://rewards/#disconnect-wallet";
public static final int UNDEFINED_WALLET_STATUS = -1;
private String walletType = BraveRewardsNativeWorker.getInstance().getExternalWalletType();
private String walletTypeString;
@@ -51,7 +55,8 @@ public class BraveRewardsUserWalletActivity extends AsyncInitializationActivity
private void SetUIControls() {
Intent intent = getIntent();
final int status = intent.getIntExtra(BraveRewardsExternalWallet.STATUS, -1);
final int status =
intent.getIntExtra(BraveRewardsExternalWallet.STATUS, UNDEFINED_WALLET_STATUS);
TextView txtUserId = (TextView) findViewById(R.id.user_id);
TextView txtUserStatus = (TextView) findViewById(R.id.user_status);
Button btn1 = (Button) findViewById(R.id.user_wallet_btn1);
@@ -60,37 +65,31 @@ public class BraveRewardsUserWalletActivity extends AsyncInitializationActivity
btnGotoProvider.setText(String.format(
getResources().getString(R.string.user_wallet_goto_provider), walletTypeString));
if (status < BraveRewardsExternalWallet.NOT_CONNECTED
|| status > BraveRewardsExternalWallet.PENDING) {
finish();
} else if (status == BraveRewardsExternalWallet.VERIFIED) {
// set 2nd button visible
findViewById(R.id.user_wallet_btn2_separator).setVisibility(View.VISIBLE);
btn2 = (Button) findViewById(R.id.user_wallet_btn2);
btn2.setVisibility(View.VISIBLE);
switch (status) {
case WalletStatus.CONNECTED:
// set 2nd button visible
findViewById(R.id.user_wallet_btn2_separator).setVisibility(View.VISIBLE);
btn2 = (Button) findViewById(R.id.user_wallet_btn2);
btn2.setVisibility(View.VISIBLE);
// Buttons:
// Add funds
// Withdraw
// Go to provider
// Disconnect
btn1.setText(getResources().getString(R.string.brave_rewards_local_panel_add_funds));
btn2.setText(getResources().getString(R.string.user_wallet_withdraw_funds));
txtUserStatus.setText(BraveRewardsExternalWallet.WalletStatusToString(status));
// Buttons:
// Add funds
// Withdraw
// Go to provider
// Disconnect
btn1.setText(
getResources().getString(R.string.brave_rewards_local_panel_add_funds));
btn2.setText(getResources().getString(R.string.user_wallet_withdraw_funds));
txtUserStatus.setText(BraveRewardsExternalWallet.WalletStatusToString(status));
SetBtnOpenUrlClickHandler(
btn1, intent.getStringExtra(BraveRewardsExternalWallet.ADD_URL));
SetBtnOpenUrlClickHandler(
btn2, intent.getStringExtra(BraveRewardsExternalWallet.WITHDRAW_URL));
} else {
// CONNECTED or PENDING
// Buttons:
// Complete verification
// Go to provider
// Disconnect
btn1.setText(getResources().getString(R.string.user_wallet_complete_verification));
SetBtnOpenUrlClickHandler(
btn1, intent.getStringExtra(BraveRewardsExternalWallet.LOGIN_URL));
SetBtnOpenUrlClickHandler(
btn1, intent.getStringExtra(BraveRewardsExternalWallet.ADD_URL));
SetBtnOpenUrlClickHandler(
btn2, intent.getStringExtra(BraveRewardsExternalWallet.WITHDRAW_URL));
break;
case UNDEFINED_WALLET_STATUS:
finish();
break;
}
SetBtnOpenUrlClickHandler(
@@ -137,15 +136,6 @@ public class BraveRewardsUserWalletActivity extends AsyncInitializationActivity
String.format(getResources().getString(R.string.user_wallet_disconnect_rewards),
walletTypeString));
SetBtnOpenUrlClickHandler(btnDisconnect, DISCONNECT_WALLET_URL);
/*
-- Use this code when android transitions to native code for Brave Rewards UI --
btnDisconnect.setOnClickListener((View v) -> {
BraveRewardsNativeWorker.getInstance().DisconnectWallet();
Intent intent = new Intent();
setResult(RESULT_OK, intent);
finish();
});
*/
}
@Override
@@ -11,15 +11,12 @@ import android.content.Context;
import android.os.Parcel;
import android.os.Parcelable;
import androidx.annotation.IntDef;
import androidx.annotation.VisibleForTesting;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.Arrays;
import java.util.HashMap;
@@ -37,18 +34,6 @@ public class BraveRewardsBannerInfo {
public static final String LINKS = "links";
public static final String STATUS = "status";
@Retention(RetentionPolicy.SOURCE)
@IntDef({NOT_CONNECTED, CONNECTED, VERIFIED, DISCONNECTED_NOT_VERIFIED, DISCONNECTED_VERIFIED,
PENDING})
public @interface WalletStatus {}
public static final int NOT_CONNECTED = 0;
public static final int CONNECTED = 1;
public static final int VERIFIED = 2;
public static final int DISCONNECTED_NOT_VERIFIED = 3;
public static final int DISCONNECTED_VERIFIED = 4;
public static final int PENDING = 5;
private String mPublisherKey;
private String mTitle;
private String mName;
@@ -58,7 +43,6 @@ public class BraveRewardsBannerInfo {
private String mLogo;
private String mProvider;
private HashMap<String, String> mLinks;
@WalletStatus
private int mStatus;
public String getPublisherKey() {
@@ -48,6 +48,7 @@ import org.chromium.chrome.browser.BraveRewardsSiteBannerActivity;
import org.chromium.chrome.browser.BraveWalletProvider;
import org.chromium.chrome.browser.app.BraveActivity;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.ledger.mojom.WalletStatus;
import java.math.RoundingMode;
import java.text.DecimalFormat;
@@ -264,8 +265,8 @@ public class BraveRewardsCreatorPanelFragment extends Fragment
}
@Override
public void OnGetExternalWallet(int errorCode, String externalWallet) {
int walletStatus = BraveRewardsExternalWallet.NOT_CONNECTED;
public void OnGetExternalWallet(String externalWallet) {
int walletStatus = WalletStatus.NOT_CONNECTED;
if (!TextUtils.isEmpty(externalWallet)) {
try {
BraveRewardsExternalWallet mExternalWallet =
@@ -284,7 +285,7 @@ public class BraveRewardsCreatorPanelFragment extends Fragment
private void setPublisherNoteText(@PublisherStatus int pubStatus, int walletStatus) {
String notePart1 = "";
String walletType = BraveRewardsNativeWorker.getInstance().getExternalWalletType();
if (walletStatus == BraveRewardsExternalWallet.NOT_CONNECTED) {
if (walletStatus == WalletStatus.NOT_CONNECTED) {
if (pubStatus == BraveRewardsPublisher.CONNECTED
|| pubStatus == BraveRewardsPublisher.UPHOLD_VERIFIED
|| pubStatus == BraveRewardsPublisher.BITFLYER_VERIFIED
@@ -75,7 +75,6 @@ import org.chromium.chrome.R;
import org.chromium.chrome.browser.BraveAdsNativeHelper;
import org.chromium.chrome.browser.BraveRewardsBalance;
import org.chromium.chrome.browser.BraveRewardsExternalWallet;
import org.chromium.chrome.browser.BraveRewardsExternalWallet.WalletStatus;
import org.chromium.chrome.browser.BraveRewardsHelper;
import org.chromium.chrome.browser.BraveRewardsNativeWorker;
import org.chromium.chrome.browser.BraveRewardsObserver;
@@ -100,6 +99,7 @@ import org.chromium.chrome.browser.util.ConfigurationUtils;
import org.chromium.chrome.browser.util.PackageUtils;
import org.chromium.chrome.browser.util.TabUtils;
import org.chromium.components.user_prefs.UserPrefs;
import org.chromium.ledger.mojom.WalletStatus;
import org.chromium.ui.base.DeviceFormFactor;
import java.math.RoundingMode;
@@ -1315,8 +1315,8 @@ public class BraveRewardsPanel
}
@Override
public void OnGetExternalWallet(int errorCode, String externalWallet) {
int walletStatus = BraveRewardsExternalWallet.NOT_CONNECTED;
public void OnGetExternalWallet(String externalWallet) {
int walletStatus = WalletStatus.NOT_CONNECTED;
if (!TextUtils.isEmpty(externalWallet)) {
try {
mExternalWallet = new BraveRewardsExternalWallet(externalWallet);
@@ -1335,7 +1335,7 @@ public class BraveRewardsPanel
private void showRewardsFromAdsSummary(int walletStatus) {
if (mBraveRewardsNativeWorker != null) {
String walletType = mBraveRewardsNativeWorker.getExternalWalletType();
if (walletStatus == BraveRewardsExternalWallet.VERIFIED
if (walletStatus == WalletStatus.CONNECTED
&& (walletType.equals(BraveWalletProvider.UPHOLD)
|| walletType.equals(BraveWalletProvider.BITFLYER)
|| walletType.equals(BraveWalletProvider.GEMINI))) {
@@ -1350,14 +1350,14 @@ public class BraveRewardsPanel
.setVisibility(View.VISIBLE);
}
// Hide rewards from ads when verified but disconnected from provider
if (walletStatus == BraveRewardsExternalWallet.DISCONNECTED_VERIFIED) {
if (walletStatus == WalletStatus.LOGGED_OUT) {
mPopupView.findViewById(R.id.rewards_from_ads_summary_layout)
.setVisibility(View.GONE);
}
}
}
private void setVerifyWalletButton(@WalletStatus final int status) {
private void setVerifyWalletButton(final int status) {
TextView btnVerifyWallet = mPopupView.findViewById(R.id.btn_verify_wallet);
SharedPreferences sharedPref = ContextUtils.getAppSharedPreferences();
SharedPreferences.Editor editor = sharedPref.edit();
@@ -1367,26 +1367,13 @@ public class BraveRewardsPanel
String walletType = mBraveRewardsNativeWorker.getExternalWalletType();
switch (status) {
case BraveRewardsExternalWallet.NOT_CONNECTED:
case WalletStatus.NOT_CONNECTED:
rightDrawable = R.drawable.ic_verify_wallet_arrow;
textId = R.string.brave_ui_wallet_button_unverified;
btnVerifyWallet.setCompoundDrawablesWithIntrinsicBounds(0, 0, rightDrawable, 0);
Log.e(TAG, "BraveRewardsExternalWallet.NOT_CONNECTED");
Log.e(TAG, "WalletStatus.NOT_CONNECTED");
break;
case BraveRewardsExternalWallet.CONNECTED:
rightDrawable = R.drawable.verified_disclosure;
textId = R.string.brave_ui_wallet_button_unverified;
btnVerifyWallet.setCompoundDrawablesWithIntrinsicBounds(0, 0, rightDrawable, 0);
break;
case BraveRewardsExternalWallet.PENDING:
editor.putBoolean(PREF_VERIFY_WALLET_ENABLE, true);
editor.apply();
rightDrawable = R.drawable.verified_disclosure;
textId = R.string.brave_ui_wallet_button_unverified;
btnVerifyWallet.setCompoundDrawablesWithIntrinsicBounds(0, 0, rightDrawable, 0);
break;
case BraveRewardsExternalWallet.VERIFIED:
case WalletStatus.CONNECTED:
editor.putBoolean(PREF_VERIFY_WALLET_ENABLE, true);
editor.apply();
@@ -1402,8 +1389,7 @@ public class BraveRewardsPanel
mBtnAddFunds.setVisibility(View.VISIBLE);
}
break;
case BraveRewardsExternalWallet.DISCONNECTED_NOT_VERIFIED:
case BraveRewardsExternalWallet.DISCONNECTED_VERIFIED:
case WalletStatus.LOGGED_OUT:
leftDrawable = getWalletIcon(walletType);
textId = R.string.brave_ui_wallet_button_logged_out;
btnVerifyWallet.setCompoundDrawablesWithIntrinsicBounds(leftDrawable, 0, 0, 0);
@@ -1422,14 +1408,13 @@ public class BraveRewardsPanel
setVerifyWalletButtonClickEvent(btnVerifyWallet, status);
// Update add funds button based on status
if (status != BraveRewardsExternalWallet.VERIFIED) {
if (status != WalletStatus.CONNECTED) {
mBtnAddFunds.setEnabled(false);
return;
}
}
private void setVerifyWalletButtonClickEvent(
View btnVerifyWallet, @WalletStatus final int status) {
private void setVerifyWalletButtonClickEvent(View btnVerifyWallet, final int status) {
btnVerifyWallet.setOnClickListener((new View.OnClickListener() {
@Override
public void onClick(View v) {
@@ -1442,28 +1427,22 @@ public class BraveRewardsPanel
}
switch (status) {
case BraveRewardsExternalWallet.NOT_CONNECTED:
case BraveRewardsExternalWallet.CONNECTED:
case BraveRewardsExternalWallet.PENDING:
case BraveRewardsExternalWallet.VERIFIED:
if (status == BraveRewardsExternalWallet.NOT_CONNECTED) {
TabUtils.openUrlInNewTab(false,
BraveActivity.BRAVE_REWARDS_SETTINGS_WALLET_VERIFICATION_URL);
dismiss();
} else {
int requestCode = (status == BraveRewardsExternalWallet.NOT_CONNECTED)
? BraveConstants.VERIFY_WALLET_ACTIVITY_REQUEST_CODE
: BraveConstants.USER_WALLET_ACTIVITY_REQUEST_CODE;
Intent intent = BuildVerifyWalletActivityIntent(status);
if (intent != null) {
mActivity.startActivityForResult(intent, requestCode);
}
}
break;
case BraveRewardsExternalWallet.DISCONNECTED_NOT_VERIFIED:
case BraveRewardsExternalWallet.DISCONNECTED_VERIFIED:
case WalletStatus.NOT_CONNECTED:
TabUtils.openUrlInNewTab(false,
BraveActivity.BRAVE_REWARDS_SETTINGS_WALLET_VERIFICATION_URL);
dismiss();
break;
case WalletStatus.CONNECTED:
int requestCode = BraveConstants.USER_WALLET_ACTIVITY_REQUEST_CODE;
Intent intent = BuildVerifyWalletActivityIntent(status);
if (intent != null) {
mActivity.startActivityForResult(intent, requestCode);
}
break;
case WalletStatus.LOGGED_OUT:
TabUtils.openUrlInNewTab(false,
BraveActivity.BRAVE_REWARDS_SETTINGS_WALLET_VERIFICATION_URL);
dismiss();
break;
default:
Log.e(TAG, "Unexpected external wallet status");
@@ -1732,12 +1711,10 @@ public class BraveRewardsPanel
return sharedPreferences.getBoolean(PREF_VERIFY_WALLET_ENABLE, false);
}
private Intent BuildVerifyWalletActivityIntent(@WalletStatus final int status) {
private Intent BuildVerifyWalletActivityIntent(final int status) {
Class clazz = null;
switch (status) {
case BraveRewardsExternalWallet.CONNECTED:
case BraveRewardsExternalWallet.PENDING:
case BraveRewardsExternalWallet.VERIFIED:
case WalletStatus.CONNECTED:
clazz = BraveRewardsUserWalletActivity.class;
break;
default: