Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add login uphold android #8645

Merged
merged 5 commits into from
Apr 28, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions android/brave_java_resources.gni
Original file line number Diff line number Diff line change
Expand Up @@ -640,6 +640,7 @@ brave_java_resources = [
"java/res/drawable/rounded_filled_binance.xml",
"java/res/drawable/rounded_holo_button.xml",
"java/res/drawable/rounded_shape.xml",
"java/res/drawable/rounded_white_bg.xml",
"java/res/drawable/selected_indicator.xml",
"java/res/drawable/shields_tooltip_background_1.xml",
"java/res/drawable/shields_tooltip_background_2.xml",
Expand Down Expand Up @@ -742,6 +743,7 @@ brave_java_resources = [
"java/res/layout/toolbar_space.xml",
"java/res/layout/top_sites_layout.xml",
"java/res/layout/tracker_item_layout.xml",
"java/res/layout/uphold_login_popup_window.xml",
"java/res/layout/user_wallet_activity.xml",
"java/res/layout/verify_wallet_activity.xml",
"java/res/layout/web_notification_big_brave_ads.xml",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,11 @@ class BraveRewardsExternalWallet {
public static final String ADDRESS = "address";
public static final String STATUS = "status";
public static final String TOKEN = "token";
public static final String TYPE = "type";
public static final String USER_NAME = "user_name";
public static final String VERIFY_URL = "verify_url";
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
Expand All @@ -41,46 +43,85 @@ class BraveRewardsExternalWallet {
public static final int DISCONNECTED_VERIFIED = 4;
public static final int PENDING = 5;

public String mAccount_url;
public String mAdd_url;
public String mAddress;
@WalletStatus public int mStatus;
public String mToken;
public String mType;
public String mUser_name;
public String mVerify_url;
public String mWithdraw_url;
private String mAccountUrl;
private String mAddUrl;
private String mAddress;
@WalletStatus
private int mStatus;
private String mToken;
private String mType;
private String mUserName;
private String mVerifyUrl;
private String mWithdrawUrl;
private String mLoginUrl;

public String getAccountUrl() {
return mAccountUrl;
}

public String getAddUrl() {
return mAddUrl;
}

public String getAddress() {
return mAddress;
}

public int getStatus() {
return mStatus;
}

public String getToken() {
return mToken;
}

public String getType() {
return mType;
}

public String getUserName() {
return mUserName;
}

public String getVerifyUrl() {
return mVerifyUrl;
}

public String getWithdrawUrl() {
return mWithdrawUrl;
}

public String getLoginUrl() {
return mLoginUrl;
}

BraveRewardsExternalWallet (String json_external_wallet) throws JSONException {
fromJson (json_external_wallet);
}

private void fromJson(String json_external_wallet) throws JSONException {
JSONObject jsonObj = new JSONObject(json_external_wallet);
mAccount_url = jsonObj.getString(ACCOUNT_URL);
mAdd_url = jsonObj.getString(ADD_URL);
mAccountUrl = jsonObj.getString(ACCOUNT_URL);
mAddUrl = jsonObj.getString(ADD_URL);
mAddress = jsonObj.getString(ADDRESS);
mStatus = jsonObj.getInt(STATUS);
mToken = jsonObj.getString(TOKEN);
mUser_name = jsonObj.getString(USER_NAME);
mVerify_url = jsonObj.getString(VERIFY_URL);
mWithdraw_url = jsonObj.getString(WITHDRAW_URL);
mType = jsonObj.getString(TYPE);
mUserName = jsonObj.getString(USER_NAME);
mVerifyUrl = jsonObj.getString(VERIFY_URL);
mWithdrawUrl = jsonObj.getString(WITHDRAW_URL);
mLoginUrl = jsonObj.getString(LOGIN_URL);
}

@VisibleForTesting
@Override
public String toString() {
return "BraveRewardsExternalWallet{" +
"mAccount_url='" + mAccount_url + '\'' +
", mAdd_url='" + mAdd_url + '\'' +
", mAddress='" + mAddress + '\'' +
", mStatus=" + mStatus +
", mToken='" + mToken + '\'' +
", mUser_name='" + mUser_name + '\'' +
", mVerify_url='" + mVerify_url + '\'' +
", mWithdraw_url='" + mWithdraw_url + '\'' +
'}';
return "BraveRewardsExternalWallet{"
+ "mAccountUrl='" + mAccountUrl + '\'' + ", mAddUrl='" + mAddUrl + '\''
+ ", mAddress='" + mAddress + '\'' + ", mStatus=" + mStatus + ", mToken='" + mToken
+ '\'' + ", mUserName='" + mUserName + '\'' + ", mVerifyUrl='" + mVerifyUrl + '\''
+ ", mWithdrawUrl='" + mWithdrawUrl + '\'' + ", mLoginUrl='" + mLoginUrl + '\''
+ '}';
}

public static String WalletStatusToString (@WalletStatus int status){
Expand Down
129 changes: 100 additions & 29 deletions android/java/org/chromium/chrome/browser/BraveRewardsPanelPopup.java
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,9 @@ public class BraveRewardsPanelPopup implements BraveRewardsObserver, BraveReward
private static final int BALANCE_REPORT_RECURRING_DONATION = 3;
private static final int BALANCE_REPORT_ONE_TIME_DONATION = 4;

private static final int CLICK_DISABLE_INTERVAL = 1000; // In milliseconds
private static final int WALLET_BALANCE_LIMIT = 15;

public static final String PREF_VERIFY_WALLET_ENABLE = "verify_wallet_enable";

protected final View anchor;
Expand Down Expand Up @@ -171,8 +174,6 @@ public class BraveRewardsPanelPopup implements BraveRewardsObserver, BraveReward
//flag, Handler and delay to prevent quick opening of multiple site banners
private boolean mTippingInProgress;
private final Handler mHandler = new Handler();
private static final int CLICK_DISABLE_INTERVAL = 1000; // In milliseconds
private static final int WALLET_BALANCE_LIMIT = 25;

private boolean mClaimInProcess;

Expand All @@ -181,7 +182,7 @@ public class BraveRewardsPanelPopup implements BraveRewardsObserver, BraveReward

private String batText;

private BraveRewardsExternalWallet mExternal_wallet;
private BraveRewardsExternalWallet mExternalWallet;

private double walletBalance;

Expand Down Expand Up @@ -1690,14 +1691,7 @@ public void OnRewardsParameters(int errorCode) {
((TextView)this.root.findViewById(R.id.br_usd_wallet)).setText(usdText);

Button btnVerifyWallet = (Button) root.findViewById(R.id.btn_verify_wallet);
if (btnVerifyWallet != null) {
if (walletBalance < WALLET_BALANCE_LIMIT && !isVerifyWalletEnabled()) {
btnVerifyWallet.setBackgroundResource(
R.drawable.wallet_disconnected_button);
} else {
btnVerifyWallet.setBackgroundResource(R.drawable.wallet_verify_button);
}
}
btnVerifyWallet.setBackgroundResource(R.drawable.wallet_verify_button);
}
walletDetailsReceived = true;
} else if (errorCode == BraveRewardsNativeWorker.LEDGER_ERROR) { // No Internet connection
Expand Down Expand Up @@ -1805,7 +1799,7 @@ private void SetAddFundsBtnClickHandler(@WalletStatus final int status) {
@Override
public void onClick(View v) {
dismiss();
mBraveActivity.openNewOrSelectExistingTab (mExternal_wallet.mAdd_url);
mBraveActivity.openNewOrSelectExistingTab(mExternalWallet.getAddUrl());
}
}));
}
Expand All @@ -1825,8 +1819,10 @@ public void onClick(View v) {
case BraveRewardsExternalWallet.CONNECTED:
case BraveRewardsExternalWallet.PENDING:
case BraveRewardsExternalWallet.VERIFIED:
if (walletBalance < WALLET_BALANCE_LIMIT && !isVerifyWalletEnabled()) {
Toast.makeText(ContextUtils.getApplicationContext(), root.getResources().getString(R.string.required_minium_balance), Toast.LENGTH_SHORT).show();
if (walletBalance < WALLET_BALANCE_LIMIT
&& mExternalWallet.getType().equals(BraveUphold.UPHOLD)
&& !isVerifyWalletEnabled()) {
showUpholdLoginPopupWindow(btnVerifyWallet);
} else {
int requestCode =
(status == BraveRewardsExternalWallet.NOT_CONNECTED) ?
Expand All @@ -1838,12 +1834,15 @@ public void onClick(View v) {
break;
case BraveRewardsExternalWallet.DISCONNECTED_NOT_VERIFIED:
case BraveRewardsExternalWallet.DISCONNECTED_VERIFIED:
if (walletBalance < WALLET_BALANCE_LIMIT && !isVerifyWalletEnabled()) {
Toast.makeText(ContextUtils.getApplicationContext(), root.getResources().getString(R.string.required_minium_balance), Toast.LENGTH_SHORT).show();
if (walletBalance < WALLET_BALANCE_LIMIT
&& mExternalWallet.getType().equals(BraveUphold.UPHOLD)
&& !isVerifyWalletEnabled()) {
showUpholdLoginPopupWindow(btnVerifyWallet);
} else {
if (!TextUtils.isEmpty(mExternal_wallet.mVerify_url)) {
if (!TextUtils.isEmpty(mExternalWallet.getVerifyUrl())) {
dismiss();
mBraveActivity.openNewOrSelectExistingTab (mExternal_wallet.mVerify_url);
mBraveActivity.openNewOrSelectExistingTab(
mExternalWallet.getVerifyUrl());
}
}
break;
Expand Down Expand Up @@ -1872,14 +1871,14 @@ private Intent BuildVerifyWalletActivityIntent(@WalletStatus final int status) {
}

Intent intent = new Intent(ContextUtils.getApplicationContext(), clazz);
intent.putExtra(BraveRewardsExternalWallet.ACCOUNT_URL, mExternal_wallet.mAccount_url);
intent.putExtra(BraveRewardsExternalWallet.ADD_URL, mExternal_wallet.mAdd_url);
intent.putExtra(BraveRewardsExternalWallet.ADDRESS, mExternal_wallet.mAddress);
intent.putExtra(BraveRewardsExternalWallet.STATUS, mExternal_wallet.mStatus);
intent.putExtra(BraveRewardsExternalWallet.TOKEN, mExternal_wallet.mToken);
intent.putExtra(BraveRewardsExternalWallet.USER_NAME, mExternal_wallet.mUser_name);
intent.putExtra(BraveRewardsExternalWallet.VERIFY_URL, mExternal_wallet.mVerify_url);
intent.putExtra(BraveRewardsExternalWallet.WITHDRAW_URL, mExternal_wallet.mWithdraw_url);
intent.putExtra(BraveRewardsExternalWallet.ACCOUNT_URL, mExternalWallet.getAccountUrl());
intent.putExtra(BraveRewardsExternalWallet.ADD_URL, mExternalWallet.getAddUrl());
intent.putExtra(BraveRewardsExternalWallet.ADDRESS, mExternalWallet.getAddress());
intent.putExtra(BraveRewardsExternalWallet.STATUS, mExternalWallet.getStatus());
intent.putExtra(BraveRewardsExternalWallet.TOKEN, mExternalWallet.getToken());
intent.putExtra(BraveRewardsExternalWallet.USER_NAME, mExternalWallet.getUserName());
intent.putExtra(BraveRewardsExternalWallet.VERIFY_URL, mExternalWallet.getVerifyUrl());
intent.putExtra(BraveRewardsExternalWallet.WITHDRAW_URL, mExternalWallet.getWithdrawUrl());
return intent;
}

Expand All @@ -1888,11 +1887,11 @@ public void OnGetExternalWallet(int error_code, String external_wallet) {
int walletStatus = BraveRewardsExternalWallet.NOT_CONNECTED;
if(!TextUtils.isEmpty(external_wallet)) {
try {
mExternal_wallet = new BraveRewardsExternalWallet(external_wallet);
walletStatus = mExternal_wallet.mStatus;
mExternalWallet = new BraveRewardsExternalWallet(external_wallet);
walletStatus = mExternalWallet.getStatus();
} catch (JSONException e) {
Log.e (TAG, "Error parsing external wallet status");
mExternal_wallet = null;
mExternalWallet = null;
}
}
SetVerifyWalletControl(walletStatus);
Expand Down Expand Up @@ -2003,4 +2002,76 @@ public void OnRefreshPublisher(int status, String publisherKey) {
UpdatePublisherStatus(status);
}
};

public void showUpholdLoginPopupWindow(final View view) {
PopupWindow loginPopupWindow = new PopupWindow(mActivity);

LayoutInflater inflater =
(LayoutInflater) mActivity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View loginPopupView = inflater.inflate(R.layout.uphold_login_popup_window, null);

TextView loginActionButton = loginPopupView.findViewById(R.id.login_action_button);

String verifiedAccountUpholdText =
String.format(mActivity.getResources().getString(R.string.verified_account_uphold),
mActivity.getResources().getString(R.string.continue_to_login));
int countinueToLoginIndex = verifiedAccountUpholdText.indexOf(
mActivity.getResources().getString(R.string.continue_to_login));
Spanned verifiedAccountUpholdTextSpanned =
BraveRewardsHelper.spannedFromHtmlString(verifiedAccountUpholdText);
SpannableString verifiedAccountUpholdTextSS =
new SpannableString(verifiedAccountUpholdTextSpanned.toString());

ClickableSpan verifiedAccountUpholdClickableSpan = new ClickableSpan() {
@Override
public void onClick(@NonNull View textView) {
dismiss();
loginPopupWindow.dismiss();
mBraveActivity.openNewOrSelectExistingTab(mExternalWallet.getLoginUrl());
}
@Override
public void updateDrawState(@NonNull TextPaint ds) {
super.updateDrawState(ds);
ds.setUnderlineText(false);
}
};

verifiedAccountUpholdTextSS.setSpan(verifiedAccountUpholdClickableSpan,
countinueToLoginIndex,
countinueToLoginIndex
+ mActivity.getResources().getString(R.string.continue_to_login).length(),
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
verifiedAccountUpholdTextSS.setSpan(
new ForegroundColorSpan(
mActivity.getResources().getColor(R.color.brave_rewards_modal_theme_color)),
countinueToLoginIndex,
countinueToLoginIndex
+ mActivity.getResources().getString(R.string.continue_to_login).length(),
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

loginActionButton.setMovementMethod(LinkMovementMethod.getInstance());
loginActionButton.setText(verifiedAccountUpholdTextSS);

loginPopupWindow.setWidth(ViewGroup.LayoutParams.WRAP_CONTENT);
loginPopupWindow.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
loginPopupWindow.setBackgroundDrawable(
new ColorDrawable(android.graphics.Color.TRANSPARENT));
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
loginPopupWindow.setElevation(20);
}

loginPopupWindow.setTouchable(true);
loginPopupWindow.setFocusable(true);
loginPopupWindow.setOutsideTouchable(true);
loginPopupWindow.setContentView(loginPopupView);

view.post(new Runnable() {
public void run() {
if (SysUtils.isLowEndDevice()) {
loginPopupWindow.setAnimationStyle(0);
}
loginPopupWindow.showAsDropDown(view, 0, 0);
}
});
}
}
3 changes: 3 additions & 0 deletions android/java/org/chromium/chrome/browser/BraveUphold.java
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,9 @@ public class BraveUphold implements BraveRewardsObserver {
public static final String UPHOLD_SUPPORT_URL = "http://uphold.com/en/brave/support";
public static final String UPHOLD_ORIGIN_URL = "http://uphold.com";

// Wallet types
public static final String UPHOLD = "uphold";

private static int UNKNOWN_ERROR_CODE = -1;

private ExternalNavigationParams mExternalNavigationParams;
Expand Down
Loading