From fe14c1589c66bee21555a944b464875adae7ef37 Mon Sep 17 00:00:00 2001 From: Alexander Borsuk Date: Sat, 29 Jan 2022 16:51:57 +0100 Subject: [PATCH] [ios] Removed unnecessary Rate dialog We already have a question mark to rate us non-intrusively and to avoid frustration. Signed-off-by: Alexander Borsuk --- iphone/CoreApi/CoreApi/Common/AppInfo.h | 1 - iphone/CoreApi/CoreApi/Common/AppInfo.mm | 50 +--- .../AlertController/MWMAlertViewController.h | 1 - .../AlertController/MWMAlertViewController.mm | 4 - .../Classes/CustomAlert/BaseAlert/MWMAlert.h | 1 - .../Classes/CustomAlert/BaseAlert/MWMAlert.mm | 5 - .../RateAlert/MWMFeedbackAlert.xib | 117 -------- .../CustomAlert/RateAlert/MWMRateAlert.h | 7 - .../CustomAlert/RateAlert/MWMRateAlert.mm | 176 ------------ .../CustomAlert/RateAlert/MWMRateAlert.xib | 269 ------------------ iphone/Maps/Classes/MapsAppDelegate.h | 1 - iphone/Maps/Classes/MapsAppDelegate.mm | 57 +--- iphone/Maps/Core/Routing/MWMRouter.mm | 1 - iphone/Maps/Maps.xcodeproj/project.pbxproj | 18 -- 14 files changed, 9 insertions(+), 699 deletions(-) delete mode 100644 iphone/Maps/Classes/CustomAlert/RateAlert/MWMFeedbackAlert.xib delete mode 100644 iphone/Maps/Classes/CustomAlert/RateAlert/MWMRateAlert.h delete mode 100644 iphone/Maps/Classes/CustomAlert/RateAlert/MWMRateAlert.mm delete mode 100644 iphone/Maps/Classes/CustomAlert/RateAlert/MWMRateAlert.xib diff --git a/iphone/CoreApi/CoreApi/Common/AppInfo.h b/iphone/CoreApi/CoreApi/Common/AppInfo.h index 7d0727f244..6352d862fd 100644 --- a/iphone/CoreApi/CoreApi/Common/AppInfo.h +++ b/iphone/CoreApi/CoreApi/Common/AppInfo.h @@ -13,7 +13,6 @@ NS_ASSUME_NONNULL_BEGIN + (instancetype)sharedInfo; - (instancetype)init __attribute__((unavailable("init is not available"))); -@property(nonatomic, readonly) NSString * countryCode; @property(nonatomic, readonly) NSString * bundleVersion; @property(nonatomic, readonly) NSString * buildNumber; @property(nonatomic, readonly) NSString * languageId; diff --git a/iphone/CoreApi/CoreApi/Common/AppInfo.mm b/iphone/CoreApi/CoreApi/Common/AppInfo.mm index db43fd5d87..444cdfa406 100644 --- a/iphone/CoreApi/CoreApi/Common/AppInfo.mm +++ b/iphone/CoreApi/CoreApi/Common/AppInfo.mm @@ -10,14 +10,8 @@ #import #import -namespace -{ -std::string const kCountryCodeKey = "CountryCode"; -} // namespace - @interface AppInfo () -@property(nonatomic) NSString * countryCode; @property(nonatomic) NSString * bundleVersion; @property(nonatomic) NSString * buildNumber; @property(nonatomic) NSString * deviceModel; @@ -44,39 +38,6 @@ std::string const kCountryCodeKey = "CountryCode"; #pragma mark - Properties -- (NSString *)countryCode -{ - if (!_countryCode) - { - CTTelephonyNetworkInfo * networkInfo = [[CTTelephonyNetworkInfo alloc] init]; - CTCarrier * carrier = networkInfo.subscriberCellularProvider; - if ([carrier.isoCountryCode length]) // if device can access sim card info - _countryCode = [carrier.isoCountryCode uppercaseString]; - else // else, getting system country code - _countryCode = [[NSLocale.currentLocale objectForKey:NSLocaleCountryCode] uppercaseString]; - - std::string codeString; - if (settings::Get(kCountryCodeKey, codeString)) // if country code stored in settings - { - if (carrier.isoCountryCode) // if device can access sim card info - settings::Set(kCountryCodeKey, - std::string(_countryCode.UTF8String)); // then save new code instead - else - _countryCode = - @(codeString.c_str()); // if device can NOT access sim card info then using saved code - } - else - { - if (_countryCode) - settings::Set(kCountryCodeKey, - std::string(_countryCode.UTF8String)); // saving code first time - else - _countryCode = @""; - } - } - return _countryCode; -} - - (NSString *)bundleVersion { if (!_bundleVersion) @@ -133,9 +94,14 @@ std::string const kCountryCodeKey = "CountryCode"; NSURL * telURL = [NSURL URLWithString:@"tel://"]; if (![UIApplication.sharedApplication canOpenURL:telURL]) return NO; - NSString * networkCode = - [[CTTelephonyNetworkInfo alloc] init].subscriberCellularProvider.mobileNetworkCode; - return networkCode != nil && networkCode.length > 0 && ![networkCode isEqualToString:@"65535"]; + NSDictionary * dict = [[CTTelephonyNetworkInfo alloc] init].serviceSubscriberCellularProviders; + for (id key in dict) + { + NSString * networkCode = [dict objectForKey:key].mobileNetworkCode; + if (networkCode != nil && networkCode.length > 0 && ![networkCode isEqualToString:@"65535"]) + return YES; + } + return NO; } @end diff --git a/iphone/Maps/Classes/CustomAlert/AlertController/MWMAlertViewController.h b/iphone/Maps/Classes/CustomAlert/AlertController/MWMAlertViewController.h index e6c78c4fbb..5fb84da1fb 100644 --- a/iphone/Maps/Classes/CustomAlert/AlertController/MWMAlertViewController.h +++ b/iphone/Maps/Classes/CustomAlert/AlertController/MWMAlertViewController.h @@ -9,7 +9,6 @@ @property(weak, nonatomic, readonly) UIViewController *_Null_unspecified ownerViewController; - (nonnull instancetype)initWithViewController:(nonnull UIViewController *)viewController; -- (void)presentRateAlert; - (void)presentAuthErrorAlertWithRetryBlock:(nonnull MWMVoidBlock)retryBlock; - (void)presentPoint2PointAlertWithOkBlock:(nonnull MWMVoidBlock)okBlock needToRebuild:(BOOL)needToRebuild; - (void)presentRoutingDisclaimerAlertWithOkBlock:(nonnull nonnull MWMVoidBlock)block; diff --git a/iphone/Maps/Classes/CustomAlert/AlertController/MWMAlertViewController.mm b/iphone/Maps/Classes/CustomAlert/AlertController/MWMAlertViewController.mm index 6814644465..2ec8701c91 100644 --- a/iphone/Maps/Classes/CustomAlert/AlertController/MWMAlertViewController.mm +++ b/iphone/Maps/Classes/CustomAlert/AlertController/MWMAlertViewController.mm @@ -46,10 +46,6 @@ static NSString *const kAlertControllerNibIdentifier = @"MWMAlertViewController" #pragma mark - Actions -- (void)presentRateAlert { - [self displayAlert:[MWMAlert rateAlert]]; -} - - (void)presentAuthErrorAlertWithRetryBlock:(nonnull MWMVoidBlock)retryBlock { [self displayAlert:[MWMAlert authErrorAlertWithRetryBlock:retryBlock]]; } diff --git a/iphone/Maps/Classes/CustomAlert/BaseAlert/MWMAlert.h b/iphone/Maps/Classes/CustomAlert/BaseAlert/MWMAlert.h index beb7e61457..a804fdd17c 100644 --- a/iphone/Maps/Classes/CustomAlert/BaseAlert/MWMAlert.h +++ b/iphone/Maps/Classes/CustomAlert/BaseAlert/MWMAlert.h @@ -3,7 +3,6 @@ @property(weak, nonatomic) MWMAlertViewController *alertController; -+ (MWMAlert *)rateAlert; + (MWMAlert *)authErrorAlertWithRetryBlock:(MWMVoidBlock)retryBlock; + (MWMAlert *)locationAlertWithCancelBlock:(MWMVoidBlock)cancelBlock; + (MWMAlert *)routingDisclaimerAlertWithOkBlock:(MWMVoidBlock)block; diff --git a/iphone/Maps/Classes/CustomAlert/BaseAlert/MWMAlert.mm b/iphone/Maps/Classes/CustomAlert/BaseAlert/MWMAlert.mm index bfc2379718..5ed275adb5 100644 --- a/iphone/Maps/Classes/CustomAlert/BaseAlert/MWMAlert.mm +++ b/iphone/Maps/Classes/CustomAlert/BaseAlert/MWMAlert.mm @@ -6,17 +6,12 @@ #import "MWMLocationAlert.h" #import "MWMOsmAuthAlert.h" #import "MWMPlaceDoesntExistAlert.h" -#import "MWMRateAlert.h" #import "MWMRoutingDisclaimerAlert.h" #import "SwiftBridge.h" @implementation MWMAlert -+ (MWMAlert *)rateAlert { - return [MWMRateAlert alert]; -} - + (MWMAlert *)authErrorAlertWithRetryBlock:(MWMVoidBlock)retryBlock { return [MWMDefaultAlert authErrorAlertWithRetryBlock:retryBlock]; } diff --git a/iphone/Maps/Classes/CustomAlert/RateAlert/MWMFeedbackAlert.xib b/iphone/Maps/Classes/CustomAlert/RateAlert/MWMFeedbackAlert.xib deleted file mode 100644 index fd34dbdc54..0000000000 --- a/iphone/Maps/Classes/CustomAlert/RateAlert/MWMFeedbackAlert.xib +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/iphone/Maps/Classes/CustomAlert/RateAlert/MWMRateAlert.h b/iphone/Maps/Classes/CustomAlert/RateAlert/MWMRateAlert.h deleted file mode 100644 index 8457a92db3..0000000000 --- a/iphone/Maps/Classes/CustomAlert/RateAlert/MWMRateAlert.h +++ /dev/null @@ -1,7 +0,0 @@ -#import "MWMAlert.h" - -@interface MWMRateAlert : MWMAlert - -+ (instancetype)alert; - -@end diff --git a/iphone/Maps/Classes/CustomAlert/RateAlert/MWMRateAlert.mm b/iphone/Maps/Classes/CustomAlert/RateAlert/MWMRateAlert.mm deleted file mode 100644 index 93d678ac91..0000000000 --- a/iphone/Maps/Classes/CustomAlert/RateAlert/MWMRateAlert.mm +++ /dev/null @@ -1,176 +0,0 @@ -#import "MWMRateAlert.h" - -#import - -#import "MWMAlertViewController.h" -#import "MWMMailViewController.h" - - -#include "platform/platform.hpp" - -extern NSString * const kUDAlreadyRatedKey; - -static NSString * const kRateAlertEventName = @"rateAlertEvent"; -static NSString * const kRateAlertNibName = @"MWMRateAlert"; -static NSString * const kRateEmail = @"rating@organicmaps.app"; - -@interface MWMRateAlert () - -@property(nonatomic) IBOutletCollection(UIButton) NSArray * buttons; -@property(nonatomic, weak) IBOutlet UIButton * rateButton; -@property(nonatomic, weak) IBOutlet UILabel * title; -@property(nonatomic, weak) IBOutlet UILabel * message; -@property(nonatomic) NSUInteger selectedTag; - -@end - -@implementation MWMRateAlert - -+ (instancetype)alert -{ - MWMRateAlert * alert = - [NSBundle.mainBundle loadNibNamed:kRateAlertNibName owner:self options:nil].firstObject; - [alert configureButtons]; - return alert; -} - -#pragma mark - Actions - -- (void)configureButtons -{ - UIImage * i = [self.buttons.firstObject imageForState:UIControlStateSelected]; - for (UIButton * b in self.buttons) - [b setImage:i forState:(UIControlStateHighlighted | UIControlStateSelected)]; -} - -- (IBAction)starTap:(UIButton *)sender -{ - if (!self.rateButton.enabled) - { - self.rateButton.enabled = YES; - auto color = UIColor.linkBlue; - self.rateButton.layer.borderColor = color.CGColor; - [self.rateButton setTitleColor:color forState:UIControlStateNormal]; - } - - NSUInteger const tag = sender.tag; - if (tag == 5) - { - [self.rateButton setTitle:L(@"rate_the_app") forState:UIControlStateNormal]; - self.message.text = L(@"rate_alert_five_star_message"); - } - else - { - if (tag == 4) - self.message.text = L(@"rate_alert_four_star_message"); - else - self.message.text = L(@"rate_alert_less_than_four_star_message"); - [self.rateButton setTitle:L(@"leave_a_review") forState:UIControlStateNormal]; - } - [self setNeedsLayout]; - for (UIButton * b in self.buttons) - { - if (b.tag > tag) - b.selected = NO; - else - b.selected = YES; - } - self.selectedTag = tag; -} - -- (IBAction)starHighlighted:(UIButton *)sender { [self setHighlighted:sender.tag]; } -- (IBAction)starTouchCanceled -{ - for (UIButton * b in self.buttons) - b.highlighted = NO; -} - -- (IBAction)starDragInside:(UIButton *)sender { [self setHighlighted:sender.tag]; } -- (void)setHighlighted:(NSUInteger)tag -{ - for (UIButton * b in self.buttons) - { - if (b.tag > tag) - b.highlighted = NO; - else - b.highlighted = !b.selected; - } -} - -- (IBAction)doneTap -{ - [self close:nil]; -} - -- (IBAction)rateTap -{ - NSUInteger const tag = self.selectedTag; - if (tag == 5) - { - [UIApplication.sharedApplication rateApp]; - [self close:^{ - auto ud = NSUserDefaults.standardUserDefaults; - [ud setBool:YES forKey:kUDAlreadyRatedKey]; - [ud synchronize]; - }]; - } - else - { - [self sendFeedback]; - } -} - -- (void)sendFeedback -{ - UIViewController * ownerVC = self.alertController.ownerViewController; - if ([MWMMailViewController canSendMail]) - { - NSString * deviceModel = [AppInfo sharedInfo].deviceModel; - NSString * languageCode = NSLocale.preferredLanguages.firstObject; - NSString * language = [[NSLocale localeWithLocaleIdentifier:kLocaleUsedInSupportEmails] - displayNameForKey:NSLocaleLanguageCode - value:languageCode]; - NSString * locale = [NSLocale.currentLocale objectForKey:NSLocaleCountryCode]; - NSString * country = [[NSLocale localeWithLocaleIdentifier:kLocaleUsedInSupportEmails] - displayNameForKey:NSLocaleCountryCode - value:locale]; - NSString * bundleVersion = AppInfo.sharedInfo.bundleVersion; - NSString * text = [NSString stringWithFormat:@"\n\n\n\n- %@ (%@)\n- OMaps %@\n- %@/%@", - deviceModel, UIDevice.currentDevice.systemVersion, - bundleVersion, language, country]; - MWMMailViewController * mailController = [[MWMMailViewController alloc] init]; - mailController.mailComposeDelegate = self; - [mailController setSubject:[NSString stringWithFormat:@"%@ : %@", L(@"rating_just_rated"), - @(self.selectedTag)]]; - [mailController setToRecipients:@[ kRateEmail ]]; - [mailController setMessageBody:text isHTML:NO]; - mailController.navigationBar.tintColor = UIColor.blackColor; - [ownerVC presentViewController:mailController animated:YES completion:nil]; - } - else - { - NSString * text = [NSString stringWithFormat:L(@"email_error_body"), kRateEmail]; - UIAlertController * alert = [UIAlertController alertControllerWithTitle:L(@"email_error_title") - message:text - preferredStyle:UIAlertControllerStyleAlert]; - [alert addAction:[UIAlertAction actionWithTitle:L(@"ok") - style:UIAlertActionStyleDefault - handler:^(UIAlertAction * action) {}]]; - [ownerVC presentViewController:alert animated:YES completion:nil]; - } -} - -#pragma mark - MFMailComposeViewControllerDelegate - -- (void)mailComposeController:(MFMailComposeViewController *)controller - didFinishWithResult:(MFMailComposeResult)result - error:(NSError *)error -{ - [self.alertController.ownerViewController - dismissViewControllerAnimated:YES - completion:^{ - [self close:nil]; - }]; -} - -@end diff --git a/iphone/Maps/Classes/CustomAlert/RateAlert/MWMRateAlert.xib b/iphone/Maps/Classes/CustomAlert/RateAlert/MWMRateAlert.xib deleted file mode 100644 index daa2e13245..0000000000 --- a/iphone/Maps/Classes/CustomAlert/RateAlert/MWMRateAlert.xib +++ /dev/null @@ -1,269 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/iphone/Maps/Classes/MapsAppDelegate.h b/iphone/Maps/Classes/MapsAppDelegate.h index 02599605d1..3c84be4e8e 100644 --- a/iphone/Maps/Classes/MapsAppDelegate.h +++ b/iphone/Maps/Classes/MapsAppDelegate.h @@ -30,7 +30,6 @@ NS_ASSUME_NONNULL_BEGIN - (void)enableDownloadIndicator; - (void)showMap; -- (void)showAlertIfRequired; - (NSUInteger)badgeNumber; diff --git a/iphone/Maps/Classes/MapsAppDelegate.mm b/iphone/Maps/Classes/MapsAppDelegate.mm index 90a3810174..297c36c423 100644 --- a/iphone/Maps/Classes/MapsAppDelegate.mm +++ b/iphone/Maps/Classes/MapsAppDelegate.mm @@ -35,14 +35,10 @@ // If you have a "missing header error" here, then please run configure.sh script in the root repo // folder. -// Alert keys. -extern NSString *const kUDAlreadyRatedKey = @"UserAlreadyRatedApp"; - namespace { NSString *const kUDLastLaunchDateKey = @"LastLaunchDate"; NSString *const kUDSessionsCountKey = @"SessionsCount"; NSString *const kUDFirstVersionKey = @"FirstVersion"; -NSString *const kUDLastRateRequestDate = @"LastRateRequestDate"; NSString *const kUDLastShareRequstDate = @"LastShareRequestDate"; NSString *const kUDAutoNightModeOff = @"AutoNightModeOff"; NSString *const kIOSIDFA = @"IFA"; @@ -99,11 +95,6 @@ using namespace osm_auth_ios; forInputLocale:[MWMSettings spotlightLocaleLanguageId]]; } -- (void)incrementSessionsCountAndCheckForAlert { - [self incrementSessionCount]; - [self showAlertIfRequired]; -} - - (void)commonInit { [HttpThreadImpl setDownloadIndicatorProtocol:self]; InitLocalizedStrings(); @@ -130,7 +121,7 @@ using namespace osm_auth_ios; if ([FirstSession isFirstSession]) { [self firstLaunchSetup]; } else { - [self incrementSessionsCountAndCheckForAlert]; + [self incrementSessionCount]; } [self enableTTSForTheFirstTime]; @@ -401,54 +392,8 @@ using namespace osm_auth_ios; } } -- (void)showAlertIfRequired { - if ([self shouldShowRateAlert]) { - [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(showRateAlert) object:nil]; - [self performSelector:@selector(showRateAlert) withObject:nil afterDelay:30.0]; - } -} - #pragma mark - Rate -- (void)showRateAlert { - if (!Platform::IsConnected() || [MWMRouter isRoutingActive]) - return; - - [[MWMAlertViewController activeAlertController] presentRateAlert]; - [NSUserDefaults.standardUserDefaults setObject:NSDate.date forKey:kUDLastRateRequestDate]; -} - -- (BOOL)shouldShowRateAlert { - /// @todo Uncomment in follow-up release. - /* - NSUInteger const kMaximumSessionCountForShowingAlert = 21; - NSUserDefaults const *const standartDefaults = NSUserDefaults.standardUserDefaults; - if ([standartDefaults boolForKey:kUDAlreadyRatedKey]) - return NO; - - NSUInteger const sessionCount = [standartDefaults integerForKey:kUDSessionsCountKey]; - if (sessionCount > kMaximumSessionCountForShowingAlert) - return NO; - - NSDate *const lastRateRequestDate = [standartDefaults objectForKey:kUDLastRateRequestDate]; - NSInteger const daysFromLastRateRequest = lastRateRequestDate.daysToNow; - // Do not show more than one alert per day. - if (lastRateRequestDate != nil && daysFromLastRateRequest == 0) - return NO; - - if (self.userIsNew) { - // It's new user. - if (sessionCount == 3 || sessionCount == 10 || sessionCount == kMaximumSessionCountForShowingAlert) - return YES; - } else { - // User just got updated. Show alert, if it first session or if 90 days spent. - if (daysFromLastRateRequest >= 90 || daysFromLastRateRequest == 0) - return YES; - } - */ - return NO; -} - - (BOOL)userIsNew { NSString *currentVersion = [NSBundle.mainBundle objectForInfoDictionaryKey:(NSString *)kCFBundleVersionKey]; NSString *firstVersion = [NSUserDefaults.standardUserDefaults stringForKey:kUDFirstVersionKey]; diff --git a/iphone/Maps/Core/Routing/MWMRouter.mm b/iphone/Maps/Core/Routing/MWMRouter.mm index c08090747e..87a5476db7 100644 --- a/iphone/Maps/Core/Routing/MWMRouter.mm +++ b/iphone/Maps/Core/Routing/MWMRouter.mm @@ -325,7 +325,6 @@ char const *kRenderAltitudeImagesQueueLabel = "mapsme.mwmrouter.renderAltitudeIm if (removeRoutePoints) GetFramework().GetRoutingManager().DeleteSavedRoutePoints(); [MWMThemeManager setAutoUpdates:NO]; - [[MapsAppDelegate theApp] showAlertIfRequired]; } - (void)updateFollowingInfo { diff --git a/iphone/Maps/Maps.xcodeproj/project.pbxproj b/iphone/Maps/Maps.xcodeproj/project.pbxproj index 5de312f207..ba48cb269d 100644 --- a/iphone/Maps/Maps.xcodeproj/project.pbxproj +++ b/iphone/Maps/Maps.xcodeproj/project.pbxproj @@ -299,7 +299,6 @@ 6741A97D1BF340DE002C974C /* synonyms.txt in Resources */ = {isa = PBXBuildFile; fileRef = FAAEA7D0161BD26600CCD661 /* synonyms.txt */; }; 6741A97E1BF340DE002C974C /* drules_proto_dark.bin in Resources */ = {isa = PBXBuildFile; fileRef = 4A00DBDE1AB704C400113624 /* drules_proto_dark.bin */; }; 6741A97F1BF340DE002C974C /* resources-mdpi_clear in Resources */ = {isa = PBXBuildFile; fileRef = 4A23D1581B8B4DD700D4EB6F /* resources-mdpi_clear */; }; - 6741A9811BF340DE002C974C /* MWMRateAlert.xib in Resources */ = {isa = PBXBuildFile; fileRef = F61579351AC2CEB60032D8E9 /* MWMRateAlert.xib */; }; 6741A9871BF340DE002C974C /* drules_proto_clear.bin in Resources */ = {isa = PBXBuildFile; fileRef = 4A23D1561B8B4DD700D4EB6F /* drules_proto_clear.bin */; }; 6741A98B1BF340DE002C974C /* MWMCircularProgress.xib in Resources */ = {isa = PBXBuildFile; fileRef = 349A35771B53D4C9009677EE /* MWMCircularProgress.xib */; }; 6741A9901BF340DE002C974C /* resources-mdpi_dark in Resources */ = {isa = PBXBuildFile; fileRef = 4A7D89C21B2EBF3B00AC843E /* resources-mdpi_dark */; }; @@ -313,7 +312,6 @@ 6741A9B01BF340DE002C974C /* MapsAppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1D3623250D0F684500981E51 /* MapsAppDelegate.mm */; }; 6741A9B71BF340DE002C974C /* EAGLView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 46F26CD710F623BA00ECCA39 /* EAGLView.mm */; }; 6741A9B81BF340DE002C974C /* MapViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = EED10A4411F78D120095FAD4 /* MapViewController.mm */; }; - 6741A9B91BF340DE002C974C /* MWMRateAlert.mm in Sources */ = {isa = PBXBuildFile; fileRef = F61579331AC2CE9A0032D8E9 /* MWMRateAlert.mm */; }; 6741A9C01BF340DE002C974C /* MWMTextView.m in Sources */ = {isa = PBXBuildFile; fileRef = F6588E2B1B15C26700EE1E58 /* MWMTextView.m */; }; 6741A9CF1BF340DE002C974C /* MWMLocationAlert.m in Sources */ = {isa = PBXBuildFile; fileRef = F6BBF2C51B4FFB72000CF8E2 /* MWMLocationAlert.m */; }; 6741A9D41BF340DE002C974C /* MWMAlertViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = F64F19821AB81A00006EAF7E /* MWMAlertViewController.mm */; }; @@ -1357,9 +1355,6 @@ F607C1841C032A8800B53A87 /* resources-hdpi_dark */ = {isa = PBXFileReference; lastKnownFileType = folder; name = "resources-hdpi_dark"; path = "../../data/resources-hdpi_dark"; sourceTree = ""; }; F607C18C1C047FDC00B53A87 /* MWMSegue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMSegue.h; sourceTree = ""; }; F607C18D1C047FDC00B53A87 /* MWMSegue.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MWMSegue.m; sourceTree = ""; }; - F61579321AC2CE9A0032D8E9 /* MWMRateAlert.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMRateAlert.h; sourceTree = ""; }; - F61579331AC2CE9A0032D8E9 /* MWMRateAlert.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; lineEnding = 0; path = MWMRateAlert.mm; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; - F61579351AC2CEB60032D8E9 /* MWMRateAlert.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MWMRateAlert.xib; sourceTree = ""; }; F623DA6A1C9C2731006A3436 /* opening_hours_how_to_edit.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; name = opening_hours_how_to_edit.html; path = ../../data/opening_hours_how_to_edit.html; sourceTree = ""; }; F62607FC207B790300176C5A /* SpinnerAlert.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SpinnerAlert.swift; sourceTree = ""; }; F62607FE207B83C400176C5A /* MWMSpinnerAlert.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MWMSpinnerAlert.xib; sourceTree = ""; }; @@ -2955,16 +2950,6 @@ name = MapViewController; sourceTree = ""; }; - F61579301AC2CE760032D8E9 /* RateAlert */ = { - isa = PBXGroup; - children = ( - F61579321AC2CE9A0032D8E9 /* MWMRateAlert.h */, - F61579331AC2CE9A0032D8E9 /* MWMRateAlert.mm */, - F61579351AC2CEB60032D8E9 /* MWMRateAlert.xib */, - ); - path = RateAlert; - sourceTree = ""; - }; F62607FB207B78E300176C5A /* SpinnerAlert */ = { isa = PBXGroup; children = ( @@ -3009,7 +2994,6 @@ 346B42A81DD5E3D20094EBEE /* LocationNotFoundAlert */, F64F19801AB81A00006EAF7E /* AlertController */, F64F19841AB81A00006EAF7E /* BaseAlert */, - F61579301AC2CE760032D8E9 /* RateAlert */, F64F19871AB81A00006EAF7E /* DefaultAlert */, F64F19931AB81A00006EAF7E /* DownloadTransitMapsAlert */, ); @@ -3852,7 +3836,6 @@ 34AB66711FC5AA330078E451 /* TransportTransitTrain.xib in Resources */, 47DF72BB225356BF0004AB10 /* DrivingOptions.storyboard in Resources */, F6E2FE851E097BA00083EBEC /* MWMPlacePageOpeningHoursWeekDayView.xib in Resources */, - 6741A9811BF340DE002C974C /* MWMRateAlert.xib in Resources */, 6741A9601BF340DE002C974C /* MWMRoutingDisclaimerAlert.xib in Resources */, B3E3B4FD20D463B700DA8C13 /* BMCCategoriesHeader.xib in Resources */, F6E2FF001E097BA00083EBEC /* SearchCategoryCell.xib in Resources */, @@ -4014,7 +3997,6 @@ 6741A9B71BF340DE002C974C /* EAGLView.mm in Sources */, 6741A9B81BF340DE002C974C /* MapViewController.mm in Sources */, 34AB662C1FC5AA330078E451 /* RouteManagerViewModel.swift in Sources */, - 6741A9B91BF340DE002C974C /* MWMRateAlert.mm in Sources */, 3404F48B202894EA0090E401 /* BMCViewController.swift in Sources */, 349D1ABC1E2D05EF004A2006 /* SearchBar.swift in Sources */, F6E2FF3F1E097BA00083EBEC /* MWMSearchTableViewController.mm in Sources */,