Skip to content

Commit

Permalink
Ads Info UI
Browse files Browse the repository at this point in the history
* Added Ads info UI

* Resolved linter issues in touched files
  • Loading branch information
ryanml authored and tmancey committed Feb 27, 2019
1 parent 1fc093e commit 1bdec2c
Show file tree
Hide file tree
Showing 30 changed files with 731 additions and 258 deletions.
2 changes: 1 addition & 1 deletion DEPS
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ deps = {
"vendor/bat-native-ads": "https://github.com/brave-intl/bat-native-ads.git@640889defd2c80317c5ca0018dd29eeb3071628b",
"vendor/bat-native-usermodel": "https://github.com/brave-intl/bat-native-usermodel.git@c3b6111aa862c5c452c84be8a225d5f1df32b284",
"vendor/challenge_bypass_ristretto_ffi": "https://github.com/brave-intl/challenge-bypass-ristretto-ffi.git@f394d74e6c2c96455279b3553c22d95b4e04a4e3",
"vendor/bat-native-confirmations": "https://github.com/brave-intl/bat-native-confirmations.git@9a2126db91b28f921d349eda7e9fa541b5e296cb",
"vendor/bat-native-confirmations": "https://github.com/brave-intl/bat-native-confirmations.git@211e7672071c99d85f402908f8afe1d046a31b0d",
}

