Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/map
diff options
context:
space:
mode:
authorr.kuznetsov <r.kuznetsov@corp.mail.ru>2018-08-24 11:20:24 +0300
committerDaria Volvenkova <d.volvenkova@corp.mail.ru>2018-08-24 11:56:01 +0300
commit32950ad239eee894e3d2c4e61ddcea8de472fb71 (patch)
tree3421b3c00cd4093608ea7354a1e96040937b1584 /map
parent6e572cb3ac036a91812eb78fb5f4aadc2932f392 (diff)
Review fixes
Diffstat (limited to 'map')
-rw-r--r--map/subscription.cpp30
-rw-r--r--map/subscription.hpp1
2 files changed, 22 insertions, 9 deletions
diff --git a/map/subscription.cpp b/map/subscription.cpp
index 1708415153..c5311206a9 100644
--- a/map/subscription.cpp
+++ b/map/subscription.cpp
@@ -47,29 +47,29 @@ std::string ValidationUrl()
struct ReceiptData
{
- std::string m_data;
- std::string m_type;
-
ReceiptData(std::string const & data, std::string const & type)
: m_data(data)
, m_type(type)
{}
+ std::string m_data;
+ std::string m_type;
+
DECLARE_VISITOR(visitor(m_data, "data"),
visitor(m_type, "type"))
};
struct ValidationData
{
- std::string m_productId;
- ReceiptData m_receipt;
-
ValidationData(std::string const & productId, std::string const & receiptData,
std::string const & receiptType)
: m_productId(productId)
, m_receipt(receiptData, receiptType)
{}
+ std::string m_productId;
+ ReceiptData m_receipt;
+
DECLARE_VISITOR(visitor(m_productId, "product_id"),
visitor(m_receipt, "receipt"))
};
@@ -122,8 +122,20 @@ void Subscription::Validate(std::string const & receiptData, std::string const &
return;
}
+ // If we validate the subscription immediately after purchasing, we believe that
+ // the subscription is valid and apply it before the validation. If the result of
+ // validation will be different, we return everything back.
+ if (m_subscriptionId.empty() && !receiptData.empty())
+ {
+ m_isActive = true;
+ m_subscriptionId = GetSubscriptionId();
+ GetPlatform().GetSecureStorage().Save(kSubscriptionId, m_subscriptionId);
+ for (auto & listener : m_listeners)
+ listener->OnSubscriptionChanged(true /* isActive */);
+ }
+
auto const status = GetPlatform().ConnectionStatus();
- if (status == Platform::EConnectionType::CONNECTION_NONE)
+ if (status == Platform::EConnectionType::CONNECTION_NONE || receiptData.empty())
{
ApplyValidation(ValidationCode::Failure);
return;
@@ -154,8 +166,8 @@ void Subscription::Validate(std::string const & receiptData, std::string const &
{
ValidationResult result;
{
- coding::DeserializerJson des(request.ServerResponse());
- des(result);
+ coding::DeserializerJson deserializer(request.ServerResponse());
+ deserializer(result);
}
code = result.m_isValid ? ValidationCode::Active : ValidationCode::NotActive;
diff --git a/map/subscription.hpp b/map/subscription.hpp
index 83cc98f1eb..eee2ad3cfb 100644
--- a/map/subscription.hpp
+++ b/map/subscription.hpp
@@ -19,6 +19,7 @@ class Subscription
public:
enum class ValidationCode
{
+ // Do not change the order.
Active, // Subscription is active.
NotActive, // Subscription is not active.
Failure, // Validation failed, real subscription status is unknown, current one acts.