Initial work on bitFlyer support on Android
This commit is contained in:
@@ -15,7 +15,6 @@ import org.json.JSONObject;
|
||||
|
||||
public class BraveRewardsBalance {
|
||||
public static final String WALLET_ANONYMOUS = "anonymous";
|
||||
public static final String WALLET_UPHOLD = "uphold";
|
||||
public static final String WALLET_BLINDED = "blinded";
|
||||
|
||||
/**
|
||||
@@ -57,4 +56,4 @@ public class BraveRewardsBalance {
|
||||
"mTotal=" + mTotal +
|
||||
", mWallets=" + mWallets +'}';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -191,6 +191,13 @@ public class BraveRewardsNativeWorker {
|
||||
}
|
||||
}
|
||||
|
||||
public String getExternalWalletType() {
|
||||
synchronized (lock) {
|
||||
return BraveRewardsNativeWorkerJni.get().getExternalWalletType(
|
||||
mNativeBraveRewardsNativeWorker);
|
||||
}
|
||||
}
|
||||
|
||||
public double GetWalletRate() {
|
||||
synchronized(lock) {
|
||||
return BraveRewardsNativeWorkerJni.get().getWalletRate(mNativeBraveRewardsNativeWorker);
|
||||
@@ -587,6 +594,15 @@ public class BraveRewardsNativeWorker {
|
||||
}
|
||||
}
|
||||
|
||||
@CalledByNative
|
||||
public void OnGetAdsAccountStatement(boolean success, double next_payment_date,
|
||||
int ads_received_this_month, double earnings_this_month, double earnings_last_month) {
|
||||
for (BraveRewardsObserver observer : mObservers) {
|
||||
observer.OnGetAdsAccountStatement(success, next_payment_date, ads_received_this_month,
|
||||
earnings_this_month, earnings_last_month);
|
||||
}
|
||||
}
|
||||
|
||||
@CalledByNative
|
||||
public void OnDisconnectWallet(int error_code, String external_wallet) {
|
||||
for (BraveRewardsObserver observer : mObservers) {
|
||||
@@ -623,6 +639,7 @@ public class BraveRewardsNativeWorker {
|
||||
void init(BraveRewardsNativeWorker caller);
|
||||
void destroy(long nativeBraveRewardsNativeWorker);
|
||||
String getWalletBalance(long nativeBraveRewardsNativeWorker);
|
||||
String getExternalWalletType(long nativeBraveRewardsNativeWorker);
|
||||
double getWalletRate(long nativeBraveRewardsNativeWorker);
|
||||
void getPublisherInfo(long nativeBraveRewardsNativeWorker, int tabId, String host);
|
||||
String getPublisherURL(long nativeBraveRewardsNativeWorker, int tabId);
|
||||
|
||||
@@ -31,4 +31,6 @@ public interface BraveRewardsObserver {
|
||||
default public void OnRefreshPublisher(int status, String publisherKey){};
|
||||
default public void OnOneTimeTip(){};
|
||||
default public void OnStartProcess(){};
|
||||
default public void OnGetAdsAccountStatement(boolean success, double nextPaymentDate,
|
||||
int adsReceivedThisMonth, double earningsThisMonth, double earningsLastMonth){};
|
||||
}
|
||||
|
||||
@@ -122,7 +122,6 @@ public class BraveRewardsPanelPopup implements BraveRewardsObserver, BraveReward
|
||||
private static final String REWARDS_NOTIFICATION_NO_INTERNET_ID = "29d835c2-5752-4152-93c3-8a1ded9dd4ec";
|
||||
private static final int REWARDS_PROMOTION_CLAIM_ERROR = REWARDS_NOTIFICATION_NO_INTERNET + 1;
|
||||
private static final String REWARDS_PROMOTION_CLAIM_ERROR_ID = "rewards_promotion_claim_error_id";
|
||||
//
|
||||
|
||||
// Auto contribute results
|
||||
private static final String AUTO_CONTRIBUTE_SUCCESS = "0";
|
||||
@@ -1636,7 +1635,6 @@ public class BraveRewardsPanelPopup implements BraveRewardsObserver, BraveReward
|
||||
// mBraveRewardsNativeWorker.GetExternalWallet();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* OnRecurringDonationUpdated is fired after a publisher was added or removed to/from
|
||||
* recurrent donation list
|
||||
@@ -1703,7 +1701,7 @@ public class BraveRewardsPanelPopup implements BraveRewardsObserver, BraveReward
|
||||
Button btnVerifyWallet = (Button) root.findViewById(R.id.btn_verify_wallet);
|
||||
btnVerifyWallet.setBackgroundResource(R.drawable.wallet_verify_button);
|
||||
if (mExternalWallet != null
|
||||
&& mExternalWallet.getType().equals(BraveUphold.BITFLYER)) {
|
||||
&& mExternalWallet.getType().equals(BraveWalletProvider.BITFLYER)) {
|
||||
btnVerifyWallet.setVisibility(View.INVISIBLE);
|
||||
}
|
||||
}
|
||||
@@ -1833,7 +1831,7 @@ public class BraveRewardsPanelPopup implements BraveRewardsObserver, BraveReward
|
||||
case BraveRewardsExternalWallet.PENDING:
|
||||
case BraveRewardsExternalWallet.VERIFIED:
|
||||
if (walletBalance < WALLET_BALANCE_LIMIT
|
||||
&& mExternalWallet.getType().equals(BraveUphold.UPHOLD)
|
||||
&& mExternalWallet.getType().equals(BraveWalletProvider.UPHOLD)
|
||||
&& !isVerifyWalletEnabled()) {
|
||||
showUpholdLoginPopupWindow(btnVerifyWallet);
|
||||
} else {
|
||||
@@ -1848,7 +1846,7 @@ public class BraveRewardsPanelPopup implements BraveRewardsObserver, BraveReward
|
||||
case BraveRewardsExternalWallet.DISCONNECTED_NOT_VERIFIED:
|
||||
case BraveRewardsExternalWallet.DISCONNECTED_VERIFIED:
|
||||
if (walletBalance < WALLET_BALANCE_LIMIT
|
||||
&& mExternalWallet.getType().equals(BraveUphold.UPHOLD)
|
||||
&& mExternalWallet.getType().equals(BraveWalletProvider.UPHOLD)
|
||||
&& !isVerifyWalletEnabled()) {
|
||||
showUpholdLoginPopupWindow(btnVerifyWallet);
|
||||
} else {
|
||||
@@ -1910,6 +1908,12 @@ public class BraveRewardsPanelPopup implements BraveRewardsObserver, BraveReward
|
||||
SetVerifyWalletControl(walletStatus);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void OnGetAdsAccountStatement(boolean success, double next_payment_date,
|
||||
int ads_received_this_month, double earnings_this_month, double earnings_last_month) {
|
||||
// TODO: Implement
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the "promotion claim failed" error message.
|
||||
* Succesful claims are dismissed by a notification.
|
||||
|
||||
@@ -21,16 +21,24 @@ import org.chromium.chrome.R;
|
||||
import org.chromium.chrome.browser.BraveRewardsBalance;
|
||||
import org.chromium.chrome.browser.BraveRewardsExternalWallet;
|
||||
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;
|
||||
|
||||
public class BraveRewardsUserWalletActivity extends AsyncInitializationActivity {
|
||||
public static final String DISCONNECT_WALLET_URL = "chrome://rewards/#disconnect-wallet";
|
||||
|
||||
private String walletType = BraveRewardsNativeWorker.getInstance().getExternalWalletType();
|
||||
private String walletTypeString;
|
||||
|
||||
@Override
|
||||
protected void triggerLayoutInflation() {
|
||||
setContentView(R.layout.user_wallet_activity);
|
||||
|
||||
walletTypeString = walletType.equals(BraveWalletProvider.UPHOLD)
|
||||
? getResources().getString(R.string.uphold)
|
||||
: getResources().getString(R.string.bitflyer);
|
||||
|
||||
Toolbar toolbar = findViewById(R.id.toolbar);
|
||||
setSupportActionBar(toolbar);
|
||||
|
||||
@@ -50,7 +58,9 @@ public class BraveRewardsUserWalletActivity extends AsyncInitializationActivity
|
||||
TextView txtUserStatus = (TextView) findViewById(R.id.user_status);
|
||||
Button btn1 = (Button) findViewById(R.id.user_wallet_btn1);
|
||||
Button btn2 = null;
|
||||
Button btnGotoUphold = (Button) findViewById(R.id.user_wallet_go_to_uphold);
|
||||
Button btnGotoProvider = (Button) findViewById(R.id.user_wallet_go_to_provider);
|
||||
btnGotoProvider.setText(String.format(
|
||||
getResources().getString(R.string.user_wallet_goto_provider), walletTypeString));
|
||||
|
||||
if (status < BraveRewardsExternalWallet.NOT_CONNECTED
|
||||
|| status > BraveRewardsExternalWallet.PENDING) {
|
||||
@@ -64,7 +74,7 @@ public class BraveRewardsUserWalletActivity extends AsyncInitializationActivity
|
||||
// Buttons:
|
||||
// Add funds
|
||||
// Withdraw
|
||||
// Go to uphold
|
||||
// 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));
|
||||
@@ -78,7 +88,7 @@ public class BraveRewardsUserWalletActivity extends AsyncInitializationActivity
|
||||
// CONNECTED or PENDING
|
||||
// Buttons:
|
||||
// Complete verification
|
||||
// Go to uphold
|
||||
// Go to provider
|
||||
// Disconnect
|
||||
btn1.setText(getResources().getString(R.string.user_wallet_complete_verification));
|
||||
SetBtnOpenUrlClickHandler(
|
||||
@@ -86,7 +96,7 @@ public class BraveRewardsUserWalletActivity extends AsyncInitializationActivity
|
||||
}
|
||||
|
||||
SetBtnOpenUrlClickHandler(
|
||||
btnGotoUphold, intent.getStringExtra(BraveRewardsExternalWallet.ACCOUNT_URL));
|
||||
btnGotoProvider, intent.getStringExtra(BraveRewardsExternalWallet.ACCOUNT_URL));
|
||||
|
||||
String userId = intent.getStringExtra(BraveRewardsExternalWallet.USER_NAME);
|
||||
txtUserId.setText(userId);
|
||||
|
||||
@@ -19,21 +19,55 @@ import android.widget.TextView;
|
||||
import org.chromium.chrome.R;
|
||||
import org.chromium.chrome.browser.BraveRewardsExternalWallet;
|
||||
import org.chromium.chrome.browser.BraveRewardsHelper;
|
||||
import org.chromium.chrome.browser.BraveUphold;
|
||||
import org.chromium.chrome.browser.BraveRewardsNativeWorker;
|
||||
import org.chromium.chrome.browser.BraveWalletProvider;
|
||||
import org.chromium.chrome.browser.app.BraveActivity;
|
||||
|
||||
import java.util.Locale;
|
||||
|
||||
public class BraveRewardsVerifyWalletActivity extends Activity {
|
||||
private String walletType = BraveRewardsNativeWorker.getInstance().getExternalWalletType();
|
||||
private String walletTypeString;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.verify_wallet_activity);
|
||||
|
||||
walletTypeString = walletType.equals(BraveWalletProvider.UPHOLD)
|
||||
? getResources().getString(R.string.uphold)
|
||||
: getResources().getString(R.string.bitflyer);
|
||||
|
||||
setTextForWalletTypes();
|
||||
SetVerifyWalletBtnClickHandler();
|
||||
SetUpholdLinkHandler();
|
||||
}
|
||||
|
||||
void setTextForWalletTypes() {
|
||||
TextView verifyWalletBenefitText1 = (TextView) findViewById(R.id.verify_wallet_benefit_1);
|
||||
verifyWalletBenefitText1.setText(walletType.equals(BraveWalletProvider.UPHOLD)
|
||||
? getResources().getString(R.string.verify_wallet_uphold_benefits1)
|
||||
: getResources().getString(R.string.verify_wallet_bitflyer_benefits1));
|
||||
TextView verifyWalletBenefitText2 = (TextView) findViewById(R.id.verify_wallet_benefit_2);
|
||||
verifyWalletBenefitText2.setText(walletType.equals(BraveWalletProvider.UPHOLD)
|
||||
? getResources().getString(R.string.verify_wallet_uphold_benefits2)
|
||||
: getResources().getString(R.string.verify_wallet_bitflyer_benefits2));
|
||||
TextView verifyWalletBenefitText3 = (TextView) findViewById(R.id.verify_wallet_benefit_3);
|
||||
verifyWalletBenefitText3.setText(walletType.equals(BraveWalletProvider.UPHOLD)
|
||||
? getResources().getString(R.string.verify_wallet_uphold_benefits3)
|
||||
: getResources().getString(R.string.verify_wallet_bitflyer_benefits3));
|
||||
|
||||
TextView verifyWalletProviderNoteText =
|
||||
(TextView) findViewById(R.id.verify_wallet_provider_note_txt);
|
||||
verifyWalletProviderNoteText.setText(String.format(
|
||||
getResources().getString(R.string.verify_wallet_provider_note1), walletTypeString));
|
||||
|
||||
TextView verifyWalletBraveNoteText =
|
||||
(TextView) findViewById(R.id.verify_wallet_brave_note_txt);
|
||||
verifyWalletBraveNoteText.setText(String.format(
|
||||
getResources().getString(R.string.verify_wallet_brave_note1), walletTypeString));
|
||||
}
|
||||
|
||||
void SetVerifyWalletBtnClickHandler() {
|
||||
Button btnVerifyWallet = (Button)findViewById(R.id.verify_wallet_btn);
|
||||
btnVerifyWallet.setOnClickListener( (View v) -> {
|
||||
@@ -49,7 +83,7 @@ public class BraveRewardsVerifyWalletActivity extends Activity {
|
||||
void SetUpholdLinkHandler() {
|
||||
TextView uphold_link = (TextView)findViewById(R.id.service_provider_txt);
|
||||
final String part1 = getResources().getString(R.string.verify_wallet_service_note);
|
||||
final String part2 = getResources().getString(R.string.verify_wallet_uphold);
|
||||
final String part2 = walletTypeString;
|
||||
final String built_service_str = String.format(Locale.US, "%s <b>%s</b>", part1, part2);
|
||||
Spanned toInsert = BraveRewardsHelper.spannedFromHtmlString(built_service_str);
|
||||
uphold_link.setText(toInsert);
|
||||
@@ -63,7 +97,8 @@ public class BraveRewardsVerifyWalletActivity extends Activity {
|
||||
|
||||
if (BraveRewardsHelper.subtextAtOffset(built_service_str, part2, offset) ){
|
||||
Intent intent = new Intent();
|
||||
intent.putExtra(BraveActivity.OPEN_URL, BraveUphold.UPHOLD_ORIGIN_URL);
|
||||
intent.putExtra(
|
||||
BraveActivity.OPEN_URL, BraveWalletProvider.UPHOLD_ORIGIN_URL);
|
||||
setResult(RESULT_OK, intent);
|
||||
finish();
|
||||
event_consumed = true;
|
||||
|
||||
@@ -1,153 +0,0 @@
|
||||
/** Copyright (c) 2020 The Brave Authors. All rights reserved.
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
* You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
*/
|
||||
package org.chromium.chrome.browser;
|
||||
|
||||
import android.app.AlertDialog;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.net.Uri;
|
||||
import android.text.TextUtils;
|
||||
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import org.chromium.base.ContextUtils;
|
||||
import org.chromium.chrome.R;
|
||||
import org.chromium.chrome.browser.BraveRewardsBalance;
|
||||
import org.chromium.chrome.browser.BraveRewardsHelper;
|
||||
import org.chromium.chrome.browser.BraveRewardsNativeWorker;
|
||||
import org.chromium.chrome.browser.BraveRewardsObserver;
|
||||
import org.chromium.chrome.browser.app.BraveActivity;
|
||||
import org.chromium.chrome.browser.externalnav.BraveExternalNavigationHandler;
|
||||
import org.chromium.components.external_intents.ExternalNavigationParams;
|
||||
|
||||
import java.util.Locale;
|
||||
|
||||
//used from org.chromium.chrome.browser.externalnav
|
||||
public class BraveUphold implements BraveRewardsObserver {
|
||||
public static final String UPHOLD_REDIRECT_URL = "rewards://uphold";
|
||||
public static final String UPHOLD_REDIRECT_URL_KEY = "redirect_url";
|
||||
public static final String ACTION_VALUE = "authorization";
|
||||
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";
|
||||
public static final String BITFLYER = "bitflyer";
|
||||
|
||||
private static int UNKNOWN_ERROR_CODE = -1;
|
||||
|
||||
private ExternalNavigationParams mExternalNavigationParams;
|
||||
private BraveExternalNavigationHandler mBraveExternalNavigationHandler;
|
||||
private BraveRewardsNativeWorker rewardsNativeProxy;
|
||||
|
||||
public void CompleteUpholdVerification(ExternalNavigationParams params,
|
||||
BraveExternalNavigationHandler handler) {
|
||||
mExternalNavigationParams = params;
|
||||
mBraveExternalNavigationHandler = handler;
|
||||
rewardsNativeProxy = BraveRewardsNativeWorker.getInstance();
|
||||
|
||||
Uri uri = Uri.parse(params.getUrl().getSpec());
|
||||
rewardsNativeProxy.AddObserver(this);
|
||||
String path = uri.getPath();
|
||||
String query = uri.getQuery();
|
||||
|
||||
if (TextUtils.isEmpty(path) || TextUtils.isEmpty(query)) {
|
||||
rewardsNativeProxy.RemoveObserver(this);
|
||||
ReleaseDependencies();
|
||||
ShowErrorMessageBox(UNKNOWN_ERROR_CODE);
|
||||
return;
|
||||
}
|
||||
|
||||
// Ledger expects:
|
||||
// path: "/uphold/path"
|
||||
// query: "?query"
|
||||
path = String.format(Locale.US,"/%s/%s",
|
||||
BraveRewardsBalance.WALLET_UPHOLD, path);
|
||||
query = String.format(Locale.US,"?%s", query);
|
||||
rewardsNativeProxy.ProcessRewardsPageUrl(path, query);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void OnProcessRewardsPageUrl(int error_code,
|
||||
String wallet_type, String action,
|
||||
String json_args ) {
|
||||
|
||||
//remove observer
|
||||
if (rewardsNativeProxy != null) {
|
||||
rewardsNativeProxy.RemoveObserver(this);
|
||||
}
|
||||
|
||||
String redirect_url = parseJsonArgs (json_args);
|
||||
if (BraveRewardsNativeWorker.LEDGER_OK == error_code &&
|
||||
TextUtils.equals(action, ACTION_VALUE)) {
|
||||
|
||||
//wallet is verified: redirect to chrome://rewards for now
|
||||
if (TextUtils.isEmpty(redirect_url)) {
|
||||
redirect_url = BraveActivity.REWARDS_SETTINGS_URL;
|
||||
}
|
||||
mBraveExternalNavigationHandler.
|
||||
clobberCurrentTabWithFallbackUrl (redirect_url,
|
||||
mExternalNavigationParams);
|
||||
|
||||
// temporary: open Rewards Panel to show wallet transition state.
|
||||
// remove this step once settings activity has this info
|
||||
BraveActivity.getBraveActivity().openRewardsPanel();
|
||||
ReleaseDependencies();
|
||||
}
|
||||
else {
|
||||
ShowErrorMessageBox(error_code);
|
||||
}
|
||||
}
|
||||
|
||||
private String parseJsonArgs(String json_args) {
|
||||
String redirect_url = "";
|
||||
try {
|
||||
JSONObject jsonObj = new JSONObject(json_args);
|
||||
if (jsonObj.has(UPHOLD_REDIRECT_URL_KEY)) {
|
||||
redirect_url = jsonObj.getString(UPHOLD_REDIRECT_URL_KEY);
|
||||
}
|
||||
}
|
||||
catch(JSONException e){ }
|
||||
return redirect_url;
|
||||
}
|
||||
|
||||
private void ReleaseDependencies() {
|
||||
mExternalNavigationParams = null;
|
||||
mBraveExternalNavigationHandler = null;
|
||||
}
|
||||
|
||||
private void ShowErrorMessageBox (int error_code) {
|
||||
String msg = "";
|
||||
String msg_title = "";
|
||||
Context context = ContextUtils.getApplicationContext();
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(
|
||||
BraveRewardsHelper.getChromeTabbedActivity(),
|
||||
R.style.Theme_Chromium_AlertDialog);
|
||||
|
||||
if (BraveRewardsNativeWorker.BAT_NOT_ALLOWED == error_code) {
|
||||
msg = context.getResources().getString(R.string.bat_not_allowed_in_region);
|
||||
msg_title = context.getResources().getString(R.string.bat_not_allowed_in_region_title);
|
||||
}
|
||||
else {
|
||||
msg = context.getResources().getString(R.string.wallet_verification_generic_error);
|
||||
msg_title = context.getResources().getString(R.string.wallet_verification_generic_error_title);
|
||||
}
|
||||
builder.setMessage(msg)
|
||||
.setTitle (msg_title)
|
||||
.setPositiveButton(R.string.ok, (DialogInterface dialog, int which)-> {
|
||||
mBraveExternalNavigationHandler.
|
||||
clobberCurrentTabWithFallbackUrl (UPHOLD_SUPPORT_URL,
|
||||
mExternalNavigationParams);
|
||||
})
|
||||
.setOnDismissListener((DialogInterface dialog)-> {
|
||||
ReleaseDependencies();
|
||||
});
|
||||
|
||||
AlertDialog dlg = builder.create();
|
||||
dlg.show();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,150 @@
|
||||
/**
|
||||
* Copyright (c) 2020 The Brave Authors. All rights reserved.
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
* You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
*/
|
||||
package org.chromium.chrome.browser;
|
||||
|
||||
import android.app.AlertDialog;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.net.Uri;
|
||||
import android.text.TextUtils;
|
||||
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import org.chromium.base.ContextUtils;
|
||||
import org.chromium.chrome.R;
|
||||
import org.chromium.chrome.browser.BraveRewardsBalance;
|
||||
import org.chromium.chrome.browser.BraveRewardsHelper;
|
||||
import org.chromium.chrome.browser.BraveRewardsNativeWorker;
|
||||
import org.chromium.chrome.browser.BraveRewardsObserver;
|
||||
import org.chromium.chrome.browser.app.BraveActivity;
|
||||
import org.chromium.chrome.browser.externalnav.BraveExternalNavigationHandler;
|
||||
import org.chromium.components.external_intents.ExternalNavigationParams;
|
||||
|
||||
import java.util.Locale;
|
||||
|
||||
// Used from org.chromium.chrome.browser.externalnav
|
||||
public class BraveWalletProvider implements BraveRewardsObserver {
|
||||
public static final String ACTION_VALUE = "authorization";
|
||||
|
||||
public static final String REDIRECT_URL_KEY = "redirect_url";
|
||||
|
||||
public static final String UPHOLD_REDIRECT_URL = "rewards://uphold";
|
||||
public static final String UPHOLD_SUPPORT_URL = "http://uphold.com/en/brave/support";
|
||||
public static final String UPHOLD_ORIGIN_URL = "http://uphold.com";
|
||||
|
||||
public static final String BITFLYER_REDIRECT_URL = "rewards://bitflyer";
|
||||
|
||||
// Wallet types
|
||||
public static final String UPHOLD = "uphold";
|
||||
public static final String BITFLYER = "bitflyer";
|
||||
|
||||
private static int UNKNOWN_ERROR_CODE = -1;
|
||||
|
||||
private ExternalNavigationParams mExternalNavigationParams;
|
||||
private BraveExternalNavigationHandler mBraveExternalNavigationHandler;
|
||||
private BraveRewardsNativeWorker rewardsNativeProxy;
|
||||
|
||||
public void completeWalletProviderVerification(
|
||||
ExternalNavigationParams params, BraveExternalNavigationHandler handler) {
|
||||
mExternalNavigationParams = params;
|
||||
mBraveExternalNavigationHandler = handler;
|
||||
rewardsNativeProxy = BraveRewardsNativeWorker.getInstance();
|
||||
|
||||
Uri uri = Uri.parse(params.getUrl().getSpec());
|
||||
rewardsNativeProxy.AddObserver(this);
|
||||
String path = uri.getPath();
|
||||
String query = uri.getQuery();
|
||||
|
||||
if (TextUtils.isEmpty(path) || TextUtils.isEmpty(query)) {
|
||||
rewardsNativeProxy.RemoveObserver(this);
|
||||
releaseDependencies();
|
||||
showErrorMessageBox(UNKNOWN_ERROR_CODE);
|
||||
return;
|
||||
}
|
||||
|
||||
// Ledger expects:
|
||||
// path: "/provider/path"
|
||||
// query: "?query"
|
||||
path = String.format(Locale.US, "/%s/%s", rewardsNativeProxy.getExternalWalletType(), path);
|
||||
query = String.format(Locale.US, "?%s", query);
|
||||
rewardsNativeProxy.ProcessRewardsPageUrl(path, query);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void OnProcessRewardsPageUrl(
|
||||
int errorCode, String walletType, String action, String jsonArgs) {
|
||||
// remove observer
|
||||
if (rewardsNativeProxy != null) {
|
||||
rewardsNativeProxy.RemoveObserver(this);
|
||||
}
|
||||
|
||||
String redirectUrl = parseJsonArgs(jsonArgs);
|
||||
if (BraveRewardsNativeWorker.LEDGER_OK == errorCode
|
||||
&& TextUtils.equals(action, ACTION_VALUE)) {
|
||||
// wallet is verified: redirect to chrome://rewards for now
|
||||
if (TextUtils.isEmpty(redirectUrl)) {
|
||||
redirectUrl = BraveActivity.REWARDS_SETTINGS_URL;
|
||||
}
|
||||
mBraveExternalNavigationHandler.clobberCurrentTabWithFallbackUrl(
|
||||
redirectUrl, mExternalNavigationParams);
|
||||
|
||||
// temporary: open Rewards Panel to show wallet transition state.
|
||||
// remove this step once settings activity has this info
|
||||
BraveActivity.getBraveActivity().openRewardsPanel();
|
||||
releaseDependencies();
|
||||
} else {
|
||||
showErrorMessageBox(errorCode);
|
||||
}
|
||||
}
|
||||
|
||||
private String parseJsonArgs(String jsonArgs) {
|
||||
String redirect_url = "";
|
||||
try {
|
||||
JSONObject jsonObj = new JSONObject(jsonArgs);
|
||||
if (jsonObj.has(REDIRECT_URL_KEY)) {
|
||||
redirect_url = jsonObj.getString(REDIRECT_URL_KEY);
|
||||
}
|
||||
} catch (JSONException e) {
|
||||
}
|
||||
return redirect_url;
|
||||
}
|
||||
|
||||
private void releaseDependencies() {
|
||||
mExternalNavigationParams = null;
|
||||
mBraveExternalNavigationHandler = null;
|
||||
}
|
||||
|
||||
private void showErrorMessageBox(int errorCode) {
|
||||
String message = "";
|
||||
String messageTitle = "";
|
||||
Context context = ContextUtils.getApplicationContext();
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(
|
||||
BraveRewardsHelper.getChromeTabbedActivity(), R.style.Theme_Chromium_AlertDialog);
|
||||
|
||||
if (BraveRewardsNativeWorker.BAT_NOT_ALLOWED == errorCode) {
|
||||
message = context.getResources().getString(R.string.bat_not_allowed_in_region);
|
||||
messageTitle =
|
||||
context.getResources().getString(R.string.bat_not_allowed_in_region_title);
|
||||
} else {
|
||||
message = context.getResources().getString(R.string.wallet_verification_generic_error);
|
||||
messageTitle = context.getResources().getString(
|
||||
R.string.wallet_verification_generic_error_title);
|
||||
}
|
||||
builder.setMessage(message)
|
||||
.setTitle(messageTitle)
|
||||
.setPositiveButton(R.string.ok,
|
||||
(DialogInterface dialog, int which) -> {
|
||||
mBraveExternalNavigationHandler.clobberCurrentTabWithFallbackUrl(
|
||||
UPHOLD_SUPPORT_URL, mExternalNavigationParams);
|
||||
})
|
||||
.setOnDismissListener((DialogInterface dialog) -> { releaseDependencies(); });
|
||||
|
||||
AlertDialog dialog = builder.create();
|
||||
dialog.show();
|
||||
}
|
||||
}
|
||||
+18
-11
@@ -7,7 +7,7 @@ package org.chromium.chrome.browser.externalnav;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
|
||||
import org.chromium.chrome.browser.BraveUphold;
|
||||
import org.chromium.chrome.browser.BraveWalletProvider;
|
||||
import org.chromium.components.external_intents.ExternalNavigationDelegate;
|
||||
import org.chromium.components.external_intents.ExternalNavigationHandler;
|
||||
import org.chromium.components.external_intents.ExternalNavigationHandler.OverrideUrlLoadingResult;
|
||||
@@ -15,7 +15,7 @@ import org.chromium.components.external_intents.ExternalNavigationParams;
|
||||
import org.chromium.url.GURL;
|
||||
|
||||
public class BraveExternalNavigationHandler extends ExternalNavigationHandler {
|
||||
private BraveUphold mBraveUphold;
|
||||
private BraveWalletProvider mBraveWalletProvider;
|
||||
|
||||
public BraveExternalNavigationHandler(ExternalNavigationDelegate delegate) {
|
||||
super(delegate);
|
||||
@@ -23,21 +23,28 @@ public class BraveExternalNavigationHandler extends ExternalNavigationHandler {
|
||||
|
||||
@Override
|
||||
public OverrideUrlLoadingResult shouldOverrideUrlLoading(ExternalNavigationParams params) {
|
||||
if (isUpholdOverride(params)) {
|
||||
CompleteUpholdVerification(params);
|
||||
if (isWalletProviderOverride(params)) {
|
||||
completeWalletProviderVerification(params);
|
||||
return OverrideUrlLoadingResult.forClobberingTab();
|
||||
}
|
||||
return super.shouldOverrideUrlLoading(params);
|
||||
}
|
||||
|
||||
private boolean isUpholdOverride(ExternalNavigationParams params) {
|
||||
if (!params.getUrl().getSpec().startsWith(BraveUphold.UPHOLD_REDIRECT_URL)) return false;
|
||||
return true;
|
||||
private boolean isWalletProviderOverride(ExternalNavigationParams params) {
|
||||
if (params.getUrl().getSpec().startsWith(BraveWalletProvider.UPHOLD_REDIRECT_URL)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (params.getUrl().getSpec().startsWith(BraveWalletProvider.BITFLYER_REDIRECT_URL)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
private void CompleteUpholdVerification(ExternalNavigationParams params) {
|
||||
mBraveUphold = new BraveUphold();
|
||||
mBraveUphold.CompleteUpholdVerification(params, this);
|
||||
private void completeWalletProviderVerification(ExternalNavigationParams params) {
|
||||
mBraveWalletProvider = new BraveWalletProvider();
|
||||
mBraveWalletProvider.completeWalletProviderVerification(params, this);
|
||||
}
|
||||
|
||||
@SuppressLint("VisibleForTests")
|
||||
@@ -56,4 +63,4 @@ public class BraveExternalNavigationHandler extends ExternalNavigationHandler {
|
||||
GURL browserFallbackGURL = new GURL(browserFallbackUrl);
|
||||
return clobberCurrentTab(browserFallbackGURL, params.getReferrerUrl());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -78,9 +78,9 @@
|
||||
android:textAlignment="center"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/verify_wallet_benefit_1"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/verify_wallet_benefits1"
|
||||
android:textSize="@dimen/verify_wallet_header3_font_size_land"
|
||||
android:layout_gravity="start"
|
||||
android:gravity="start"
|
||||
@@ -92,9 +92,9 @@
|
||||
android:paddingEnd="12dp"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/verify_wallet_benefit_2"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/verify_wallet_benefits2"
|
||||
android:textSize="@dimen/verify_wallet_header3_font_size_land"
|
||||
android:layout_gravity="start"
|
||||
android:gravity="start"
|
||||
@@ -106,9 +106,9 @@
|
||||
android:paddingEnd="12dp"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/verify_wallet_benefit_3"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/verify_wallet_benefits3"
|
||||
android:textSize="@dimen/verify_wallet_header3_font_size_land"
|
||||
android:layout_gravity="start"
|
||||
android:gravity="start"
|
||||
@@ -156,9 +156,9 @@
|
||||
android:layout_marginTop="@dimen/verify_wallet_margin2_land"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/verify_wallet_provider_note_txt"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/verify_wallet_uphold_note1"
|
||||
android:textSize="@dimen/verify_wallet_header4_font_size_land"
|
||||
android:layout_gravity="start"
|
||||
android:textAlignment="textStart"
|
||||
@@ -166,9 +166,9 @@
|
||||
android:layout_marginTop="@dimen/verify_wallet_margin3_land"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/verify_wallet_brave_note_txt"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/verify_wallet_brave_note1"
|
||||
android:textSize="@dimen/verify_wallet_header4_font_size_land"
|
||||
android:layout_gravity="start"
|
||||
android:textAlignment="textStart"
|
||||
|
||||
@@ -115,10 +115,9 @@
|
||||
android:contentDescription="@null"/>
|
||||
|
||||
<Button
|
||||
android:id="@+id/user_wallet_go_to_uphold"
|
||||
android:id="@+id/user_wallet_go_to_provider"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/user_wallet_goto_uphold"
|
||||
android:background="?android:attr/selectableItemBackground"
|
||||
android:textAlignment="textStart"
|
||||
android:textAllCaps="false"
|
||||
@@ -146,4 +145,4 @@
|
||||
android:padding="12dp">
|
||||
</Button>
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
||||
@@ -48,6 +48,7 @@
|
||||
android:textStyle="bold" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/verify_wallet_benefit_1"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="start"
|
||||
@@ -57,11 +58,11 @@
|
||||
android:gravity="start"
|
||||
android:paddingStart="12dp"
|
||||
android:paddingEnd="12dp"
|
||||
android:text="@string/verify_wallet_benefits1"
|
||||
android:textColor="@android:color/white"
|
||||
android:textSize="@dimen/verify_wallet_header3_font_size"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/verify_wallet_benefit_2"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="start"
|
||||
@@ -71,11 +72,11 @@
|
||||
android:gravity="start"
|
||||
android:paddingStart="12dp"
|
||||
android:paddingEnd="12dp"
|
||||
android:text="@string/verify_wallet_benefits2"
|
||||
android:textColor="@android:color/white"
|
||||
android:textSize="@dimen/verify_wallet_header3_font_size"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/verify_wallet_benefit_3"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="start"
|
||||
@@ -85,7 +86,6 @@
|
||||
android:gravity="start"
|
||||
android:paddingStart="12dp"
|
||||
android:paddingEnd="12dp"
|
||||
android:text="@string/verify_wallet_benefits3"
|
||||
android:textColor="@android:color/white"
|
||||
android:textSize="@dimen/verify_wallet_header3_font_size"/>
|
||||
|
||||
@@ -118,21 +118,21 @@
|
||||
android:textSize="@dimen/verify_wallet_header4_font_size"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/verify_wallet_provider_note_txt"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="start"
|
||||
android:layout_marginTop="@dimen/verify_wallet_margin3"
|
||||
android:text="@string/verify_wallet_uphold_note1"
|
||||
android:textAlignment="textStart"
|
||||
android:textColor="@color/user_wallet_dimmed_note"
|
||||
android:textSize="@dimen/verify_wallet_header4_font_size"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/verify_wallet_brave_note_txt"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="start"
|
||||
android:layout_marginTop="@dimen/verify_wallet_margin3"
|
||||
android:text="@string/verify_wallet_brave_note1"
|
||||
android:textAlignment="textStart"
|
||||
android:textColor="@color/user_wallet_dimmed_note"
|
||||
android:textSize="@dimen/verify_wallet_header4_font_size"/>
|
||||
|
||||
Reference in New Issue
Block a user