hooks = [
Expand Down
165 changes: 105 additions & 60 deletions browser/ui/webui/brave_rewards_ui.cc
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,8 @@ namespace {

// The handler for Javascript messages for Brave about: pages
class RewardsDOMHandler : public WebUIMessageHandler,
public brave_rewards::RewardsNotificationServiceObserver,
public brave_rewards::RewardsServiceObserver {
public brave_rewards::RewardsNotificationServiceObserver,
public brave_rewards::RewardsServiceObserver {
public:
RewardsDOMHandler();
~RewardsDOMHandler() override;
Expand Down Expand Up @@ -102,15 +102,21 @@ class RewardsDOMHandler : public WebUIMessageHandler,
void OnIsWalletCreated(bool created);
void GetPendingContributionsTotal(const base::ListValue* args);
void OnGetPendingContributionsTotal(double amount);
void OnContentSiteUpdated(brave_rewards::RewardsService* rewards_service) override;
void OnContentSiteUpdated(
brave_rewards::RewardsService* rewards_service) override;
void GetAddressesForPaymentId(const base::ListValue* args);
void GetConfirmationsHistory(const base::ListValue* args);

void OnConfirmationsHistory(int total_viewed, double estimated_earnings);

// RewardsServiceObserver implementation
void OnWalletInitialized(brave_rewards::RewardsService* rewards_service,
int result) override;
void OnWalletProperties(brave_rewards::RewardsService* rewards_service,
void OnWalletProperties(
brave_rewards::RewardsService* rewards_service,
int error_code,
std::unique_ptr<brave_rewards::WalletProperties> wallet_properties) override;
std::unique_ptr<brave_rewards::WalletProperties>
wallet_properties) override;
void OnGrant(brave_rewards::RewardsService* rewards_service,
unsigned int error_code,
brave_rewards::Grant result) override;
Expand All @@ -130,8 +136,9 @@ class RewardsDOMHandler : public WebUIMessageHandler,
const std::string& viewing_id,
const std::string& category,
const std::string& probi) override;
void OnRecurringDonationUpdated(brave_rewards::RewardsService* rewards_service,
brave_rewards::ContentSiteList) override;
void OnRecurringDonationUpdated(
brave_rewards::RewardsService* rewards_service,
brave_rewards::ContentSiteList) override;
void OnCurrentTips(brave_rewards::RewardsService* rewards_service,
brave_rewards::ContentSiteList) override;

Expand All @@ -147,6 +154,9 @@ class RewardsDOMHandler : public WebUIMessageHandler,
brave_rewards::RewardsService* rewards_service,
brave_rewards::ContentSiteList list) override;

void OnConfirmationsHistoryChanged(
brave_rewards::RewardsService* rewards_service) override;

// RewardsNotificationsServiceObserver implementation
void OnNotificationAdded(
brave_rewards::RewardsNotificationService* rewards_notification_service,
Expand Down Expand Up @@ -184,79 +194,84 @@ RewardsDOMHandler::~RewardsDOMHandler() {
void RewardsDOMHandler::RegisterMessages() {
web_ui()->RegisterMessageCallback("brave_rewards.createWalletRequested",
base::BindRepeating(&RewardsDOMHandler::HandleCreateWalletRequested,
base::Unretained(this)));
base::Unretained(this)));
web_ui()->RegisterMessageCallback("brave_rewards.getWalletProperties",
base::BindRepeating(&RewardsDOMHandler::GetWalletProperties,
base::Unretained(this)));
base::Unretained(this)));
web_ui()->RegisterMessageCallback("brave_rewards.getGrants",
base::BindRepeating(&RewardsDOMHandler::GetGrants,
base::Unretained(this)));
base::BindRepeating(&RewardsDOMHandler::GetGrants,
base::Unretained(this)));
web_ui()->RegisterMessageCallback("brave_rewards.getGrantCaptcha",
base::BindRepeating(&RewardsDOMHandler::GetGrantCaptcha,
base::Unretained(this)));
base::BindRepeating(&RewardsDOMHandler::GetGrantCaptcha,
base::Unretained(this)));
web_ui()->RegisterMessageCallback("brave_rewards.getWalletPassphrase",
base::BindRepeating(&RewardsDOMHandler::GetWalletPassphrase,
base::Unretained(this)));
base::BindRepeating(&RewardsDOMHandler::GetWalletPassphrase,
base::Unretained(this)));
web_ui()->RegisterMessageCallback("brave_rewards.recoverWallet",
base::BindRepeating(&RewardsDOMHandler::RecoverWallet,
base::Unretained(this)));
base::BindRepeating(&RewardsDOMHandler::RecoverWallet,
base::Unretained(this)));
web_ui()->RegisterMessageCallback("brave_rewards.solveGrantCaptcha",
base::BindRepeating(&RewardsDOMHandler::SolveGrantCaptcha,
base::Unretained(this)));
base::BindRepeating(&RewardsDOMHandler::SolveGrantCaptcha,
base::Unretained(this)));
web_ui()->RegisterMessageCallback("brave_rewards.getReconcileStamp",
base::BindRepeating(&RewardsDOMHandler::GetReconcileStamp,
base::Unretained(this)));
base::BindRepeating(&RewardsDOMHandler::GetReconcileStamp,
base::Unretained(this)));
web_ui()->RegisterMessageCallback("brave_rewards.getAddresses",
base::BindRepeating(&RewardsDOMHandler::GetAddresses,
base::Unretained(this)));
base::BindRepeating(&RewardsDOMHandler::GetAddresses,
base::Unretained(this)));
web_ui()->RegisterMessageCallback("brave_rewards.saveSetting",
base::BindRepeating(&RewardsDOMHandler::SaveSetting,
base::Unretained(this)));
base::BindRepeating(&RewardsDOMHandler::SaveSetting,
base::Unretained(this)));
web_ui()->RegisterMessageCallback("brave_rewards.getBalanceReports",
base::BindRepeating(&RewardsDOMHandler::GetBalanceReports,
base::Unretained(this)));
base::BindRepeating(&RewardsDOMHandler::GetBalanceReports,
base::Unretained(this)));
web_ui()->RegisterMessageCallback("brave_rewards.excludePublisher",
base::BindRepeating(&RewardsDOMHandler::ExcludePublisher,
base::Unretained(this)));
base::BindRepeating(&RewardsDOMHandler::ExcludePublisher,
base::Unretained(this)));
web_ui()->RegisterMessageCallback("brave_rewards.restorePublishers",
base::BindRepeating(&RewardsDOMHandler::RestorePublishers,
base::Unretained(this)));
base::BindRepeating(&RewardsDOMHandler::RestorePublishers,
base::Unretained(this)));
web_ui()->RegisterMessageCallback("brave_rewards.checkWalletExistence",
base::BindRepeating(&RewardsDOMHandler::WalletExists,
base::Unretained(this)));
base::BindRepeating(&RewardsDOMHandler::WalletExists,
base::Unretained(this)));
web_ui()->RegisterMessageCallback("brave_rewards.getContributionAmount",
base::BindRepeating(&RewardsDOMHandler::GetContributionAmount,
base::Unretained(this)));
base::BindRepeating(&RewardsDOMHandler::GetContributionAmount,
base::Unretained(this)));
web_ui()->RegisterMessageCallback("brave_rewards.removeRecurring",
base::BindRepeating(&RewardsDOMHandler::RemoveRecurring,
base::Unretained(this)));
web_ui()->RegisterMessageCallback("brave_rewards.updateRecurringDonationsList",
base::BindRepeating(&RewardsDOMHandler::UpdateRecurringDonationsList,
base::Unretained(this)));
base::BindRepeating(&RewardsDOMHandler::RemoveRecurring,
base::Unretained(this)));
web_ui()->RegisterMessageCallback(
"brave_rewards.updateRecurringDonationsList",
base::BindRepeating(&RewardsDOMHandler::UpdateRecurringDonationsList,
base::Unretained(this)));
web_ui()->RegisterMessageCallback("brave_rewards.updateTipsList",
base::BindRepeating(&RewardsDOMHandler::UpdateTipsList,
base::Unretained(this)));
base::BindRepeating(&RewardsDOMHandler::UpdateTipsList,
base::Unretained(this)));
web_ui()->RegisterMessageCallback("brave_rewards.getContributionList",
base::BindRepeating(&RewardsDOMHandler::GetContributionList,
base::Unretained(this)));
base::BindRepeating(&RewardsDOMHandler::GetContributionList,
base::Unretained(this)));
web_ui()->RegisterMessageCallback("brave_rewards.checkImported",
base::BindRepeating(&RewardsDOMHandler::CheckImported,
base::Unretained(this)));
base::BindRepeating(&RewardsDOMHandler::CheckImported,
base::Unretained(this)));
web_ui()->RegisterMessageCallback("brave_rewards.getAdsData",
base::BindRepeating(&RewardsDOMHandler::GetAdsData,
base::Unretained(this)));
base::BindRepeating(&RewardsDOMHandler::GetAdsData,
base::Unretained(this)));
web_ui()->RegisterMessageCallback("brave_rewards.saveAdsSetting",
base::BindRepeating(&RewardsDOMHandler::SaveAdsSetting,
base::Unretained(this)));
base::BindRepeating(&RewardsDOMHandler::SaveAdsSetting,
base::Unretained(this)));
web_ui()->RegisterMessageCallback("brave_rewards.setBackupCompleted",
base::BindRepeating(&RewardsDOMHandler::SetBackupCompleted,
base::Unretained(this)));
web_ui()->RegisterMessageCallback("brave_rewards.getPendingContributionsTotal",
base::BindRepeating(&RewardsDOMHandler::GetPendingContributionsTotal,
base::Unretained(this)));
base::BindRepeating(&RewardsDOMHandler::SetBackupCompleted,
base::Unretained(this)));
web_ui()->RegisterMessageCallback(
"brave_rewards.getPendingContributionsTotal",
base::BindRepeating(&RewardsDOMHandler::GetPendingContributionsTotal,
base::Unretained(this)));
web_ui()->RegisterMessageCallback("brave_rewards.getAddressesForPaymentId",
base::BindRepeating(&RewardsDOMHandler::GetAddressesForPaymentId,
base::Unretained(this)));
base::BindRepeating(&RewardsDOMHandler::GetAddressesForPaymentId,
base::Unretained(this)));
web_ui()->RegisterMessageCallback("brave_rewards.getConfirmationsHistory",
base::BindRepeating(&RewardsDOMHandler::GetConfirmationsHistory,
base::Unretained(this)));
}

