From 3be5d80e40c390a6a5cc363cc50dcb5446d2447c Mon Sep 17 00:00:00 2001 From: Alexander Boriskov Date: Thu, 23 Jul 2020 22:49:28 +0300 Subject: [PATCH] [iOS] Codestyle --- iphone/CoreApi/CoreApi/CoreApi-swift.h | 40 ++-- iphone/CoreApi/CoreApi/CoreApi.h | 12 +- .../Impl/MWMPurchaseValidation.mm | 18 +- .../InappPurchase/Impl/MWMTrialEligibility.mm | 27 ++- .../Core/Subscriptions/MWMPurchaseManager.h | 16 +- .../Core/Subscriptions/MWMPurchaseManager.mm | 226 ++++++++---------- .../Subscriptions/SubscriptionManager.swift | 29 +-- .../Subscription/SubscriptionPresenter.swift | 8 +- 8 files changed, 179 insertions(+), 197 deletions(-) diff --git a/iphone/CoreApi/CoreApi/CoreApi-swift.h b/iphone/CoreApi/CoreApi/CoreApi-swift.h index 1a93fdacd3..4390e93b0c 100644 --- a/iphone/CoreApi/CoreApi/CoreApi-swift.h +++ b/iphone/CoreApi/CoreApi/CoreApi-swift.h @@ -9,52 +9,48 @@ FOUNDATION_EXPORT const unsigned char CoreApiVersionString[]; #import #import #import +#import #import #import #import -#import #import #import -#import #import +#import #import +#import #import +#import +#import #import +#import #import #import #import #import #import -#import #import +#import #import #import #import -#import -#import -#import -#import -#import -#import -#import -#import #pragma mark - Place Page -#import -#import #import #import -#import -#import -#import -#import +#import +#import +#import #import -#import #import +#import +#import +#import +#import +#import +#import +#import +#import #import #import -#import -#import -#import -#import diff --git a/iphone/CoreApi/CoreApi/CoreApi.h b/iphone/CoreApi/CoreApi/CoreApi.h index c03a72f324..fca213eb14 100644 --- a/iphone/CoreApi/CoreApi/CoreApi.h +++ b/iphone/CoreApi/CoreApi/CoreApi.h @@ -6,22 +6,22 @@ FOUNDATION_EXPORT const unsigned char CoreApiVersionString[]; #import #import +#import #import #import #import -#import #import #import #import #import +#import #import +#import #import #import #import #import -#import -#import -#import -#import #import -#import +#import +#import +#import diff --git a/iphone/CoreApi/CoreApi/InappPurchase/Impl/MWMPurchaseValidation.mm b/iphone/CoreApi/CoreApi/InappPurchase/Impl/MWMPurchaseValidation.mm index 4dfb50a0d3..fe9433f341 100644 --- a/iphone/CoreApi/CoreApi/InappPurchase/Impl/MWMPurchaseValidation.mm +++ b/iphone/CoreApi/CoreApi/InappPurchase/Impl/MWMPurchaseValidation.mm @@ -2,11 +2,12 @@ #include -static NSMutableDictionary *> *callbacks = [NSMutableDictionary dictionary]; +static NSMutableDictionary *> *callbacks = + [NSMutableDictionary dictionary]; @interface MWMPurchaseValidation () -@property (nonatomic, copy) NSString *vendorId; +@property(nonatomic, copy) NSString *vendorId; @end @@ -42,17 +43,18 @@ static NSMutableDictionary case Purchase::ValidationCode::ServerError: { result = MWMPurchaseValidationResultError; break; - case Purchase::ValidationCode::AuthError: - result = MWMPurchaseValidationResultAuthError; - break; + case Purchase::ValidationCode::AuthError: + result = MWMPurchaseValidationResultAuthError; + break; } } NSString *serverId = @(validationResponse.m_info.m_serverId.c_str()); NSMutableArray *callbackArray = callbacks[serverId]; - [callbackArray enumerateObjectsUsingBlock:^(ValidatePurchaseCallback _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - obj(result); - }]; + [callbackArray + enumerateObjectsUsingBlock:^(ValidatePurchaseCallback _Nonnull obj, NSUInteger idx, BOOL *_Nonnull stop) { + obj(result); + }]; [callbacks removeObjectForKey:serverId]; }); diff --git a/iphone/CoreApi/CoreApi/InappPurchase/Impl/MWMTrialEligibility.mm b/iphone/CoreApi/CoreApi/InappPurchase/Impl/MWMTrialEligibility.mm index dc07bac4ed..24f2809e5f 100644 --- a/iphone/CoreApi/CoreApi/InappPurchase/Impl/MWMTrialEligibility.mm +++ b/iphone/CoreApi/CoreApi/InappPurchase/Impl/MWMTrialEligibility.mm @@ -2,11 +2,12 @@ #include -static NSMutableDictionary *> *callbacks = [NSMutableDictionary dictionary]; +static NSMutableDictionary *> *callbacks = + [NSMutableDictionary dictionary]; @interface MWMTrialEligibility () -@property (nonatomic, copy) NSString *vendorId; +@property(nonatomic, copy) NSString *vendorId; @end @@ -17,11 +18,11 @@ static NSMutableDictionarySetTrialEligibilityCallback([serverId](auto trialEligibilityCode){ + + GetFramework().GetPurchase()->SetTrialEligibilityCallback([serverId](auto trialEligibilityCode) { MWMCheckTrialEligibilityResult result; switch (trialEligibilityCode) { case Purchase::TrialEligibilityCode::Eligible: @@ -40,16 +41,16 @@ static NSMutableDictionary *callbackArray = callbacks[serverId]; - [callbackArray enumerateObjectsUsingBlock:^(CheckTrialEligibilityCallback _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - obj(result); - }]; - + [callbackArray + enumerateObjectsUsingBlock:^(CheckTrialEligibilityCallback _Nonnull obj, NSUInteger idx, BOOL *_Nonnull stop) { + obj(result); + }]; + [callbacks removeObjectForKey:serverId]; }); - - + NSMutableArray *callbackArray = callbacks[serverId]; if (!callbackArray) { callbackArray = [NSMutableArray arrayWithObject:[callback copy]]; diff --git a/iphone/Maps/Core/Subscriptions/MWMPurchaseManager.h b/iphone/Maps/Core/Subscriptions/MWMPurchaseManager.h index bcc76a5d85..c0f2f8a52f 100644 --- a/iphone/Maps/Core/Subscriptions/MWMPurchaseManager.h +++ b/iphone/Maps/Core/Subscriptions/MWMPurchaseManager.h @@ -2,25 +2,23 @@ NS_ASSUME_NONNULL_BEGIN -typedef NS_ENUM(NSUInteger, MWMValidationResult) -{ +typedef NS_ENUM(NSUInteger, MWMValidationResult) { MWMValidationResultValid, MWMValidationResultNotValid, MWMValidationResultServerError, MWMValidationResultAuthError }; -typedef NS_ENUM(NSUInteger, MWMTrialEligibilityResult) -{ +typedef NS_ENUM(NSUInteger, MWMTrialEligibilityResult) { MWMTrialEligibilityResultEligible, MWMTrialEligibilityResultNotEligible, MWMTrialEligibilityResultServerError }; -typedef void (^ValidateReceiptCallback)(NSString * serverId, MWMValidationResult validationResult); -typedef void (^TrialEligibilityCallback)(NSString * serverId, MWMTrialEligibilityResult result); +typedef void (^ValidateReceiptCallback)(NSString *serverId, MWMValidationResult validationResult); +typedef void (^TrialEligibilityCallback)(NSString *serverId, MWMTrialEligibilityResult result); -typedef void (^StartTransactionCallback)(BOOL success, NSString * serverId); +typedef void (^StartTransactionCallback)(BOOL success, NSString *serverId); @interface MWMPurchaseManager : NSObject @@ -40,9 +38,7 @@ typedef void (^StartTransactionCallback)(BOOL success, NSString * serverId); + (void)setAllPassSubscriptionActive:(BOOL)active; - (instancetype)initWithVendorId:(NSString *)vendorId; -- (void)validateReceipt:(NSString *)serverId - refreshReceipt:(BOOL)refresh - callback:(ValidateReceiptCallback)callback; +- (void)validateReceipt:(NSString *)serverId refreshReceipt:(BOOL)refresh callback:(ValidateReceiptCallback)callback; - (void)checkTrialEligibility:(NSString *)serverId refreshReceipt:(BOOL)refresh callback:(TrialEligibilityCallback)callback; diff --git a/iphone/Maps/Core/Subscriptions/MWMPurchaseManager.mm b/iphone/Maps/Core/Subscriptions/MWMPurchaseManager.mm index 988b786797..21c2522dad 100644 --- a/iphone/Maps/Core/Subscriptions/MWMPurchaseManager.mm +++ b/iphone/Maps/Core/Subscriptions/MWMPurchaseManager.mm @@ -4,7 +4,7 @@ #import -@interface MWMPurchaseManager() +@interface MWMPurchaseManager () @property(nonatomic) NSMutableDictionary *> *validationCallbacks; @property(nonatomic) NSMutableDictionary *> *trialCallbacks; @@ -17,70 +17,55 @@ @implementation MWMPurchaseManager -+ (NSString *)bookmarksSubscriptionServerId -{ ++ (NSString *)bookmarksSubscriptionServerId { return @(BOOKMARKS_SUBSCRIPTION_SIGHTS_SERVER_ID); } -+ (NSString *)bookmarksSubscriptionVendorId -{ ++ (NSString *)bookmarksSubscriptionVendorId { return @(BOOKMARKS_SUBSCRIPTION_VENDOR); } -+ (NSArray *)bookmakrsProductIds -{ - return @[@(BOOKMARKS_SUBSCRIPTION_SIGHTS_YEARLY_PRODUCT_ID), - @(BOOKMARKS_SUBSCRIPTION_SIGHTS_MONTHLY_PRODUCT_ID)]; ++ (NSArray *)bookmakrsProductIds { + return @[@(BOOKMARKS_SUBSCRIPTION_SIGHTS_YEARLY_PRODUCT_ID), @(BOOKMARKS_SUBSCRIPTION_SIGHTS_MONTHLY_PRODUCT_ID)]; } -+ (NSString *)allPassSubscriptionServerId -{ ++ (NSString *)allPassSubscriptionServerId { return @(BOOKMARKS_SUBSCRIPTION_SERVER_ID); } -+ (NSString *)allPassSubscriptionVendorId -{ ++ (NSString *)allPassSubscriptionVendorId { return @(BOOKMARKS_SUBSCRIPTION_VENDOR); } -+ (NSArray *)allPassProductIds -{ - return @[@(BOOKMARKS_SUBSCRIPTION_YEARLY_PRODUCT_ID), - @(BOOKMARKS_SUBSCRIPTION_MONTHLY_PRODUCT_ID)]; ++ (NSArray *)allPassProductIds { + return @[@(BOOKMARKS_SUBSCRIPTION_YEARLY_PRODUCT_ID), @(BOOKMARKS_SUBSCRIPTION_MONTHLY_PRODUCT_ID)]; } -+ (NSString *)adsRemovalServerId -{ ++ (NSString *)adsRemovalServerId { return @(ADS_REMOVAL_SERVER_ID); } -+ (NSString *)adsRemovalVendorId -{ ++ (NSString *)adsRemovalVendorId { return @(ADS_REMOVAL_VENDOR); } -+ (NSArray *)productIds -{ - return @[@(ADS_REMOVAL_YEARLY_PRODUCT_ID), - @(ADS_REMOVAL_MONTHLY_PRODUCT_ID), - @(ADS_REMOVAL_WEEKLY_PRODUCT_ID)]; ++ (NSArray *)productIds { + return @[@(ADS_REMOVAL_YEARLY_PRODUCT_ID), @(ADS_REMOVAL_MONTHLY_PRODUCT_ID), @(ADS_REMOVAL_WEEKLY_PRODUCT_ID)]; } -+ (NSArray *)legacyProductIds -{ ++ (NSArray *)legacyProductIds { auto pidVec = std::vector(ADS_REMOVAL_NOT_USED_LIST); NSMutableArray *result = [NSMutableArray array]; - for (auto const & s : pidVec) + for (auto const &s : pidVec) [result addObject:@(s.c_str())]; - + return [result copy]; } -+ (NSArray *)bookmarkInappIds -{ ++ (NSArray *)bookmarkInappIds { auto pidVec = std::vector(BOOKMARK_INAPP_IDS); NSMutableArray *result = [NSMutableArray array]; - for (auto const & s : pidVec) + for (auto const &s : pidVec) [result addObject:@(s.c_str())]; return [result copy]; @@ -98,17 +83,13 @@ return self; } -- (void)refreshReceipt -{ +- (void)refreshReceipt { self.receiptRequest = [[SKReceiptRefreshRequest alloc] init]; self.receiptRequest.delegate = self; [self.receiptRequest start]; } -- (void)validateReceipt:(NSString *)serverId - refreshReceipt:(BOOL)refresh - callback:(ValidateReceiptCallback)callback -{ +- (void)validateReceipt:(NSString *)serverId refreshReceipt:(BOOL)refresh callback:(ValidateReceiptCallback)callback { NSMutableArray *callbackArray = self.validationCallbacks[serverId]; if (callbackArray) { [callbackArray addObject:[callback copy]]; @@ -118,33 +99,33 @@ [self validateReceipt:serverId refreshReceipt:refresh]; } -- (void)validateReceipt:(NSString *)serverId - refreshReceipt:(BOOL)refresh { +- (void)validateReceipt:(NSString *)serverId refreshReceipt:(BOOL)refresh { __weak __typeof(self) ws = self; - [self.purchaseValidation validateReceipt:serverId callback:^(MWMPurchaseValidationResult validationResult) { - __strong __typeof(self) self = ws; - switch (validationResult) { - case MWMPurchaseValidationResultValid: - [self notifyValidation:serverId result:MWMValidationResultValid]; - break; - case MWMPurchaseValidationResultNotValid: - [self notifyValidation:serverId result:MWMValidationResultNotValid]; - break; - case MWMPurchaseValidationResultError: - [self notifyValidation:serverId result:MWMValidationResultServerError]; - break; - case MWMPurchaseValidationResultAuthError: - [self notifyValidation:serverId result:MWMValidationResultAuthError]; - break; - case MWMPurchaseValidationResultNoReceipt: - if (refresh) { - [self refreshReceipt]; - } else { - [self notifyValidation:serverId result:MWMValidationResultNotValid]; - } - break; - } - }]; + [self.purchaseValidation validateReceipt:serverId + callback:^(MWMPurchaseValidationResult validationResult) { + __strong __typeof(self) self = ws; + switch (validationResult) { + case MWMPurchaseValidationResultValid: + [self notifyValidation:serverId result:MWMValidationResultValid]; + break; + case MWMPurchaseValidationResultNotValid: + [self notifyValidation:serverId result:MWMValidationResultNotValid]; + break; + case MWMPurchaseValidationResultError: + [self notifyValidation:serverId result:MWMValidationResultServerError]; + break; + case MWMPurchaseValidationResultAuthError: + [self notifyValidation:serverId result:MWMValidationResultAuthError]; + break; + case MWMPurchaseValidationResultNoReceipt: + if (refresh) { + [self refreshReceipt]; + } else { + [self notifyValidation:serverId result:MWMValidationResultNotValid]; + } + break; + } + }]; } - (void)checkTrialEligibility:(NSString *)serverId @@ -159,61 +140,60 @@ [self checkTrialEligibility:serverId refreshReceipt:refresh]; } -- (void)checkTrialEligibility:(NSString *)serverId - refreshReceipt:(BOOL)refresh { +- (void)checkTrialEligibility:(NSString *)serverId refreshReceipt:(BOOL)refresh { __weak __typeof(self) ws = self; - [self.trialEligibility checkTrialEligibility:serverId callback:^(MWMCheckTrialEligibilityResult result) { - __strong __typeof(self) self = ws; - switch (result) { - case MWMCheckTrialEligibilityResultEligible: - [self notifyTrialEligibility:serverId result:MWMTrialEligibilityResultEligible]; - break; - case MWMCheckTrialEligibilityResultNotEligible: - [self notifyTrialEligibility:serverId result:MWMTrialEligibilityResultNotEligible]; - break; - case MWMCheckTrialEligibilityResultServerError: - [self notifyTrialEligibility:serverId result:MWMTrialEligibilityResultServerError]; - break; - case MWMCheckTrialEligibilityResultNoReceipt: - if (refresh) { - [self refreshReceipt]; - } else { - [self notifyTrialEligibility:serverId result:MWMTrialEligibilityResultNotEligible]; - } - } - }]; + [self.trialEligibility + checkTrialEligibility:serverId + callback:^(MWMCheckTrialEligibilityResult result) { + __strong __typeof(self) self = ws; + switch (result) { + case MWMCheckTrialEligibilityResultEligible: + [self notifyTrialEligibility:serverId result:MWMTrialEligibilityResultEligible]; + break; + case MWMCheckTrialEligibilityResultNotEligible: + [self notifyTrialEligibility:serverId result:MWMTrialEligibilityResultNotEligible]; + break; + case MWMCheckTrialEligibilityResultServerError: + [self notifyTrialEligibility:serverId result:MWMTrialEligibilityResultServerError]; + break; + case MWMCheckTrialEligibilityResultNoReceipt: + if (refresh) { + [self refreshReceipt]; + } else { + [self notifyTrialEligibility:serverId result:MWMTrialEligibilityResultNotEligible]; + } + } + }]; } - (void)startTransaction:(NSString *)serverId callback:(StartTransactionCallback)callback { - GetFramework().GetPurchase()->SetStartTransactionCallback([callback](bool success, - std::string const & serverId, - std::string const & vendorId) - { - callback(success, @(serverId.c_str())); - }); - GetFramework().GetPurchase()->StartTransaction(serverId.UTF8String, - BOOKMARKS_VENDOR, + GetFramework().GetPurchase()->SetStartTransactionCallback( + [callback](bool success, std::string const &serverId, std::string const &vendorId) { + callback(success, @(serverId.c_str())); + }); + GetFramework().GetPurchase()->StartTransaction(serverId.UTF8String, BOOKMARKS_VENDOR, GetFramework().GetUser().GetAccessToken()); } - (void)notifyValidation:(NSString *)serverId result:(MWMValidationResult)result { NSMutableArray *callbackArray = self.validationCallbacks[serverId]; - [callbackArray enumerateObjectsUsingBlock:^(ValidateReceiptCallback _Nonnull callback, NSUInteger idx, BOOL * _Nonnull stop) { - callback(serverId, result); - }]; + [callbackArray + enumerateObjectsUsingBlock:^(ValidateReceiptCallback _Nonnull callback, NSUInteger idx, BOOL *_Nonnull stop) { + callback(serverId, result); + }]; [self.validationCallbacks removeObjectForKey:serverId]; } --(void)notifyTrialEligibility:(NSString *)serverId result:(MWMTrialEligibilityResult)result { +- (void)notifyTrialEligibility:(NSString *)serverId result:(MWMTrialEligibilityResult)result { NSMutableArray *callbackArray = self.trialCallbacks[serverId]; - [callbackArray enumerateObjectsUsingBlock:^(TrialEligibilityCallback _Nonnull callback, NSUInteger idx, BOOL * _Nonnull stop) { - callback(serverId, result); - }]; + [callbackArray + enumerateObjectsUsingBlock:^(TrialEligibilityCallback _Nonnull callback, NSUInteger idx, BOOL *_Nonnull stop) { + callback(serverId, result); + }]; [self.trialCallbacks removeObjectForKey:serverId]; } -+ (void)setAdsDisabled:(BOOL)disabled -{ ++ (void)setAdsDisabled:(BOOL)disabled { GetFramework().GetPurchase()->SetSubscriptionEnabled(SubscriptionType::RemoveAds, disabled); } @@ -227,24 +207,30 @@ #pragma mark - SKRequestDelegate -- (void)requestDidFinish:(SKRequest *)request -{ - [self.validationCallbacks enumerateKeysAndObjectsUsingBlock:^(NSString * _Nonnull key, NSMutableArray * _Nonnull obj, BOOL * _Nonnull stop) { - [self validateReceipt:key refreshReceipt:NO]; - }]; - [self.trialCallbacks enumerateKeysAndObjectsUsingBlock:^(NSString * _Nonnull key, NSMutableArray * _Nonnull obj, BOOL * _Nonnull stop) { - [self checkTrialEligibility:key refreshReceipt:NO]; - }]; +- (void)requestDidFinish:(SKRequest *)request { + [self.validationCallbacks + enumerateKeysAndObjectsUsingBlock:^(NSString *_Nonnull key, NSMutableArray *_Nonnull obj, + BOOL *_Nonnull stop) { + [self validateReceipt:key refreshReceipt:NO]; + }]; + [self.trialCallbacks + enumerateKeysAndObjectsUsingBlock:^(NSString *_Nonnull key, NSMutableArray *_Nonnull obj, + BOOL *_Nonnull stop) { + [self checkTrialEligibility:key refreshReceipt:NO]; + }]; } -- (void)request:(SKRequest *)request didFailWithError:(NSError *)error -{ - [self.trialCallbacks enumerateKeysAndObjectsUsingBlock:^(NSString * _Nonnull key, NSMutableArray * _Nonnull obj, BOOL * _Nonnull stop) { - [self notifyValidation:key result:MWMValidationResultServerError]; - }]; - [self.trialCallbacks enumerateKeysAndObjectsUsingBlock:^(NSString * _Nonnull key, NSMutableArray * _Nonnull obj, BOOL * _Nonnull stop) { - [self notifyTrialEligibility:key result:MWMTrialEligibilityResultServerError]; - }]; +- (void)request:(SKRequest *)request didFailWithError:(NSError *)error { + [self.trialCallbacks + enumerateKeysAndObjectsUsingBlock:^(NSString *_Nonnull key, NSMutableArray *_Nonnull obj, + BOOL *_Nonnull stop) { + [self notifyValidation:key result:MWMValidationResultServerError]; + }]; + [self.trialCallbacks + enumerateKeysAndObjectsUsingBlock:^(NSString *_Nonnull key, NSMutableArray *_Nonnull obj, + BOOL *_Nonnull stop) { + [self notifyTrialEligibility:key result:MWMTrialEligibilityResultServerError]; + }]; } @end diff --git a/iphone/Maps/Core/Subscriptions/SubscriptionManager.swift b/iphone/Maps/Core/Subscriptions/SubscriptionManager.swift index 804a1b383d..bce6061b5f 100644 --- a/iphone/Maps/Core/Subscriptions/SubscriptionManager.swift +++ b/iphone/Maps/Core/Subscriptions/SubscriptionManager.swift @@ -1,4 +1,4 @@ -@objc protocol ISubscriptionManager: class{ +@objc protocol ISubscriptionManager: AnyObject { typealias SuscriptionsCompletion = ([ISubscription]?, Error?) -> Void typealias ValidationCompletion = (MWMValidationResult) -> Void typealias TrialEligibilityCompletion = (MWMTrialEligibilityResult) -> Void @@ -46,10 +46,10 @@ class SubscriptionManager: NSObject, ISubscriptionManager { self.productIds = productIds self.serverId = serverId self.vendorId = vendorId - self.hasTrial = serverId == MWMPurchaseManager.allPassSubscriptionServerId() + hasTrial = serverId == MWMPurchaseManager.allPassSubscriptionServerId() super.init() paymentQueue.add(self) - self.purchaseManager = MWMPurchaseManager(vendorId: vendorId) + purchaseManager = MWMPurchaseManager(vendorId: vendorId) } deinit { @@ -105,13 +105,14 @@ class SubscriptionManager: NSObject, ISubscriptionManager { } private func validate(_ refreshReceipt: Bool, completion: ValidationCompletion? = nil) { - purchaseManager?.validateReceipt(serverId, refreshReceipt: refreshReceipt) { [weak self] (_, validationResult) in + purchaseManager?.validateReceipt(serverId, refreshReceipt: refreshReceipt) { [weak self] _, validationResult in self?.logEvents(validationResult) if validationResult == .valid || validationResult == .notValid { self?.listeners.allObjects.forEach { $0.didValidate(validationResult == .valid) } self?.paymentQueue.transactions .filter { self?.productIds.contains($0.payment.productIdentifier) ?? false && - ($0.transactionState == .purchased || $0.transactionState == .restored) } + ($0.transactionState == .purchased || $0.transactionState == .restored) + } .forEach { self?.paymentQueue.finishTransaction($0) } } else { self?.listeners.allObjects.forEach { $0.didFailToValidate() } @@ -121,7 +122,7 @@ class SubscriptionManager: NSObject, ISubscriptionManager { } @objc func checkTrialEligibility(completion: TrialEligibilityCompletion?) { - purchaseManager?.checkTrialEligibility(serverId, refreshReceipt: true, callback: { (_, result) in + purchaseManager?.checkTrialEligibility(serverId, refreshReceipt: true, callback: { _, result in completion?(result) }) } @@ -129,15 +130,15 @@ class SubscriptionManager: NSObject, ISubscriptionManager { private func logEvents(_ validationResult: MWMValidationResult) { switch validationResult { case .valid: - Statistics.logEvent(kStatInappValidationSuccess, withParameters: [kStatPurchase : serverId]) + Statistics.logEvent(kStatInappValidationSuccess, withParameters: [kStatPurchase: serverId]) Statistics.logEvent(kStatInappProductDelivered, - withParameters: [kStatVendor : vendorId, kStatPurchase : serverId], with: .realtime) + withParameters: [kStatVendor: vendorId, kStatPurchase: serverId], with: .realtime) case .notValid: - Statistics.logEvent(kStatInappValidationError, withParameters: [kStatErrorCode : 0, kStatPurchase : serverId]) + Statistics.logEvent(kStatInappValidationError, withParameters: [kStatErrorCode: 0, kStatPurchase: serverId]) case .serverError: - Statistics.logEvent(kStatInappValidationError, withParameters: [kStatErrorCode : 2, kStatPurchase : serverId]) + Statistics.logEvent(kStatInappValidationError, withParameters: [kStatErrorCode: 2, kStatPurchase: serverId]) case .authError: - Statistics.logEvent(kStatInappValidationError, withParameters: [kStatErrorCode : 1, kStatPurchase : serverId]) + Statistics.logEvent(kStatInappValidationError, withParameters: [kStatErrorCode: 1, kStatPurchase: serverId]) } } } @@ -145,7 +146,7 @@ class SubscriptionManager: NSObject, ISubscriptionManager { extension SubscriptionManager: SKProductsRequestDelegate { func request(_ request: SKRequest, didFailWithError error: Error) { Statistics.logEvent(kStatInappPaymentError, - withParameters: [kStatError : error.localizedDescription, kStatPurchase : serverId]) + withParameters: [kStatError: error.localizedDescription, kStatPurchase: serverId]) DispatchQueue.main.async { [weak self] in self?.subscriptionsComplection?(nil, error) self?.subscriptionsComplection = nil @@ -208,7 +209,7 @@ extension SubscriptionManager: SKPaymentTransactionObserver { private func processPurchased(_ transaction: SKPaymentTransaction) { paymentQueue.finishTransaction(transaction) if let ps = pendingSubscription, transaction.payment.productIdentifier == ps.productId { - Statistics.logEvent(kStatInappPaymentSuccess, withParameters: [kStatPurchase : serverId]) + Statistics.logEvent(kStatInappPaymentSuccess, withParameters: [kStatPurchase: serverId]) listeners.allObjects.forEach { $0.didSubscribe(ps) } } } @@ -225,7 +226,7 @@ extension SubscriptionManager: SKPaymentTransactionObserver { if let ps = pendingSubscription, transaction.payment.productIdentifier == ps.productId { let errorText = error?.localizedDescription ?? "" Statistics.logEvent(kStatInappPaymentError, - withParameters: [kStatPurchase : serverId, kStatError : errorText]) + withParameters: [kStatPurchase: serverId, kStatError: errorText]) listeners.allObjects.forEach { $0.didFailToSubscribe(ps, error: error) } } } diff --git a/iphone/Maps/UI/Subscription/SubscriptionPresenter.swift b/iphone/Maps/UI/Subscription/SubscriptionPresenter.swift index a628c3318e..dfc897710b 100644 --- a/iphone/Maps/UI/Subscription/SubscriptionPresenter.swift +++ b/iphone/Maps/UI/Subscription/SubscriptionPresenter.swift @@ -35,7 +35,7 @@ class SubscriptionPresenter { } private func configureTrial() { - guard let trialSubscriptionItem = self.subscriptionGroup?[.year] else { + guard let trialSubscriptionItem = subscriptionGroup?[.year] else { fatalError() } view?.setModel(SubscriptionViewModel.trial(SubscriptionViewModel.TrialData(price: trialSubscriptionItem.formattedPrice))) @@ -44,7 +44,7 @@ class SubscriptionPresenter { private func configureSubscriptions() { var data: [SubscriptionViewModel.SubscriptionData] = [] for period in [SubscriptionPeriod.month, SubscriptionPeriod.year] { - guard let subscriptionItem = self.subscriptionGroup?[period] else { + guard let subscriptionItem = subscriptionGroup?[period] else { fatalError() } data.append(SubscriptionViewModel.SubscriptionData(price: subscriptionItem.formattedPrice, @@ -89,9 +89,9 @@ extension SubscriptionPresenter: SubscriptionPresenterProtocol { let group = SubscriptionGroup(subscriptions: subscriptions) self?.subscriptionGroup = group - + if self?.subscriptionManager.hasTrial == true { - self?.subscriptionManager.checkTrialEligibility { (result) in + self?.subscriptionManager.checkTrialEligibility { result in switch result { case .eligible: self?.configureTrial()