Skip to content

Commit d9556e5

Browse files
author
Jason Sadler
committed
1 parent 4d91fb7 commit d9556e5

File tree

15 files changed

+182
-61
lines changed

15 files changed

+182
-61
lines changed

browser/ui/webui/brave_rewards_ui.cc

+9-4
Original file line numberDiff line numberDiff line change
@@ -598,10 +598,15 @@ void RewardsDOMHandler::OnGetAddresses(
598598
func_name == "addresses" || func_name == "addressesForPaymentId")) {
599599
base::DictionaryValue data;
600600
data.SetString("BAT", addresses.at("BAT"));
601-
data.SetString("BTC", addresses.at("BTC"));
602-
data.SetString("ETH", addresses.at("ETH"));
603-
data.SetString("LTC", addresses.at("LTC"));
604-
601+
if (addresses.count("BTC") == 1) {
602+
data.SetString("BTC", addresses.at("BTC"));
603+
}
604+
if (addresses.count("ETH") == 1) {
605+
data.SetString("ETH", addresses.at("ETH"));
606+
}
607+
if (addresses.count("LTC") == 1) {
608+
data.SetString("LTC", addresses.at("LTC"));
609+
}
605610
web_ui()->CallJavascriptFunctionUnsafe("brave_rewards." + func_name, data);
606611
}
607612
}

components/brave_rewards/browser/rewards_service_browsertest.cc

+57
Original file line numberDiff line numberDiff line change
@@ -1409,3 +1409,60 @@ IN_PROC_BROWSER_TEST_F(BraveRewardsBrowserTest,
14091409
// Stop observing the Rewards service
14101410
rewards_service_->RemoveObserver(this);
14111411
}
1412+
1413+
IN_PROC_BROWSER_TEST_F(BraveRewardsBrowserTest, AddFunds) {
1414+
rewards_service_->AddObserver(this);
1415+
EnableRewards();
1416+
content::EvalJsResult js_result = EvalJs(
1417+
contents(),
1418+
"document.querySelector(\"[data-test-id='panel-add-funds']\").click();"
1419+
"new Promise((resolve) => {"
1420+
"var count = 10;"
1421+
"var interval = setInterval(function() {"
1422+
" if (count === 0) {"
1423+
" clearInterval(interval);"
1424+
" resolve(false);"
1425+
" } else {"
1426+
" count -= 1;"
1427+
" }"
1428+
" const addresses = document.querySelector("
1429+
" \"[data-test-id='addresses']\");"
1430+
" if (addresses) {"
1431+
" clearInterval(interval);"
1432+
" resolve(document.querySelectorAll(\"[data-test-id='single-address']\")"
1433+
" .length === 4);"
1434+
" }"
1435+
"}, 500);});",
1436+
content::EXECUTE_SCRIPT_DEFAULT_OPTIONS,
1437+
content::ISOLATED_WORLD_ID_CONTENT_END);
1438+
ASSERT_TRUE(js_result.ExtractBool());
1439+
}
1440+
1441+
IN_PROC_BROWSER_TEST_F(BraveRewardsBrowserTest, AddFundsCountryLimited) {
1442+
rewards_service_->SetCurrentCountry("JP");
1443+
rewards_service_->AddObserver(this);
1444+
EnableRewards();
1445+
content::EvalJsResult js_result = EvalJs(
1446+
contents(),
1447+
"document.querySelector(\"[data-test-id='panel-add-funds']\").click();"
1448+
"new Promise((resolve) => {"
1449+
"var count = 10;"
1450+
"var interval = setInterval(function() {"
1451+
" if (count === 0) {"
1452+
" clearInterval(interval);"
1453+
" resolve(false);"
1454+
" } else {"
1455+
" count -= 1;"
1456+
" }"
1457+
" const addresses = document.querySelector("
1458+
" \"[data-test-id='addresses']\");"
1459+
" if (addresses) {"
1460+
" clearInterval(interval);"
1461+
" resolve(document.querySelectorAll(\"[data-test-id='single-address']\")"
1462+
" .length === 1);"
1463+
" }"
1464+
"}, 500);});",
1465+
content::EXECUTE_SCRIPT_DEFAULT_OPTIONS,
1466+
content::ISOLATED_WORLD_ID_CONTENT_END);
1467+
ASSERT_TRUE(js_result.ExtractBool());
1468+
}

