From c03e3a54d11cea32433e7db8e0ff4424a7402b85 Mon Sep 17 00:00:00 2001 From: Alexander Boriskov Date: Fri, 17 Jan 2020 19:11:46 +0300 Subject: [PATCH] [iOS] Removed caching in Promo after booking campaign https://jira.mail.ru/browse/MAPSME-12749 --- .../CoreApi/CoreApi.xcodeproj/project.pbxproj | 12 ++++++ .../Promo/PromoAfterBookingCampaignAdapter.h | 7 +-- .../Promo/PromoAfterBookingCampaignAdapter.mm | 43 ++++--------------- .../Promo/PromoAfterBookingData+Core.h | 12 ++++++ .../CoreApi/Promo/PromoAfterBookingData.h | 14 ++++++ .../CoreApi/Promo/PromoAfterBookingData.mm | 28 ++++++++++++ .../MWMMapViewControlsManager.mm | 12 +++--- .../PromoAfterBookingCampaign.swift | 23 +++------- 8 files changed, 88 insertions(+), 63 deletions(-) create mode 100644 iphone/CoreApi/CoreApi/Promo/PromoAfterBookingData+Core.h create mode 100644 iphone/CoreApi/CoreApi/Promo/PromoAfterBookingData.h create mode 100644 iphone/CoreApi/CoreApi/Promo/PromoAfterBookingData.mm diff --git a/iphone/CoreApi/CoreApi.xcodeproj/project.pbxproj b/iphone/CoreApi/CoreApi.xcodeproj/project.pbxproj index 0991f35f4c..f966ed492a 100644 --- a/iphone/CoreApi/CoreApi.xcodeproj/project.pbxproj +++ b/iphone/CoreApi/CoreApi.xcodeproj/project.pbxproj @@ -119,6 +119,9 @@ 9957FAE9237AE5B000855F48 /* Logger.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9957FAE7237AE5B000855F48 /* Logger.mm */; }; 999D3A64237B097C00C5F7A8 /* DeepLinkSubscriptionData.h in Headers */ = {isa = PBXBuildFile; fileRef = 999D3A62237B097C00C5F7A8 /* DeepLinkSubscriptionData.h */; settings = {ATTRIBUTES = (Public, ); }; }; 999D3A65237B097C00C5F7A8 /* DeepLinkSubscriptionData.mm in Sources */ = {isa = PBXBuildFile; fileRef = 999D3A63237B097C00C5F7A8 /* DeepLinkSubscriptionData.mm */; }; + 99F31EB823D5DD9000CE2CE1 /* PromoAfterBookingData.mm in Sources */ = {isa = PBXBuildFile; fileRef = 99F31EB523D5DD8F00CE2CE1 /* PromoAfterBookingData.mm */; }; + 99F31EB923D5DD9000CE2CE1 /* PromoAfterBookingData+Core.h in Headers */ = {isa = PBXBuildFile; fileRef = 99F31EB623D5DD8F00CE2CE1 /* PromoAfterBookingData+Core.h */; }; + 99F31EBA23D5DD9000CE2CE1 /* PromoAfterBookingData.h in Headers */ = {isa = PBXBuildFile; fileRef = 99F31EB723D5DD9000CE2CE1 /* PromoAfterBookingData.h */; settings = {ATTRIBUTES = (Public, ); }; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ @@ -242,6 +245,9 @@ 9957FAE7237AE5B000855F48 /* Logger.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = Logger.mm; sourceTree = ""; }; 999D3A62237B097C00C5F7A8 /* DeepLinkSubscriptionData.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DeepLinkSubscriptionData.h; sourceTree = ""; }; 999D3A63237B097C00C5F7A8 /* DeepLinkSubscriptionData.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = DeepLinkSubscriptionData.mm; sourceTree = ""; }; + 99F31EB523D5DD8F00CE2CE1 /* PromoAfterBookingData.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = PromoAfterBookingData.mm; sourceTree = ""; }; + 99F31EB623D5DD8F00CE2CE1 /* PromoAfterBookingData+Core.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "PromoAfterBookingData+Core.h"; sourceTree = ""; }; + 99F31EB723D5DD9000CE2CE1 /* PromoAfterBookingData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PromoAfterBookingData.h; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -562,6 +568,9 @@ 993F54ED237C5D1000545511 /* Promo */ = { isa = PBXGroup; children = ( + 99F31EB723D5DD9000CE2CE1 /* PromoAfterBookingData.h */, + 99F31EB523D5DD8F00CE2CE1 /* PromoAfterBookingData.mm */, + 99F31EB623D5DD8F00CE2CE1 /* PromoAfterBookingData+Core.h */, 993F54EE237C5D1000545511 /* PromoDiscoveryCampaignAdapter.h */, 993F54EF237C5D1000545511 /* PromoAfterBookingCampaignAdapter.mm */, 993F54F0237C5D1000545511 /* PromoDiscoveryCampaignAdapter.mm */, @@ -626,6 +635,7 @@ 47942D70237CC40400DEFAE3 /* PlacePageInfoData+Core.h in Headers */, 47942DA0237D954400DEFAE3 /* PlacePageBookmarkData+Core.h in Headers */, 479F704B234F78AB00011E2E /* MWMFrameworkHelper.h in Headers */, + 99F31EBA23D5DD9000CE2CE1 /* PromoAfterBookingData.h in Headers */, 479834F323426CD200724D1E /* MWMTagGroup+Convenience.h in Headers */, 47D9019923AC236100D9364C /* MWMMapUpdateInfo+Core.h in Headers */, 999D3A64237B097C00C5F7A8 /* DeepLinkSubscriptionData.h in Headers */, @@ -649,6 +659,7 @@ 47942D98237D675400DEFAE3 /* CatalogPromoItem+Core.h in Headers */, 479F704A234F785B00011E2E /* MWMTypes.h in Headers */, 47C637D72354AEBE00E12DE0 /* MWMMapOverlayManager.h in Headers */, + 99F31EB923D5DD9000CE2CE1 /* PromoAfterBookingData+Core.h in Headers */, 993F54F2237C5D1100545511 /* PromoDiscoveryCampaignAdapter.h in Headers */, 99447849238559F2004DAEE5 /* DeeplinkParsingResult.h in Headers */, 47942D9C237D927800DEFAE3 /* PlacePageBookmarkData.h in Headers */, @@ -744,6 +755,7 @@ 47942D88237CCA8800DEFAE3 /* PlacePagePreviewData.mm in Sources */, 479F7050234FB60400011E2E /* MWMCatalogObserver.mm in Sources */, 47942D7F237CC43300DEFAE3 /* UgcData.mm in Sources */, + 99F31EB823D5DD9000CE2CE1 /* PromoAfterBookingData.mm in Sources */, 47C637D12354A6FB00E12DE0 /* MWMEye.mm in Sources */, 47942D9D237D927800DEFAE3 /* PlacePageBookmarkData.mm in Sources */, 4738A8E1239FACE7007C0F43 /* CoreBanner.mm in Sources */, diff --git a/iphone/CoreApi/CoreApi/Promo/PromoAfterBookingCampaignAdapter.h b/iphone/CoreApi/CoreApi/Promo/PromoAfterBookingCampaignAdapter.h index 5ffb585fc7..6da8454f53 100644 --- a/iphone/CoreApi/CoreApi/Promo/PromoAfterBookingCampaignAdapter.h +++ b/iphone/CoreApi/CoreApi/Promo/PromoAfterBookingCampaignAdapter.h @@ -1,14 +1,11 @@ #import +#import "PromoAfterBookingData.h" NS_ASSUME_NONNULL_BEGIN @interface PromoAfterBookingCampaignAdapter : NSObject -@property(nonatomic, readonly) NSString *promoId; -@property(nonatomic, readonly) NSString *promoUrl; -@property(nonatomic, readonly) NSString *pictureUrl; - -- (nullable instancetype)init; ++ (PromoAfterBookingData*)afterBookingData; @end diff --git a/iphone/CoreApi/CoreApi/Promo/PromoAfterBookingCampaignAdapter.mm b/iphone/CoreApi/CoreApi/Promo/PromoAfterBookingCampaignAdapter.mm index 71e783f6f4..e0920b9c8f 100644 --- a/iphone/CoreApi/CoreApi/Promo/PromoAfterBookingCampaignAdapter.mm +++ b/iphone/CoreApi/CoreApi/Promo/PromoAfterBookingCampaignAdapter.mm @@ -1,43 +1,18 @@ #import "PromoAfterBookingCampaignAdapter.h" - -#include -#include "platform/network_policy.hpp" - -@interface PromoAfterBookingCampaignAdapter () { - promo::AfterBooking m_afterBooking; -} -@end +#import "PromoAfterBookingData+Core.h" +#import +#import "platform/network_policy.hpp" @implementation PromoAfterBookingCampaignAdapter -- (instancetype)init { - self = [super init]; - if (self) { - auto policy = platform::GetCurrentNetworkPolicy(); - auto promoApi = GetFramework().GetPromoApi(policy); - if (promoApi == nullptr) - return nil; - ++ (PromoAfterBookingData*)afterBookingData { + auto policy = platform::GetCurrentNetworkPolicy(); + auto promoApi = GetFramework().GetPromoApi(policy); + if (promoApi != nil) { auto const promoAfterBooking = promoApi->GetAfterBooking(languages::GetCurrentNorm()); - - if (promoAfterBooking.IsEmpty()) - return nil; - - m_afterBooking = promoAfterBooking; + return [[PromoAfterBookingData alloc] initWithAfterBooking:promoAfterBooking]; } - return self; -} - -- (NSString *)promoId { - return @(m_afterBooking.m_id.c_str()); -} - -- (NSString *)promoUrl { - return @(m_afterBooking.m_promoUrl.c_str()); -} - -- (NSString *)pictureUrl { - return @(m_afterBooking.m_pictureUrl.c_str()); + return [[PromoAfterBookingData alloc] init]; } @end diff --git a/iphone/CoreApi/CoreApi/Promo/PromoAfterBookingData+Core.h b/iphone/CoreApi/CoreApi/Promo/PromoAfterBookingData+Core.h new file mode 100644 index 0000000000..c8622db923 --- /dev/null +++ b/iphone/CoreApi/CoreApi/Promo/PromoAfterBookingData+Core.h @@ -0,0 +1,12 @@ +#include +#import "PromoAfterBookingData.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface PromoAfterBookingData (Core) + +- (instancetype)initWithAfterBooking:(promo::AfterBooking)afterBooking; + +@end + +NS_ASSUME_NONNULL_END diff --git a/iphone/CoreApi/CoreApi/Promo/PromoAfterBookingData.h b/iphone/CoreApi/CoreApi/Promo/PromoAfterBookingData.h new file mode 100644 index 0000000000..a626012ebc --- /dev/null +++ b/iphone/CoreApi/CoreApi/Promo/PromoAfterBookingData.h @@ -0,0 +1,14 @@ +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface PromoAfterBookingData : NSObject + +@property(nonatomic, readonly) NSString *promoId; +@property(nonatomic, readonly) NSString *promoUrl; +@property(nonatomic, readonly) NSString *pictureUrl; +@property(nonatomic, readonly) BOOL enabled; + +@end + +NS_ASSUME_NONNULL_END diff --git a/iphone/CoreApi/CoreApi/Promo/PromoAfterBookingData.mm b/iphone/CoreApi/CoreApi/Promo/PromoAfterBookingData.mm new file mode 100644 index 0000000000..ba0e906ee0 --- /dev/null +++ b/iphone/CoreApi/CoreApi/Promo/PromoAfterBookingData.mm @@ -0,0 +1,28 @@ +#import "PromoAfterBookingData+Core.h" + +@implementation PromoAfterBookingData + +- (instancetype)initWithAfterBooking:(promo::AfterBooking)afterBooking { + self = [super init]; + if (self) { + _promoId = @(afterBooking.m_id.c_str()); + _promoUrl = @(afterBooking.m_promoUrl.c_str()); + _pictureUrl = @(afterBooking.m_pictureUrl.c_str()); + _enabled = afterBooking.IsEmpty() == false; + } + return self; +} + +- (instancetype)init +{ + self = [super init]; + if (self) { + _promoId = @""; + _promoUrl = @""; + _pictureUrl = @""; + _enabled = false; + } + return self; +} + +@end diff --git a/iphone/Maps/Classes/CustomViews/MapViewControls/MWMMapViewControlsManager.mm b/iphone/Maps/Classes/CustomViews/MapViewControls/MWMMapViewControlsManager.mm index 7c339c45dc..a24cac647c 100644 --- a/iphone/Maps/Classes/CustomViews/MapViewControls/MWMMapViewControlsManager.mm +++ b/iphone/Maps/Classes/CustomViews/MapViewControls/MWMMapViewControlsManager.mm @@ -430,13 +430,13 @@ NSString * const kMapToCategorySelectorSegue = @"MapToCategorySelectorSegue"; } - (BOOL)showPromoBookingIfNeeded { - PromoAfterBookingCampaign * afterBooking = [PromoCampaignManager manager].promoAfterBookingCampaign; - - if (!afterBooking.enabled) + PromoAfterBookingCampaign * afterBookingCampaign = [PromoCampaignManager manager].promoAfterBookingCampaign; + PromoAfterBookingData * afterBookingData = afterBookingCampaign.afterBookingData; + if (!afterBookingData.enabled) return NO; MWMVoidBlock ok = ^{ - auto urlString = afterBooking.promoUrl; + auto urlString = afterBookingData.promoUrl; auto url = [NSURL URLWithString:urlString]; [MapViewController.sharedController openCatalogAbsoluteUrl:url animated:YES utm:MWMUTMBookingPromo]; @@ -445,11 +445,11 @@ NSString * const kMapToCategorySelectorSegue = @"MapToCategorySelectorSegue"; MWMVoidBlock cancel = ^{ [self.ownerController dismissViewControllerAnimated:YES completion:nil]; }; - NSString *cityImageUrl = afterBooking.pictureUrl; + NSString *cityImageUrl = afterBookingData.pictureUrl; PromoAfterBookingViewController *alert; alert = [[PromoAfterBookingViewController alloc] initWithCityImageUrl:cityImageUrl okClosure:ok cancelClosure:cancel]; [self.ownerController presentViewController:alert animated:YES completion:nil]; - [MWMEye promoAfterBookingShownWithCityId:afterBooking.promoId]; + [MWMEye promoAfterBookingShownWithCityId:afterBookingData.promoId]; return YES; } diff --git a/iphone/Maps/Core/PromoCampaign/PromoAfterBookingCampaign/PromoAfterBookingCampaign.swift b/iphone/Maps/Core/PromoCampaign/PromoAfterBookingCampaign/PromoAfterBookingCampaign.swift index 42b6539fa6..0e967b64e2 100644 --- a/iphone/Maps/Core/PromoCampaign/PromoAfterBookingCampaign/PromoAfterBookingCampaign.swift +++ b/iphone/Maps/Core/PromoCampaign/PromoAfterBookingCampaign/PromoAfterBookingCampaign.swift @@ -1,25 +1,12 @@ @objc class PromoAfterBookingCampaign: NSObject, IPromoCampaign { - private var adapter: PromoAfterBookingCampaignAdapter? + @objc var afterBookingData: PromoAfterBookingData { + return PromoAfterBookingCampaignAdapter.afterBookingData() + } - @objc let promoId: String - @objc let promoUrl: String - @objc let pictureUrl: String - - var enabled: Bool { - return adapter != nil + @objc var enabled: Bool { + return true; } required override init() { - adapter = PromoAfterBookingCampaignAdapter() - guard let adapter = adapter else{ - promoId = "" - promoUrl = "" - pictureUrl = "" - return; - } - - promoId = adapter.promoId - promoUrl = adapter.promoUrl - pictureUrl = adapter.pictureUrl } }