void RewardsDOMHandler::Init() {
Expand Down Expand Up @@ -392,8 +407,8 @@ void RewardsDOMHandler::OnGetAutoContributeProps(
}

values.SetDictionary("ui", std::move(ui_values));
// TODO this needs to be moved out of this flow, because
// now we set this values every minute
// TODO(Nejc Zdovc): this needs to be moved out of this flow, because now we
// set this values every minute
web_ui()->CallJavascriptFunctionUnsafe(
"brave_rewards.initAutoContributeSettings", values);

Expand Down Expand Up @@ -802,7 +817,8 @@ void RewardsDOMHandler::OnCurrentTips(
publishers->Append(std::move(publisher));
}

web_ui()->CallJavascriptFunctionUnsafe("brave_rewards.currentTips", *publishers);
web_ui()->CallJavascriptFunctionUnsafe("brave_rewards.currentTips",
*publishers);
}
}

Expand Down Expand Up @@ -946,6 +962,35 @@ void RewardsDOMHandler::GetAddressesForPaymentId(
}
}

void RewardsDOMHandler::GetConfirmationsHistory(
const base::ListValue* args) {
rewards_service_->GetConfirmationsHistory(base::Bind(
&RewardsDOMHandler::OnConfirmationsHistory,
weak_factory_.GetWeakPtr()));
}

