From 26c7179aef0092472a1d673827ac66b3aab12546 Mon Sep 17 00:00:00 2001 From: Arsentiy Milchakov Date: Mon, 6 Jul 2020 15:29:09 +0300 Subject: [PATCH] [purchase] trial subscription dummies. --- map/purchase.cpp | 27 +++++++++++++++++++++++++++ map/purchase.hpp | 27 +++++++++++++++++++-------- 2 files changed, 46 insertions(+), 8 deletions(-) diff --git a/map/purchase.cpp b/map/purchase.cpp index 99943a111c..4af5f96dd4 100644 --- a/map/purchase.cpp +++ b/map/purchase.cpp @@ -232,6 +232,33 @@ void Purchase::StartTransaction(std::string const & serverId, std::string const }); } +void Purchase::SetTrialEligibilityCallback(TrialEligibilityCallback && callback) +{ + CHECK_THREAD_CHECKER(m_threadChecker, ()); + m_trialEligibilityCallback = std::move(callback); +} + +void Purchase::CheckTrialEligibility(ValidationInfo const & validationInfo) +{ + CHECK_THREAD_CHECKER(m_threadChecker, ()); + + std::string const url = ValidationUrl(); + auto const status = GetPlatform().ConnectionStatus(); + if (url.empty() || status == Platform::EConnectionType::CONNECTION_NONE || !validationInfo.IsValid()) + { + if (m_trialEligibilityCallback) + m_trialEligibilityCallback(TrialEligibilityCode::ServerError); + return; + } + + GetPlatform().RunTask(Platform::Thread::Network, [this, url, validationInfo]() + { + // Dummy, will be changed to http request when server will be done. + if (m_trialEligibilityCallback) + m_trialEligibilityCallback(TrialEligibilityCode::Eligible); + }); +} + void Purchase::ValidateImpl(std::string const & url, ValidationInfo const & validationInfo, std::string const & accessToken, bool startTransaction, uint8_t attemptIndex, uint32_t waitingTimeInSeconds) diff --git a/map/purchase.hpp b/map/purchase.hpp index 94b0f93071..490d63fc0a 100644 --- a/map/purchase.hpp +++ b/map/purchase.hpp @@ -28,14 +28,6 @@ public: class Purchase { public: - using InvalidTokenHandler = std::function; - - explicit Purchase(InvalidTokenHandler && onInvalidToken); - void RegisterSubscription(SubscriptionListener * listener); - bool IsSubscriptionActive(SubscriptionType type) const; - - void SetSubscriptionEnabled(SubscriptionType type, bool isEnabled); - enum class ValidationCode { // Do not change the order. @@ -55,9 +47,24 @@ public: bool IsValid() const { return !m_vendorId.empty() && !m_receiptData.empty(); } }; + enum class TrialEligibilityCode + { + Eligible, // trial is eligible + NotEligible, // trial is not eligible + ServerError, // server error during validation + }; + + using InvalidTokenHandler = std::function; using ValidationCallback = std::function; using StartTransactionCallback = std::function; + using TrialEligibilityCallback = std::function; + + explicit Purchase(InvalidTokenHandler && onInvalidToken); + void RegisterSubscription(SubscriptionListener * listener); + bool IsSubscriptionActive(SubscriptionType type) const; + + void SetSubscriptionEnabled(SubscriptionType type, bool isEnabled); void SetValidationCallback(ValidationCallback && callback); void Validate(ValidationInfo const & validationInfo, std::string const & accessToken); @@ -66,6 +73,9 @@ public: void StartTransaction(std::string const & serverId, std::string const & vendorId, std::string const & accessToken); + void SetTrialEligibilityCallback(TrialEligibilityCallback && callback); + void CheckTrialEligibility(ValidationInfo const & validationInfo); + private: void ValidateImpl(std::string const & url, ValidationInfo const & validationInfo, std::string const & accessToken, bool startTransaction, @@ -89,6 +99,7 @@ private: ValidationCallback m_validationCallback; StartTransactionCallback m_startTransactionCallback; InvalidTokenHandler m_onInvalidToken; + TrialEligibilityCallback m_trialEligibilityCallback; ThreadChecker m_threadChecker; };