From 7518fda9ce186d3ba99c3453288e32fca8e7c9a9 Mon Sep 17 00:00:00 2001 From: NejcZdovc Date: Fri, 6 Mar 2020 14:53:00 +0100 Subject: [PATCH] Simplifies tip flow from service to shared lib Resolves https://github.com/brave/brave-browser/issues/8403 --- .../brave_rewards/browser/rewards_service.h | 1 + .../browser/rewards_service_impl.cc | 77 ++++++++----------- .../browser/rewards_service_impl.h | 23 +++--- .../services/bat_ledger/bat_ledger_impl.cc | 45 ++++++++--- .../services/bat_ledger/bat_ledger_impl.h | 18 +++-- .../public/interfaces/bat_ledger.mojom | 4 +- .../include/bat/ledger/ledger.h | 8 +- .../internal/contribution/contribution.cc | 39 +--------- .../internal/contribution/contribution.h | 11 +-- .../src/bat/ledger/internal/ledger_impl.cc | 15 +--- .../src/bat/ledger/internal/ledger_impl.h | 6 +- .../bat/ledger/internal/ledger_impl_mock.h | 4 +- vendor/brave-ios/Ledger/BATBraveLedger.mm | 2 +- 13 files changed, 105 insertions(+), 148 deletions(-) diff --git a/components/brave_rewards/browser/rewards_service.h b/components/brave_rewards/browser/rewards_service.h index d63e4c1af98d..75ff58c211d4 100644 --- a/components/brave_rewards/browser/rewards_service.h +++ b/components/brave_rewards/browser/rewards_service.h @@ -202,6 +202,7 @@ class RewardsService : public KeyedService { const double amount, const bool recurring) = 0; + // Used in importer from muon days virtual void OnTip( const std::string& publisher_key, double amount, diff --git a/components/brave_rewards/browser/rewards_service_impl.cc b/components/brave_rewards/browser/rewards_service_impl.cc index fac062d3ddc4..b5f289aaaa5a 100644 --- a/components/brave_rewards/browser/rewards_service_impl.cc +++ b/components/brave_rewards/browser/rewards_service_impl.cc @@ -2109,37 +2109,6 @@ void RewardsServiceImpl::OnPublisherBanner( std::move(callback).Run(std::move(new_banner)); } -void RewardsServiceImpl::OnTip( - const std::string& publisher_key, - const double amount, - const bool recurring, - ledger::PublisherInfoPtr publisher_info) { - if (!Connected()) { - return; - } - - bat_ledger_->DoTip( - publisher_key, - amount, - std::move(publisher_info), - recurring, - base::BindOnce(&RewardsServiceImpl::OnDoTip, AsWeakPtr(), recurring)); -} - -void RewardsServiceImpl::OnDoTip( - const bool recurring, - const ledger::Result result) { - if (!recurring) { - return; - } - - bool success = result == ledger::Result::LEDGER_OK; - - for (auto& observer : observers_) { - observer.OnRecurringTipSaved(this, success); - } -} - void RewardsServiceImpl::OnSaveRecurringTipUI( SaveRecurringTipCallback callback, const ledger::Result result) { @@ -2544,37 +2513,53 @@ void RewardsServiceImpl::GetRewardsInternalsInfo( AsWeakPtr(), std::move(callback))); } -void RewardsServiceImpl::OnTip( - const std::string& publisher_key, - const double amount, - const bool recurring) { - OnTip( - publisher_key, - amount, - recurring, - static_cast(nullptr)); -} - void RewardsServiceImpl::OnTip( const std::string& publisher_key, const double amount, const bool recurring, std::unique_ptr site) { - if (!site) { return; } auto info = ledger::PublisherInfo::New(); info->id = publisher_key; - info->status = static_cast(site->status); - info->excluded = ledger::PublisherExclude::DEFAULT; info->name = site->name; info->url = site->url; info->provider = site->provider; info->favicon_url = site->favicon_url; - OnTip(publisher_key, amount, recurring, std::move(info)); + bat_ledger_->SavePublisherInfo( + std::move(info), + base::BindOnce(&RewardsServiceImpl::OnTipPublisherSaved, + AsWeakPtr(), + publisher_key, + amount, + recurring)); +} + +void RewardsServiceImpl::OnTipPublisherSaved( + const std::string& publisher_key, + const double amount, + const bool recurring, + const ledger::Result result) { + if (result != ledger::Result::LEDGER_OK) { + return; + } + + OnTip(publisher_key, amount, recurring); +} + +void RewardsServiceImpl::OnTip( + const std::string& publisher_key, + const double amount, + const bool recurring) { + if (recurring) { + SaveRecurringTipUI(publisher_key, amount, base::DoNothing()); + return; + } + + bat_ledger_->OneTimeTip(publisher_key, amount, base::DoNothing()); } bool RewardsServiceImpl::Connected() const { diff --git a/components/brave_rewards/browser/rewards_service_impl.h b/components/brave_rewards/browser/rewards_service_impl.h index a584489fc760..8d827f30de8c 100644 --- a/components/brave_rewards/browser/rewards_service_impl.h +++ b/components/brave_rewards/browser/rewards_service_impl.h @@ -250,13 +250,13 @@ class RewardsServiceImpl : public RewardsService, void OnTip( const std::string& publisher_key, const double amount, - const bool recurring) override; + const bool recurring, + std::unique_ptr site) override; void OnTip( const std::string& publisher_key, const double amount, - const bool recurring, - std::unique_ptr site) override; + const bool recurring) override; void SetPublisherMinVisitTime(uint64_t duration_in_seconds) const override; @@ -351,16 +351,6 @@ class RewardsServiceImpl : public RewardsService, const bool recurring, const double amount); - void OnTip( - const std::string& publisher_key, - double amount, - bool recurring, - ledger::PublisherInfoPtr publisher_info); - - void OnDoTip( - const bool recurring, - const ledger::Result result); - void OnResetTheWholeState(base::Callback callback, bool success); void OnRecurringTipUI(const ledger::Result result); @@ -606,6 +596,12 @@ class RewardsServiceImpl : public RewardsService, void PendingContributionSaved(const ledger::Result result) override; + void OnTipPublisherSaved( + const std::string& publisher_key, + const double amount, + const bool recurring, + const ledger::Result result); + // end ledger::LedgerClient // Mojo Proxy methods @@ -619,6 +615,7 @@ class RewardsServiceImpl : public RewardsService, ledger::RewardsInternalsInfoPtr info); void SetRewardsMainEnabledPref(bool enabled); void SetRewardsMainEnabledMigratedPref(bool enabled); + void OnRefreshPublisher( RefreshPublisherCallback callback, const std::string& publisher_key, diff --git a/components/services/bat_ledger/bat_ledger_impl.cc b/components/services/bat_ledger/bat_ledger_impl.cc index 5714c2a276f7..be2baf35e41f 100644 --- a/components/services/bat_ledger/bat_ledger_impl.cc +++ b/components/services/bat_ledger/bat_ledger_impl.cc @@ -398,8 +398,8 @@ void BatLedgerImpl::GetContributionAmount( std::move(callback).Run(ledger_->GetContributionAmount()); } -void BatLedgerImpl::OnDoTip( - CallbackHolder* holder, +void BatLedgerImpl::OnOneTimeTip( + CallbackHolder* holder, const ledger::Result result) { DCHECK(holder); if (holder->is_valid()) @@ -407,21 +407,17 @@ void BatLedgerImpl::OnDoTip( delete holder; } -void BatLedgerImpl::DoTip( +void BatLedgerImpl::OneTimeTip( const std::string& publisher_key, const double amount, - ledger::PublisherInfoPtr info, - const bool recurring, - DoTipCallback callback) { - // deleted in OnDoTip - auto* holder = new CallbackHolder( + OneTimeTipCallback callback) { + // deleted in OnOneTimeTip + auto* holder = new CallbackHolder( AsWeakPtr(), std::move(callback)); - ledger_->DoTip( + ledger_->OneTimeTip( publisher_key, amount, - std::move(info), - recurring, - std::bind(BatLedgerImpl::OnDoTip, holder, _1)); + std::bind(BatLedgerImpl::OnOneTimeTip, holder, _1)); } // static @@ -984,4 +980,29 @@ void BatLedgerImpl::GetAllContributions(GetAllContributionsCallback callback) { _1)); } +// static +void BatLedgerImpl::OnSavePublisherInfo( + CallbackHolder* holder, + const ledger::Result result) { + DCHECK(holder); + if (holder->is_valid()) { + std::move(holder->get()).Run(result); + } + + delete holder; +} + +void BatLedgerImpl::SavePublisherInfo( + ledger::PublisherInfoPtr info, + SavePublisherInfoCallback callback) { + auto* holder = new CallbackHolder( + AsWeakPtr(), std::move(callback)); + + ledger_->SavePublisherInfo( + std::move(info), + std::bind(BatLedgerImpl::OnSavePublisherInfo, + holder, + _1)); +} + } // namespace bat_ledger diff --git a/components/services/bat_ledger/bat_ledger_impl.h b/components/services/bat_ledger/bat_ledger_impl.h index c9e505c38762..96b5cf2dec7f 100644 --- a/components/services/bat_ledger/bat_ledger_impl.h +++ b/components/services/bat_ledger/bat_ledger_impl.h @@ -110,12 +110,10 @@ class BatLedgerImpl : public mojom::BatLedger, void GetPublisherBanner(const std::string& publisher_id, GetPublisherBannerCallback callback) override; - void DoTip( + void OneTimeTip( const std::string& publisher_key, const double amount, - ledger::PublisherInfoPtr info, - const bool recurring, - DoTipCallback callback) override; + OneTimeTipCallback callback) override; void RemoveRecurringTip( const std::string& publisher_key, @@ -208,6 +206,10 @@ class BatLedgerImpl : public mojom::BatLedger, void GetAllContributions(GetAllContributionsCallback callback) override; + void SavePublisherInfo( + ledger::PublisherInfoPtr info, + SavePublisherInfoCallback callback) override; + private: void SetCatalogIssuers( const std::string& info) override; @@ -286,8 +288,8 @@ class BatLedgerImpl : public mojom::BatLedger, CallbackHolder* holder, const ledger::Result result); - static void OnDoTip( - CallbackHolder* holder, + static void OnOneTimeTip( + CallbackHolder* holder, const ledger::Result result); static void OnGetTransactionHistory( @@ -386,6 +388,10 @@ class BatLedgerImpl : public mojom::BatLedger, CallbackHolder* holder, ledger::ContributionInfoList list); + static void OnSavePublisherInfo( + CallbackHolder* holder, + const ledger::Result result); + std::unique_ptr bat_ledger_client_mojo_proxy_; std::unique_ptr ledger_; diff --git a/components/services/bat_ledger/public/interfaces/bat_ledger.mojom b/components/services/bat_ledger/public/interfaces/bat_ledger.mojom index 5882971e6138..e59847c07e17 100644 --- a/components/services/bat_ledger/public/interfaces/bat_ledger.mojom +++ b/components/services/bat_ledger/public/interfaces/bat_ledger.mojom @@ -88,7 +88,7 @@ interface BatLedger { GetPublisherBanner(string publisher_id) => (ledger.mojom.PublisherBanner? banner); - DoTip(string publisher_id, double amount, ledger.mojom.PublisherInfo? info, bool recurring) => (ledger.mojom.Result result); + OneTimeTip(string publisher_id, double amount) => (ledger.mojom.Result result); RemoveRecurringTip(string publisher_key) => (ledger.mojom.Result result); GetBootStamp() => (uint64 boot_stamp); @@ -148,6 +148,8 @@ interface BatLedger { GetContributionReport(ledger.mojom.ActivityMonth month, int32 year) => (array list); GetAllContributions() => (array list); + + SavePublisherInfo(ledger.mojom.PublisherInfo info) => (ledger.mojom.Result result); }; interface BatLedgerClient { diff --git a/vendor/bat-native-ledger/include/bat/ledger/ledger.h b/vendor/bat-native-ledger/include/bat/ledger/ledger.h index 3dc9850659bf..c5fc04cefa8c 100644 --- a/vendor/bat-native-ledger/include/bat/ledger/ledger.h +++ b/vendor/bat-native-ledger/include/bat/ledger/ledger.h @@ -90,11 +90,9 @@ class LEDGER_EXPORT Ledger { virtual void CreateWallet(const std::string& safetynet_token, CreateWalletCallback callback) = 0; - virtual void DoTip( + virtual void OneTimeTip( const std::string& publisher_key, const double amount, - ledger::PublisherInfoPtr info, - const bool recurring, ledger::ResultCallback callback) = 0; virtual void OnLoad(VisitDataPtr visit_data, @@ -343,6 +341,10 @@ class LEDGER_EXPORT Ledger { virtual void GetAllContributions( ledger::ContributionInfoListCallback callback) = 0; + + virtual void SavePublisherInfo( + ledger::PublisherInfoPtr info, + ledger::ResultCallback callback) = 0; }; } // namespace ledger diff --git a/vendor/bat-native-ledger/src/bat/ledger/internal/contribution/contribution.cc b/vendor/bat-native-ledger/src/bat/ledger/internal/contribution/contribution.cc index 03e729b365b9..5e69049d8d79 100644 --- a/vendor/bat-native-ledger/src/bat/ledger/internal/contribution/contribution.cc +++ b/vendor/bat-native-ledger/src/bat/ledger/internal/contribution/contribution.cc @@ -652,11 +652,9 @@ void Contribution::StartPhaseTwo(const std::string& viewing_id) { phase_two_->Start(viewing_id); } -void Contribution::DoTip( +void Contribution::OneTimeTip( const std::string& publisher_key, const double amount, - ledger::PublisherInfoPtr info, - const bool recurring, ledger::ResultCallback callback) { if (publisher_key.empty()) { BLOG(ledger_, ledger::LogLevel::LOG_ERROR) << @@ -665,41 +663,6 @@ void Contribution::DoTip( return; } - if (info) { - auto save_callback = std::bind(&Contribution::ProcessTip, - this, - _1, - publisher_key, - amount, - recurring, - callback); - ledger_->SavePublisherInfo(std::move(info), save_callback); - return; - } - - ProcessTip( - ledger::Result::LEDGER_OK, - publisher_key, - amount, - recurring, - callback); -} - -void Contribution::ProcessTip( - const ledger::Result result, - const std::string& publisher_key, - const double amount, - const bool recurring, - ledger::ResultCallback callback) { - if (recurring) { - auto info = ledger::RecurringTip::New(); - info->publisher_key = publisher_key; - info->amount = amount; - info->created_at = static_cast(base::Time::Now().ToDoubleT()); - ledger_->SaveRecurringTip(std::move(info), callback); - return; - } - const auto server_callback = std::bind(&Contribution::OneTimeTipServerPublisher, this, diff --git a/vendor/bat-native-ledger/src/bat/ledger/internal/contribution/contribution.h b/vendor/bat-native-ledger/src/bat/ledger/internal/contribution/contribution.h index 93a4da579801..69422c242fb3 100644 --- a/vendor/bat-native-ledger/src/bat/ledger/internal/contribution/contribution.h +++ b/vendor/bat-native-ledger/src/bat/ledger/internal/contribution/contribution.h @@ -184,11 +184,9 @@ class Contribution { void StartPhaseTwo(const std::string& viewing_id); - void DoTip( + void OneTimeTip( const std::string& publisher_key, const double amount, - ledger::PublisherInfoPtr info, - const bool recurring, ledger::ResultCallback callback); private: @@ -246,13 +244,6 @@ class Contribution { ledger::BalancePtr properties, ledger::HasSufficientBalanceToReconcileCallback callback); - void ProcessTip( - const ledger::Result result, - const std::string& publisher_key, - const double amount, - const bool recurring, - ledger::ResultCallback callback); - void SavePendingContribution( const std::string& publisher_key, double amount, diff --git a/vendor/bat-native-ledger/src/bat/ledger/internal/ledger_impl.cc b/vendor/bat-native-ledger/src/bat/ledger/internal/ledger_impl.cc index 6e1a7f437ae9..5845970ec041 100644 --- a/vendor/bat-native-ledger/src/bat/ledger/internal/ledger_impl.cc +++ b/vendor/bat-native-ledger/src/bat/ledger/internal/ledger_impl.cc @@ -474,13 +474,13 @@ std::string LedgerImpl::URIEncode(const std::string& value) { void LedgerImpl::SavePublisherInfo( ledger::PublisherInfoPtr info, ledger::ResultCallback callback) { - bat_database_->SavePublisherInfo(info->Clone(), callback); + bat_database_->SavePublisherInfo(std::move(info), callback); } void LedgerImpl::SaveActivityInfo( ledger::PublisherInfoPtr info, ledger::ResultCallback callback) { - bat_database_->SaveActivityInfo(info->Clone(), callback); + bat_database_->SaveActivityInfo(std::move(info), callback); } void LedgerImpl::SaveMediaPublisherInfo( @@ -802,18 +802,11 @@ void LedgerImpl::PendingContributionSaved(const ledger::Result result) { ledger_client_->PendingContributionSaved(result); } -void LedgerImpl::DoTip( +void LedgerImpl::OneTimeTip( const std::string& publisher_key, const double amount, - ledger::PublisherInfoPtr info, - const bool recurring, ledger::ResultCallback callback) { - bat_contribution_->DoTip( - publisher_key, - amount, - std::move(info), - recurring, - callback); + bat_contribution_->OneTimeTip(publisher_key, amount, callback); } void LedgerImpl::OnTimer(uint32_t timer_id) { diff --git a/vendor/bat-native-ledger/src/bat/ledger/internal/ledger_impl.h b/vendor/bat-native-ledger/src/bat/ledger/internal/ledger_impl.h index a2ff86a9437c..6a94d8d3f078 100644 --- a/vendor/bat-native-ledger/src/bat/ledger/internal/ledger_impl.h +++ b/vendor/bat-native-ledger/src/bat/ledger/internal/ledger_impl.h @@ -90,7 +90,7 @@ class LedgerImpl : public ledger::Ledger, void SavePublisherInfo( ledger::PublisherInfoPtr publisher_info, - ledger::ResultCallback callback); + ledger::ResultCallback callback) override; void SaveActivityInfo( ledger::PublisherInfoPtr publisher_info, @@ -122,11 +122,9 @@ class LedgerImpl : public ledger::Ledger, void GetExcludedList(ledger::PublisherInfoListCallback callback) override; - void DoTip( + void OneTimeTip( const std::string& publisher_key, const double amount, - ledger::PublisherInfoPtr info, - const bool recurring, ledger::ResultCallback callback) override; void SetRewardsMainEnabled(bool enabled) override; diff --git a/vendor/bat-native-ledger/src/bat/ledger/internal/ledger_impl_mock.h b/vendor/bat-native-ledger/src/bat/ledger/internal/ledger_impl_mock.h index 26b9d6b48e9b..e1e302468bbd 100644 --- a/vendor/bat-native-ledger/src/bat/ledger/internal/ledger_impl_mock.h +++ b/vendor/bat-native-ledger/src/bat/ledger/internal/ledger_impl_mock.h @@ -87,11 +87,9 @@ class MockLedgerImpl : public LedgerImpl { ledger::ActivityInfoFilterPtr, ledger::PublisherInfoListCallback)); - MOCK_METHOD5(DoTip, void( + MOCK_METHOD3(OneTimeTip, void( const std::string&, const double, - ledger::PublisherInfoPtr, - const bool, ledger::ResultCallback)); MOCK_METHOD1(SetRewardsMainEnabled, void(bool)); diff --git a/vendor/brave-ios/Ledger/BATBraveLedger.mm b/vendor/brave-ios/Ledger/BATBraveLedger.mm index 5acde2ae4f5a..582a12fed4c2 100644 --- a/vendor/brave-ios/Ledger/BATBraveLedger.mm +++ b/vendor/brave-ios/Ledger/BATBraveLedger.mm @@ -838,7 +838,7 @@ - (void)listOneTimeTips:(void (^)(NSArray *))completion - (void)tipPublisherDirectly:(BATPublisherInfo *)publisher amount:(double)amount currency:(NSString *)currency completion:(void (^)(BATResult result))completion { - ledger->DoTip(std::string(publisher.id.UTF8String), amount, nullptr, false, ^(ledger::Result result) { + ledger->OneTimeTip(std::string(publisher.id.UTF8String), amount, ^(ledger::Result result) { completion(static_cast(result)); }); }