components/brave_rewards/browser/rewards_service_impl.cc

+44-2
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55

66
#include "brave/components/brave_rewards/browser/rewards_service_impl.h"
77

8+
#include <stdint.h>
9+
810
#include <algorithm>
911
#include <functional>
1012
#include <limits>
@@ -55,6 +57,7 @@
5557
#include "chrome/browser/browser_process_impl.h"
5658
#include "chrome/browser/favicon/favicon_service_factory.h"
5759
#include "chrome/browser/profiles/profile.h"
60+
#include "components/country_codes/country_codes.h"
5861
#include "components/favicon/core/favicon_service.h"
5962
#include "components/favicon_base/favicon_types.h"
6063
#include "components/prefs/pref_service.h"
@@ -1528,8 +1531,35 @@ void RewardsServiceImpl::GetAddresses(const GetAddressesCallback& callback) {
15281531
return;
15291532
}
15301533

1531-
bat_ledger_->GetAddresses(base::BindOnce(&RewardsServiceImpl::OnGetAddresses,
1532-
AsWeakPtr(), callback));
1534+
bat_ledger_->GetAddressesLimitedCountries(
1535+
base::BindOnce(&RewardsServiceImpl::OnGetAddressesLimitedCountries,
1536+
AsWeakPtr(), callback));
1537+
}
1538+
1539+
void RewardsServiceImpl::OnGetAddressesLimitedCountries(
1540+
const GetAddressesCallback& callback,
1541+
const std::vector<std::string>& country_chars) {
1542+
int32_t current_code = country_codes::GetCountryIDFromPrefs(
1543+
profile_->GetPrefs());
1544+
if (!current_country_for_test_.empty()) {
1545+
current_code = country_codes::CountryCharsToCountryID(
1546+
current_country_for_test_.at(0), current_country_for_test_.at(1));
1547+
}
1548+
1549+
1550+
for (const std::string& country_code : country_chars) {
1551+
if (country_code.size() == 2 &&
1552+
current_code == country_codes::CountryCharsToCountryID(
1553+
country_code.at(0), country_code.at(1))) {
1554+
bat_ledger_->GetAddresses(true,
1555+
base::BindOnce(&RewardsServiceImpl::OnGetAddresses,
1556+
AsWeakPtr(), callback));
1557+
return;
1558+
}
1559+
}
1560+
bat_ledger_->GetAddresses(false,
1561+
base::BindOnce(&RewardsServiceImpl::OnGetAddresses,
1562+
AsWeakPtr(), callback));
15331563
}
15341564

15351565
void RewardsServiceImpl::SetRewardsMainEnabled(bool enabled) {
@@ -2592,6 +2622,13 @@ void RewardsServiceImpl::HandleFlags(const std::string& options) {
25922622

25932623
SetShortRetries(short_retries);
25942624
}
2625+
2626+
if (name == "current-country") {
2627+
const std::string& current_country_(base::ToUpperASCII(value));
2628+
if (!current_country_.empty() && current_country_.size() == 2) {
2629+
SetCurrentCountry(current_country_);
2630+
}
2631+
}
25952632
}
25962633
}
25972634

@@ -2701,6 +2738,11 @@ void RewardsServiceImpl::SetShortRetries(bool short_retries) {
27012738
bat_ledger_service_->SetShortRetries(short_retries);
27022739
}
27032740

2741+
void RewardsServiceImpl::SetCurrentCountry(
2742+
const std::string& current_country_) {
2743+
current_country_for_test_ = current_country_;
2744+
}
2745+
27042746
ledger::Result SavePendingContributionOnFileTaskRunner(
27052747
PublisherInfoDatabase* backend,
27062748
const ledger::PendingContributionList& list) {

components/brave_rewards/browser/rewards_service_impl.h

+5
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,7 @@ class RewardsServiceImpl : public RewardsService,
195195
void GetReconcileTime(const GetReconcileTimeCallback& callback);
196196
void SetShortRetries(bool short_retries);
197197
void GetShortRetries(const GetShortRetriesCallback& callback);
198+
void SetCurrentCountry(const std::string& current_country_);
198199

199200
void GetAutoContributeProps(
200201
const GetAutoContributePropsCallback& callback) override;
@@ -469,6 +470,9 @@ class RewardsServiceImpl : public RewardsService,
469470
const base::flat_map<std::string, std::string>& json_reports);
470471
void OnGetCurrentBalanceReport(
471472
bool success, const std::string& json_report);
473+
void OnGetAddressesLimitedCountries(
474+
const GetAddressesCallback& callback,
475+
const std::vector<std::string>& country_chars);
472476
void OnGetAddresses(
473477
const GetAddressesCallback& callback,
474478
const base::flat_map<std::string, std::string>& addresses);
@@ -521,6 +525,7 @@ class RewardsServiceImpl : public RewardsService,
521525
uint32_t next_timer_id_;
522526