void RewardsDOMHandler::OnConfirmationsHistory(
int total_viewed,
double estimated_earnings) {
if (web_ui()->CanCallJavascript()) {
base::DictionaryValue history;

history.SetInteger("adsTotalPages", total_viewed);
history.SetDouble("adsEstimatedEarnings", estimated_earnings);

web_ui()->CallJavascriptFunctionUnsafe(
"brave_rewards.confirmationsHistory", history);
}
}

void RewardsDOMHandler::OnConfirmationsHistoryChanged(
brave_rewards::RewardsService* rewards_service) {
if (web_ui()->CanCallJavascript()) {
web_ui()->CallJavascriptFunctionUnsafe(
"brave_rewards.confirmationsHistoryChanged");
}
}

} // namespace

BraveRewardsUI::BraveRewardsUI(content::WebUI* web_ui, const std::string& name)
Expand Down
6 changes: 5 additions & 1 deletion components/brave_rewards/browser/rewards_service.h
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ using GetReconcileStampCallback = base::Callback<void(uint64_t)>;
using IsWalletCreatedCallback = base::Callback<void(bool)>;
using GetPendingContributionsTotalCallback = base::Callback<void(double)>;
using GetRewardsMainEnabledCallback = base::Callback<void(bool)>;
using ConfirmationsHistoryCallback = base::Callback<void(int, double)>;