523527
GetTestResponseCallback test_response_callback_;
528+
std::string current_country_for_test_;
524529

525530
DISALLOW_COPY_AND_ASSIGN(RewardsServiceImpl);
526531
};

components/brave_rewards/resources/ui/components/pageWallet.tsx

+2-1
Original file line numberDiff line numberDiff line change
@@ -315,7 +315,8 @@ class PageWallet extends React.Component<Props, State> {
315315
{
316316
name: getLocale('panelAddFunds'),
317317
action: this.onModalAddFundsToggle,
318-
icon: <WalletAddIcon />
318+
icon: <WalletAddIcon />,
319+
testId: 'panel-add-funds'
319320
}
320321
]}
321322
onSettingsClick={this.onModalBackupOpen}

components/brave_rewards/resources/ui/utils.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ export const getAddresses = (addresses?: Record<Rewards.AddressesType, Rewards.A
9595

9696
sortedArray.forEach((type: Rewards.AddressesType) => {
9797
const item: Rewards.Address = addresses[type]
98-
if (item) {
98+
if (item && item.address) {
9999
result.push({
100100
type,
101101
qr: item.qr,

components/services/bat_ledger/bat_ledger_impl.cc

+10-2
Original file line numberDiff line numberDiff line change
@@ -233,8 +233,16 @@ void BatLedgerImpl::SolveGrantCaptcha(const std::string& solution,
233233
ledger_->SolveGrantCaptcha(solution, promotion_id);
234234
}
235235

236-
void BatLedgerImpl::GetAddresses(GetAddressesCallback callback) {
237-
std::move(callback).Run(mojo::MapToFlatMap(ledger_->GetAddresses()));
236+
void BatLedgerImpl::GetAddressesLimitedCountries(
237+
GetAddressesLimitedCountriesCallback callback) {
238+
std::move(callback).Run(ledger_->GetAddressesLimitedCountries());
239+
}
240+
241+
void BatLedgerImpl::GetAddresses(
242+
bool limit_addresses,
243+
GetAddressesCallback callback) {
244+
std::move(callback).Run(mojo::MapToFlatMap(
245+
ledger_->GetAddresses(limit_addresses)));
238246
}
239247

240248
void BatLedgerImpl::GetBATAddress(GetBATAddressCallback callback) {

components/services/bat_ledger/bat_ledger_impl.h

+5-1
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,11 @@ class BatLedgerImpl : public mojom::BatLedger,
8484
const std::string& solution,
8585
const std::string& promotionId) override;
8686

87-
void GetAddresses(GetAddressesCallback callback) override;
87+
void GetAddressesLimitedCountries(
88+
GetAddressesLimitedCountriesCallback callback) override;
89+
void GetAddresses(
90+
bool limit_addresses,
91+
GetAddressesCallback callback) override;
8892
void GetBATAddress(GetBATAddressCallback callback) override;
8993
void GetBTCAddress(GetBTCAddressCallback callback) override;
9094
void GetETHAddress(GetETHAddressCallback callback) override;

components/services/bat_ledger/public/interfaces/bat_ledger.mojom

+2-1
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,8 @@ interface BatLedger {
6363
RecoverWallet(string passPhrase);
6464
SolveGrantCaptcha(string solution, string promotionId);
6565

66-
GetAddresses() => (map<string, string> addresses);
66+
GetAddressesLimitedCountries() => (array<string> limited_countries);
67+
GetAddresses(bool limit_addresses) => (map<string, string> addresses);
6768
GetBATAddress() => (string address);
6869
GetBTCAddress() => (string address);
6970
GetETHAddress() => (string address);

0 commit comments

Comments
 (0)