class RewardsService : public KeyedService {
public:
Expand Down Expand Up @@ -165,12 +166,15 @@ class RewardsService : public KeyedService {
const GetPendingContributionsTotalCallback& callback) = 0;
virtual void GetRewardsMainEnabled(
const GetRewardsMainEnabledCallback& callback) const = 0;
// TODO remove this hack when ads is moved to the same process as ledger
// TODO(Terry Mancey): remove this hack when ads is moved to the same process
// as ledger
virtual void SetCatalogIssuers(const std::string& json) = 0;
virtual void AdSustained(const std::string& json) = 0;

virtual void GetAddressesForPaymentId(
const GetAddressesCallback& callback) = 0;
virtual void GetConfirmationsHistory(
brave_rewards::ConfirmationsHistoryCallback callback) = 0;

void AddObserver(RewardsServiceObserver* observer);
void RemoveObserver(RewardsServiceObserver* observer);
Expand Down
69 changes: 69 additions & 0 deletions components/brave_rewards/browser/rewards_service_impl.cc
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
#include "base/files/important_file_writer.h"
#include "base/guid.h"
#include "base/i18n/time_formatting.h"
#include "base/time/time.h"
#include "base/logging.h"
#include "base/sequenced_task_runner.h"
#include "base/strings/string_number_conversions.h"
Expand All @@ -31,6 +32,7 @@
#include "bat/ledger/media_publisher_info.h"
#include "bat/ledger/publisher_info.h"
#include "bat/ledger/wallet_info.h"
#include "bat/ledger/transactions_info.h"
#include "brave/browser/ui/webui/brave_rewards_source.h"
#include "brave/components/brave_rewards/common/pref_names.h"
#include "brave/common/pref_names.h"
Expand Down Expand Up @@ -1425,6 +1427,28 @@ void RewardsServiceImpl::SetCatalogIssuers(const std::string& json) {
bat_ledger_->SetCatalogIssuers(json);
}

std::pair<uint64_t, uint64_t> RewardsServiceImpl::GetEarningsRange() {
auto one_day_in_seconds = base::Time::kMicrosecondsPerDay /
base::Time::kMicrosecondsPerSecond;

auto now = base::Time::Now();
base::Time::Exploded exploded;
now.LocalExplode(&exploded);

uint64_t offset_in_seconds;
if (exploded.day_of_month > 5) {
offset_in_seconds = (exploded.day_of_month - 5) * one_day_in_seconds;
} else {
offset_in_seconds = exploded.day_of_month * one_day_in_seconds;
}

auto now_in_seconds = (now - base::Time()).InSeconds();
uint64_t from_timestamp = now_in_seconds - offset_in_seconds;
uint64_t to_timestamp = now_in_seconds;

return std::make_pair(from_timestamp, to_timestamp);
}

void RewardsServiceImpl::AdSustained(const std::string& json) {
if (!Connected()) {
return;
Expand All @@ -1439,6 +1463,51 @@ void RewardsServiceImpl::SetConfirmationsIsReady(const bool is_ready) {
ads_service->SetConfirmationsIsReady(is_ready);
}

void RewardsServiceImpl::ConfirmationsTransactionHistoryDidChange() {
for (auto& observer : observers_)
observer.OnConfirmationsHistoryChanged(this);
}

void RewardsServiceImpl::GetConfirmationsHistory(
brave_rewards::ConfirmationsHistoryCallback callback) {
if (!Connected()) {
return;
}

auto earnings_range = GetEarningsRange();

bat_ledger_->GetConfirmationsHistory(
earnings_range.first,
earnings_range.second,
base::BindOnce(&RewardsServiceImpl::OnGetConfirmationsHistory,
AsWeakPtr(),
std::move(callback)));
}

void RewardsServiceImpl::OnGetConfirmationsHistory(
brave_rewards::ConfirmationsHistoryCallback callback,
const std::string& transactions) {
std::unique_ptr<ledger::TransactionsInfo> info;
if (!transactions.empty()) {
info.reset(new ledger::TransactionsInfo());
info->FromJson(transactions);
}

if (!info) {
callback.Run(0, 0.0);
}

int total_viewed = info->transactions.size();
double estimated_earnings = 0.0;
if (total_viewed > 0) {
for (const auto& transaction : info->transactions) {
estimated_earnings += transaction.estimated_redemption_value;
}
}

callback.Run(total_viewed, estimated_earnings);
}

void RewardsServiceImpl::SaveState(const std::string& name,
const std::string& value,
ledger::OnSaveCallback callback) {
Expand Down
Loading

0 comments on commit 1bdec2c

Please sign in to comment.