[iOS] Drop products features on the place page

Signed-off-by: Jean-Baptiste Charron <jeanbaptiste.charron@outlook.fr>
This commit is contained in:
Jean-Baptiste
2025-07-06 13:15:14 +02:00
committed by Yannik Bloscheck
parent 9a759229f9
commit 3abf354099
61 changed files with 1 additions and 682 deletions

View File

@@ -92,11 +92,6 @@
ED46DE3A2D09BE21007CACD6 /* PlacePageTrackData.mm in Sources */ = {isa = PBXBuildFile; fileRef = ED46DE382D09BE21007CACD6 /* PlacePageTrackData.mm */; };
ED46DE3B2D09BE21007CACD6 /* PlacePageTrackData.h in Headers */ = {isa = PBXBuildFile; fileRef = ED46DE372D09BE21007CACD6 /* PlacePageTrackData.h */; settings = {ATTRIBUTES = (Public, ); }; };
ED46DE3C2D09BE21007CACD6 /* PlacePageTrackData+Core.h in Headers */ = {isa = PBXBuildFile; fileRef = ED46DE392D09BE21007CACD6 /* PlacePageTrackData+Core.h */; };
ED49D7222CED0395004AF27E /* ProductsConfiguration+Core.mm in Sources */ = {isa = PBXBuildFile; fileRef = ED49D7202CED0395004AF27E /* ProductsConfiguration+Core.mm */; };
ED49D7242CED03AC004AF27E /* ProductsConfiguration+Core.h in Headers */ = {isa = PBXBuildFile; fileRef = ED49D7232CED03A8004AF27E /* ProductsConfiguration+Core.h */; };
ED49D75B2CEF8BD2004AF27E /* ProductsConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED49D7562CEF850F004AF27E /* ProductsConfiguration.swift */; };
ED49D75F2CEFA8C0004AF27E /* Product+Core.h in Headers */ = {isa = PBXBuildFile; fileRef = ED49D75E2CEFA8C0004AF27E /* Product+Core.h */; };
ED49D7612CEFA8E1004AF27E /* Product+Core.mm in Sources */ = {isa = PBXBuildFile; fileRef = ED49D7602CEFA8E1004AF27E /* Product+Core.mm */; };
ED7306F42D0C5D2400523AA1 /* TrackInfo.mm in Sources */ = {isa = PBXBuildFile; fileRef = ED7306F12D0C5D2400523AA1 /* TrackInfo.mm */; };
ED7306F52D0C5D2400523AA1 /* TrackInfo+Core.h in Headers */ = {isa = PBXBuildFile; fileRef = ED7306F22D0C5D2400523AA1 /* TrackInfo+Core.h */; };
ED7306F62D0C5D2400523AA1 /* TrackInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = ED7306F02D0C5D2400523AA1 /* TrackInfo.h */; settings = {ATTRIBUTES = (Public, ); }; };
@@ -205,11 +200,6 @@
ED46DE372D09BE21007CACD6 /* PlacePageTrackData.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PlacePageTrackData.h; sourceTree = "<group>"; };
ED46DE382D09BE21007CACD6 /* PlacePageTrackData.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = PlacePageTrackData.mm; sourceTree = "<group>"; };
ED46DE392D09BE21007CACD6 /* PlacePageTrackData+Core.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PlacePageTrackData+Core.h"; sourceTree = "<group>"; };
ED49D7202CED0395004AF27E /* ProductsConfiguration+Core.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = "ProductsConfiguration+Core.mm"; sourceTree = "<group>"; };
ED49D7232CED03A8004AF27E /* ProductsConfiguration+Core.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "ProductsConfiguration+Core.h"; sourceTree = "<group>"; };
ED49D7562CEF850F004AF27E /* ProductsConfiguration.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProductsConfiguration.swift; sourceTree = "<group>"; };
ED49D75E2CEFA8C0004AF27E /* Product+Core.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Product+Core.h"; sourceTree = "<group>"; };
ED49D7602CEFA8E1004AF27E /* Product+Core.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = "Product+Core.mm"; sourceTree = "<group>"; };
ED7306F02D0C5D2400523AA1 /* TrackInfo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TrackInfo.h; sourceTree = "<group>"; };
ED7306F12D0C5D2400523AA1 /* TrackInfo.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = TrackInfo.mm; sourceTree = "<group>"; };
ED7306F22D0C5D2400523AA1 /* TrackInfo+Core.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "TrackInfo+Core.h"; sourceTree = "<group>"; };
@@ -341,11 +331,6 @@
47F701ED238C86F000D18E95 /* PlacePageButtonsData.h */,
47F701F1238C877C00D18E95 /* PlacePageButtonsData+Core.h */,
47F701EE238C86F000D18E95 /* PlacePageButtonsData.mm */,
ED49D7562CEF850F004AF27E /* ProductsConfiguration.swift */,
ED49D7232CED03A8004AF27E /* ProductsConfiguration+Core.h */,
ED49D7202CED0395004AF27E /* ProductsConfiguration+Core.mm */,
ED49D75E2CEFA8C0004AF27E /* Product+Core.h */,
ED49D7602CEFA8E1004AF27E /* Product+Core.mm */,
);
path = Common;
sourceTree = "<group>";
@@ -530,7 +515,6 @@
9957FADB237ACB1100855F48 /* DeepLinkSearchData.h in Headers */,
479F7056234FB7F200011E2E /* MWMBookmarksManager.h in Headers */,
47942D83237CC52E00DEFAE3 /* MWMOpeningHours.h in Headers */,
ED49D7242CED03AC004AF27E /* ProductsConfiguration+Core.h in Headers */,
4718C4322355FC3C00640DF1 /* MWMNetworkPolicy.h in Headers */,
47CA68EC2506F6F100671019 /* MWMTrack+Core.h in Headers */,
47F4F1FD23A3D1AC0022FD56 /* MWMMapNodeAttributes+Core.h in Headers */,
@@ -540,7 +524,6 @@
47942DA0237D954400DEFAE3 /* PlacePageBookmarkData+Core.h in Headers */,
479F704B234F78AB00011E2E /* MWMFrameworkHelper.h in Headers */,
47D9019923AC236100D9364C /* MWMMapUpdateInfo+Core.h in Headers */,
ED49D75F2CEFA8C0004AF27E /* Product+Core.h in Headers */,
47942D6E237CC3E800DEFAE3 /* PlacePagePreviewData+Core.h in Headers */,
47942D87237CC55800DEFAE3 /* MWMOpeningHoursCommon.h in Headers */,
CE838D272D9D834F00476DD0 /* PlacePagePhone.h in Headers */,
@@ -662,14 +645,12 @@
47D9019623AC22E500D9364C /* MWMMapUpdateInfo.mm in Sources */,
47CA68E42506D29000671019 /* MWMBookmarkColor.mm in Sources */,
471AB98E23AB925D00F56D49 /* MWMMapSearchResult.mm in Sources */,
ED49D7612CEFA8E1004AF27E /* Product+Core.mm in Sources */,
47C637D62354AEBE00E12DE0 /* MWMMapOverlayManager.mm in Sources */,
475784C32344B422008291A4 /* Framework.cpp in Sources */,
4718C4332355FC3C00640DF1 /* MWMNetworkPolicy.mm in Sources */,
47CA68E92506F61400671019 /* MWMTrack.mm in Sources */,
472602A924092C5B00731135 /* MWMGeoUtil.mm in Sources */,
47F701F0238C86F000D18E95 /* PlacePageButtonsData.mm in Sources */,
ED49D7222CED0395004AF27E /* ProductsConfiguration+Core.mm in Sources */,
9940622123EAC57900493D1A /* ElevationHeightPoint.m in Sources */,
CE838D282D9D834F00476DD0 /* PlacePagePhone.m in Sources */,
ED965B2A2CDA1C440049E39E /* DateTimeFormatter.swift in Sources */,
@@ -677,7 +658,6 @@
47E8163623B1889C008FD836 /* MWMStorage.mm in Sources */,
ED965B0D2CD67A470049E39E /* DistanceFormatter.mm in Sources */,
EDC4E3512C5D222D009286A2 /* RecentlyDeletedCategory.mm in Sources */,
ED49D75B2CEF8BD2004AF27E /* ProductsConfiguration.swift in Sources */,
ED46DE3A2D09BE21007CACD6 /* PlacePageTrackData.mm in Sources */,
47CA68DE2502022400671019 /* MWMBookmark.mm in Sources */,
9957FAE9237AE5B000855F48 /* Logger.mm in Sources */,

View File

@@ -9,13 +9,6 @@
typedef NS_ENUM(NSUInteger, MWMZoomMode) { MWMZoomModeIn = 0, MWMZoomModeOut };
typedef NS_ENUM(NSInteger, ProductsPopupCloseReason) {
ProductsPopupCloseReasonClose,
ProductsPopupCloseReasonSelectProduct,
ProductsPopupCloseReasonAlreadyDonated,
ProductsPopupCloseReasonRemindLater
};
NS_ASSUME_NONNULL_BEGIN
typedef void (^SearchInDownloaderCompletions)(NSArray<MWMMapSearchResult *> *results, BOOL finished);
@@ -35,19 +28,8 @@ typedef void (^TrackRecordingUpdatedHandler)(TrackInfo * _Nonnull trackInfo);
@end
@class ProductsConfiguration;
@class Product;
@protocol ProductsManager <NSObject>
+ (nullable ProductsConfiguration *)getProductsConfiguration;
+ (void)didCloseProductsPopupWithReason:(ProductsPopupCloseReason)reason;
+ (void)didSelectProduct:(Product *)product;
@end
NS_SWIFT_NAME(FrameworkHelper)
@interface MWMFrameworkHelper : NSObject<TrackRecorder, ProductsManager>
@interface MWMFrameworkHelper : NSObject<TrackRecorder>
+ (void)processFirstLaunch:(BOOL)hasLocation;
+ (void)setVisibleViewport:(CGRect)rect scaleFactor:(CGFloat)scale;

View File

@@ -1,7 +1,5 @@
#import "MWMFrameworkHelper.h"
#import "MWMMapSearchResult+Core.h"
#import "ProductsConfiguration+Core.h"
#import "Product+Core.h"
#import "TrackInfo+Core.h"
#import "ElevationProfileData+Core.h"
@@ -12,19 +10,6 @@
#include "platform/local_country_file_utils.hpp"
#include "platform/network_policy_ios.h"
static Framework::ProductsPopupCloseReason ConvertProductPopupCloseReasonToCore(ProductsPopupCloseReason reason) {
switch (reason) {
case ProductsPopupCloseReasonClose:
return Framework::ProductsPopupCloseReason::Close;
case ProductsPopupCloseReasonSelectProduct:
return Framework::ProductsPopupCloseReason::SelectProduct;
case ProductsPopupCloseReasonAlreadyDonated:
return Framework::ProductsPopupCloseReason::AlreadyDonated;
case ProductsPopupCloseReasonRemindLater:
return Framework::ProductsPopupCloseReason::RemindLater;
}
}
@implementation MWMFrameworkHelper
+ (void)processFirstLaunch:(BOOL)hasLocation {
@@ -255,19 +240,4 @@ static Framework::ProductsPopupCloseReason ConvertProductPopupCloseReasonToCore(
return [[ElevationProfileData alloc] initWithElevationInfo:GetFramework().GetTrackRecordingElevationInfo()];
}
// MARK: - ProductsManager
+ (nullable ProductsConfiguration *)getProductsConfiguration {
auto const & config = GetFramework().GetProductsConfiguration();
return config.has_value() ? [[ProductsConfiguration alloc] init:config.value()] : nil;
}
+ (void)didCloseProductsPopupWithReason:(ProductsPopupCloseReason)reason {
GetFramework().DidCloseProductsPopup(ConvertProductPopupCloseReasonToCore(reason));
}
+ (void)didSelectProduct:(Product *)product {
GetFramework().DidSelectProduct({product.title.UTF8String, product.link.UTF8String});
}
@end

View File

@@ -1,10 +0,0 @@
#include <CoreApi/CoreApi-Swift.h>
#include <CoreApi/Framework.h>
#include "platform/products.hpp"
@interface Product (Core)
- (nonnull instancetype)init:(products::ProductsConfig::Product const &)product;
@end

View File

@@ -1,11 +0,0 @@
#import "Product+Core.h"
@implementation Product (Core)
- (nonnull instancetype)init:(products::ProductsConfig::Product const &)product {
self = [self initWithTitle:[NSString stringWithCString:product.GetTitle().c_str() encoding:NSUTF8StringEncoding]
link:[NSString stringWithCString:product.GetLink().c_str() encoding:NSUTF8StringEncoding]];
return self;
}
@end

View File

@@ -1,14 +0,0 @@
#include <CoreApi/CoreApi-Swift.h>
#include <CoreApi/Framework.h>
#include "platform/products.hpp"
NS_ASSUME_NONNULL_BEGIN
@interface ProductsConfiguration (Core)
- (nonnull instancetype)init:(products::ProductsConfig const &)config;
@end
NS_ASSUME_NONNULL_END

View File

@@ -1,15 +0,0 @@
#import "ProductsConfiguration+Core.h"
#import "Product+Core.h"
@implementation ProductsConfiguration (Core)
- (nonnull instancetype)init:(products::ProductsConfig const &)config {
auto const & coreProducts = config.GetProducts();
NSMutableArray<Product *> * products = [[NSMutableArray<Product *> alloc] initWithCapacity:coreProducts.size()];
for (auto const & product : coreProducts)
[products addObject:[[Product alloc] init:product]];
self = [self initWithPlacePagePrompt:[NSString stringWithCString:config.GetPlacePagePrompt().c_str() encoding:NSUTF8StringEncoding] products:products];
return self;
}
@end

View File

@@ -1,23 +0,0 @@
import Foundation
@objcMembers
public final class Product: NSObject {
public let title: String
public let link: String
public init(title: String, link: String) {
self.title = title
self.link = link
}
}
@objcMembers
public final class ProductsConfiguration: NSObject {
public let placePagePrompt: String
public let products: [Product]
public init(placePagePrompt: String, products: [Product]) {
self.placePagePrompt = placePagePrompt
self.products = products
}
}

View File

@@ -294,12 +294,6 @@
/* Button in the main menu */
"donate" = "Skenk";
/* Tex label above the Donate button */
"donate_description" = "Skenk om saam die beste kaarte te bou!";
"already_donated" = "Reeds geskenk";
"remind_me_later" = "Herinner later";
"support_us" = "Ondersteun CoMaps";
/* Button in the main Help dialog */
"copyright" = "Kopiereg";

View File

@@ -294,12 +294,6 @@
/* Button in the main menu */
"donate" = "تبرع";
/* Tex label above the Donate button */
"donate_description" = "تبرع لبناء أفضل الخرائط معًا!";
"already_donated" = "تم التبرع";
"remind_me_later" = "ذكر لاحقاً";
"support_us" = "دعم CoMaps";
/* Button in the main Help dialog */
"copyright" = "حقوق النشر";

View File

@@ -294,12 +294,6 @@
/* Button in the main menu */
"donate" = "Bağışlamaq";
/* Tex label above the Donate button */
"donate_description" = "Ən yaxşı xəritələri birlikdə qurmaq üçün ianə edin!";
"already_donated" = "Artıq ianə edildi";
"remind_me_later" = "Daha sonra xatırlat";
"support_us" = "CoMaps-i dəstəkləmək";
/* Button in the main Help dialog */
"copyright" = "Müəllif hüququ";

View File

@@ -294,12 +294,6 @@
/* Button in the main menu */
"donate" = "Падтрымаць грашыма";
/* Tex label above the Donate button */
"donate_description" = "Падтрымайць, каб разам ствараць лепшыя карты!";
"already_donated" = "Ужо ахвяравана";
"remind_me_later" = "Нагадаць пазней";
"support_us" = "Падтрымаць CoMaps";
/* Button in the main Help dialog */
"copyright" = "Аўтарскія правы";

View File

@@ -294,12 +294,6 @@
/* Button in the main menu */
"donate" = "Дарете";
/* Tex label above the Donate button */
"donate_description" = "Дарете, за да създадем заедно най-добрите карти!";
"already_donated" = "Вече дарено";
"remind_me_later" = "Напомни по-късно";
"support_us" = "Подкрепи CoMaps";
/* Button in the main Help dialog */
"copyright" = "Авторски права";

View File

@@ -294,12 +294,6 @@
/* Button in the main menu */
"donate" = "Donatiu";
/* Tex label above the Donate button */
"donate_description" = "Fes una donació per construir els millors mapes junts!";
"already_donated" = "Ja donat";
"remind_me_later" = "Recorda més tard";
"support_us" = "Donar suport a CoMaps";
/* Button in the main Help dialog */
"copyright" = "Drets dautor";

View File

@@ -294,12 +294,6 @@
/* Button in the main menu */
"donate" = "Darovat";
/* Tex label above the Donate button */
"donate_description" = "Přispějte, abychom společně vytvořili ty nejlepší mapy!";
"already_donated" = "Již darováno";
"remind_me_later" = "Připomeň později";
"support_us" = "Podpořit CoMaps";
/* Button in the main Help dialog */
"copyright" = "Autorská práva";

View File

@@ -294,12 +294,6 @@
/* Button in the main menu */
"donate" = "Doner";
/* Tex label above the Donate button */
"donate_description" = "Donér for at bygge de bedste kort sammen!";
"already_donated" = "Allerede doneret";
"remind_me_later" = "Påmind mig senere";
"support_us" = "Støt CoMaps";
/* Button in the main Help dialog */
"copyright" = "Copyright";

View File

@@ -294,12 +294,6 @@
/* Button in the main menu */
"donate" = "Spenden";
/* Tex label above the Donate button */
"donate_description" = "Spende, um gemeinsam die besten Karten zu erstellen!";
"already_donated" = "Bereits gespendet";
"remind_me_later" = "Später erinnern";
"support_us" = "CoMaps unterstützen";
/* Button in the main Help dialog */
"copyright" = "Copyright";

View File

@@ -294,12 +294,6 @@
/* Button in the main menu */
"donate" = "Δωρεά";
/* Tex label above the Donate button */
"donate_description" = "Κάντε δωρεά για να φτιάξουμε μαζί τους καλύτερους χάρτες!";
"already_donated" = "Ήδη δωρεά";
"remind_me_later" = "Υπενθύμισε αργότερα";
"support_us" = "Υποστήριξε το CoMaps";
/* Button in the main Help dialog */
"copyright" = "Πνευματικά δικαιώματα";

View File

@@ -294,12 +294,6 @@
/* Button in the main menu */
"donate" = "Donate";
/* Tex label above the Donate button */
"donate_description" = "Donate to build the best maps together!";
"already_donated" = "Already donated";
"remind_me_later" = "Remind later";
"support_us" = "Support CoMaps";
/* Button in the main Help dialog */
"copyright" = "Copyright";

View File

@@ -306,12 +306,6 @@
/* Button in the main menu */
"donate" = "Donate";
/* Tex label above the Donate button */
"donate_description" = "Donate to build the best maps together!";
"already_donated" = "Already donated";
"remind_me_later" = "Remind later";
"support_us" = "Support CoMaps";
/* Button in the main Help dialog */
"copyright" = "Copyright";

View File

@@ -294,12 +294,6 @@
/* Button in the main menu */
"donate" = "Donar";
/* Tex label above the Donate button */
"donate_description" = "¡Dona para construir los mejores mapas juntos!";
"already_donated" = "Ya donado";
"remind_me_later" = "Recordar más tarde";
"support_us" = "Apoyar CoMaps";
/* Button in the main Help dialog */
"copyright" = "Derechos de autor";

View File

@@ -294,12 +294,6 @@
/* Button in the main menu */
"donate" = "Donar";
/* Tex label above the Donate button */
"donate_description" = "Haga un donativo para desarrollar juntos los mejores mapas.";
"already_donated" = "Ya he donado";
"remind_me_later" = "Recordar más tarde";
"support_us" = "Apoyar CoMaps";
/* Button in the main Help dialog */
"copyright" = "Derechos de autor";

View File

@@ -294,12 +294,6 @@
/* Button in the main menu */
"donate" = "Anneta";
/* Tex label above the Donate button */
"donate_description" = "Anneta, et luua koos parimaid kaarte!";
"already_donated" = "Juba annetasin";
"remind_me_later" = "Meenuta hiljem";
"support_us" = "Toeta CoMapsi";
/* Button in the main Help dialog */
"copyright" = "Autoriõigused";

View File

@@ -294,12 +294,6 @@
/* Button in the main menu */
"donate" = "Dohaintza eman";
/* Tex label above the Donate button */
"donate_description" = "Eman dohaintza elkarrekin mapa onenak eraikitzeko!";
"already_donated" = "Dohaintza jada emana";
"remind_me_later" = "Gogoratu geroago";
"support_us" = "Sustatu CoMaps";
/* Button in the main Help dialog */
"copyright" = "Egile eskubideak";

View File

@@ -294,12 +294,6 @@
/* Button in the main menu */
"donate" = "حمایت مالی";
/* Tex label above the Donate button */
"donate_description" = "کمک مالی کنید تا بهترین نقشه ها را با هم بسازید!";
"already_donated" = "قبلاً اهدا شده";
"remind_me_later" = "بعداً یادآوری کن";
"support_us" = "پشتیبانی از CoMaps";
/* Button in the main Help dialog */
"copyright" = "حق نشر و کپی رایت";

View File

@@ -294,12 +294,6 @@
/* Button in the main menu */
"donate" = "Lahjoita";
/* Tex label above the Donate button */
"donate_description" = "Lahjoittakaa, jotta voimme rakentaa parhaita karttoja yhdessä!";
"already_donated" = "Jo lahjoitettu";
"remind_me_later" = "Muistuta myöhemmin";
"support_us" = "Tukea CoMaps";
/* Button in the main Help dialog */
"copyright" = "Tekijänoikeudet";

View File

@@ -294,12 +294,6 @@
/* Button in the main menu */
"donate" = "Faire un don";
/* Tex label above the Donate button */
"donate_description" = "Fais un don pour construire ensemble les meilleures cartes !";
"already_donated" = "Déjà donné";
"remind_me_later" = "Rappeler plus tard";
"support_us" = "Soutenir CoMaps";
/* Button in the main Help dialog */
"copyright" = "Tous droits réservés";

View File

@@ -126,9 +126,6 @@
"help" = "Axuda";
"faq" = "Preguntas frecuentes";
"donate" = "Doar";
"remind_me_later" = "Lembrar máis tarde";
"already_donated" = "Xa doei";
"support_us" = "Apoiar CoMaps";
"copyright" = "Dereitos de autor";
"report_a_bug" = "Informar dun fallo";
"report_incorrect_map_bug" = "Informar ou corrixir datos de mapa incorrectos";

View File

@@ -294,12 +294,6 @@
/* Button in the main menu */
"donate" = "לתרום";
/* Tex label above the Donate button */
"donate_description" = "תרמו כדי לבנות יחד את המפות הטובות ביותר!";
"already_donated" = "כבר נתרם";
"remind_me_later" = "הזכר מאוחר יותר";
"support_us" = "לתמוך ב-CoMaps";
/* Button in the main Help dialog */
"copyright" = "זכויות יוצרים";

View File

@@ -294,12 +294,6 @@
/* Button in the main menu */
"donate" = "दान देना";
/* Tex label above the Donate button */
"donate_description" = "एक साथ सर्वोत्तम मानचित्र बनाने के लिए दान करें!";
"already_donated" = "पहले से दान";
"remind_me_later" = "बाद में याद दिलाना";
"support_us" = "CoMaps का समर्थन करें";
/* Button in the main Help dialog */
"copyright" = "कॉपीराइट";

View File

@@ -294,12 +294,6 @@
/* Button in the main menu */
"donate" = "Adományozás";
/* Tex label above the Donate button */
"donate_description" = "Adományozzon, hogy együtt építsük a legjobb térképeket!";
"already_donated" = "Már adományozott";
"remind_me_later" = "Emlékeztessen később";
"support_us" = "CoMaps támogatása";
/* Button in the main Help dialog */
"copyright" = "Szerzői jogok";

View File

@@ -294,12 +294,6 @@
/* Button in the main menu */
"donate" = "Menyumbangkan";
/* Tex label above the Donate button */
"donate_description" = "Donasi untuk membangun peta terbaik bersama-sama!";
"already_donated" = "Sudah disumbang";
"remind_me_later" = "Ingatkan nanti";
"support_us" = "Mendukung CoMaps";
/* Button in the main Help dialog */
"copyright" = "Hak cipta";

View File

@@ -294,12 +294,6 @@
/* Button in the main menu */
"donate" = "Dona";
/* Tex label above the Donate button */
"donate_description" = "Fai una donazione per creare insieme le migliori mappe!";
"already_donated" = "Già donato";
"remind_me_later" = "Ricorda più tardi";
"support_us" = "Supporta CoMaps";
/* Button in the main Help dialog */
"copyright" = "Copyright";

View File

@@ -294,12 +294,6 @@
/* Button in the main menu */
"donate" = "寄付";
/* Tex label above the Donate button */
"donate_description" = "寄付して最高の地図を一緒に作ろう!";
"already_donated" = "寄付済み";
"remind_me_later" = "後でリマインド";
"support_us" = "CoMaps を支援";
/* Button in the main Help dialog */
"copyright" = "著作権";

View File

@@ -294,12 +294,6 @@
/* Button in the main menu */
"donate" = "기부";
/* Tex label above the Donate button */
"donate_description" = "기부하여 최고의 지도를 함께 만들어 보세요!";
"already_donated" = "기부완료";
"remind_me_later" = "나중에 알림";
"support_us" = "CoMaps 지원하기";
/* Button in the main Help dialog */
"copyright" = "저작권";

View File

@@ -294,12 +294,6 @@
/* Button in the main menu */
"donate" = "Paaukoti";
/* Tex label above the Donate button */
"donate_description" = "Paaukokite, kad kartu sukurtume geriausius žemėlapius!";
"already_donated" = "Jau paaukojau";
"remind_me_later" = "Priminti vėliau";
"support_us" = "Paremti „CoMaps“";
/* Button in the main Help dialog */
"copyright" = "Autorių teisės";

View File

@@ -294,12 +294,6 @@
/* Button in the main menu */
"donate" = "Ziedot";
/* Tex label above the Donate button */
"donate_description" = "Ziedojiet, lai kopā varam veidot vislabākās kartes!";
"already_donated" = "Jau esmu ziedojis/usi";
"remind_me_later" = "Atgādināt vēlāk";
"support_us" = "Atbalstīt CoMaps";
/* Button in the main Help dialog */
"copyright" = "Autortiesības";

View File

@@ -294,12 +294,6 @@
/* Button in the main menu */
"donate" = "दान करा";
/* Tex label above the Donate button */
"donate_description" = "एकत्र सर्वोत्तम नकाशे तयार करण्यासाठी देणगी द्या!";
"already_donated" = "आधीच दान केले";
"remind_me_later" = "नंतर आठवण करून द्या";
"support_us" = "CoMaps ला समर्थन द्या";
/* Button in the main Help dialog */
"copyright" = "प्रकाशन अधिकार (कॉपीराईट)";

View File

@@ -294,12 +294,6 @@
/* Button in the main menu */
"donate" = "Donazzjoni";
/* Tex label above the Donate button */
"donate_description" = "Agħti donazzjoni biex tibni l-aħjar mapep flimkien!";
"already_donated" = "Ġa mogħtija id-donazzjoni";
"remind_me_later" = "Fakkar aktar tard";
"support_us" = "Appoġġja lill-CoMaps";
/* Button in the main Help dialog */
"copyright" = "Drittijiet tal-awtur";

View File

@@ -294,12 +294,6 @@
/* Button in the main menu */
"donate" = "Donere";
/* Tex label above the Donate button */
"donate_description" = "Doner for å bygge de beste kartene sammen!";
"already_donated" = "Allerede donert";
"remind_me_later" = "Påminn senere";
"support_us" = "Støtte CoMaps";
/* Button in the main Help dialog */
"copyright" = "Opphavsrett";

View File

@@ -294,12 +294,6 @@
/* Button in the main menu */
"donate" = "Doneer";
/* Tex label above the Donate button */
"donate_description" = "Doneer om samen de beste kaarten te bouwen!";
"already_donated" = "Reeds gedoneerd";
"remind_me_later" = "Herinner later";
"support_us" = "Ondersteun CoMaps";
/* Button in the main Help dialog */
"copyright" = "Auteursrechten";

View File

@@ -294,12 +294,6 @@
/* Button in the main menu */
"donate" = "Wspomóż";
/* Tex label above the Donate button */
"donate_description" = "Przekaż darowiznę, aby wspólnie tworzyć najlepsze mapy!";
"already_donated" = "Już przekazano";
"remind_me_later" = "Przypomnij później";
"support_us" = "Wspierać CoMaps";
/* Button in the main Help dialog */
"copyright" = "Prawa autorskie";

View File

@@ -294,12 +294,6 @@
/* Button in the main menu */
"donate" = "Doar";
/* Tex label above the Donate button */
"donate_description" = "Doe para criarmos juntos os melhores mapas!";
"already_donated" = "Já doei";
"remind_me_later" = "Lembre-me mais tarde";
"support_us" = "Apoie o CoMaps";
/* Button in the main Help dialog */
"copyright" = "Direitos autorais";

View File

@@ -294,12 +294,6 @@
/* Button in the main menu */
"donate" = "Doar";
/* Tex label above the Donate button */
"donate_description" = "Faz um donativo para construirmos juntos os melhores mapas!";
"already_donated" = "Já doei";
"remind_me_later" = "Lembre-me mais tarde";
"support_us" = "Apoie o CoMaps";
/* Button in the main Help dialog */
"copyright" = "Direitos de autor";

View File

@@ -294,12 +294,6 @@
/* Button in the main menu */
"donate" = "Donează";
/* Tex label above the Donate button */
"donate_description" = "Donează pentru a construi împreună cele mai bune hărți!";
"already_donated" = "Deja donat";
"remind_me_later" = "Amintește mai târziu";
"support_us" = "Susține CoMaps";
/* Button in the main Help dialog */
"copyright" = "Drepturi de autor";

View File

@@ -294,12 +294,6 @@
/* Button in the main menu */
"donate" = "Поддержать деньгами";
/* Tex label above the Donate button */
"donate_description" = "Поддержать деньгами, чтобы вместе создавать лучшие карты!";
"already_donated" = "Уже пожертвовано";
"remind_me_later" = "Напомнить позже";
"support_us" = "Поддержать CoMaps";
/* Button in the main Help dialog */
"copyright" = "Копирайт";

View File

@@ -294,12 +294,6 @@
/* Button in the main menu */
"donate" = "Darovať";
/* Tex label above the Donate button */
"donate_description" = "Darujte, aby sme spoločne vytvorili tie najlepšie mapy!";
"already_donated" = "Už darované";
"remind_me_later" = "Pripomeň neskôr";
"support_us" = "Podporiť CoMaps";
/* Button in the main Help dialog */
"copyright" = "Autorské práva";

View File

@@ -294,12 +294,6 @@
/* Button in the main menu */
"donate" = "Донација";
/* Tex label above the Donate button */
"donate_description" = "Донирате да бисмо заједно направили најбоље мапе!";
"already_donated" = "Већ је донирано";
"remind_me_later" = "Подсети ме касније";
"support_us" = "Подршка CoMaps";
/* Button in the main Help dialog */
"copyright" = "Copyright";

View File

@@ -294,12 +294,6 @@
/* Button in the main menu */
"donate" = "Donera";
/* Tex label above the Donate button */
"donate_description" = "Donera för att bygga de bästa kartorna tillsammans!";
"already_donated" = "Redan donerat";
"remind_me_later" = "Påminn senare";
"support_us" = "Stödja CoMaps";
/* Button in the main Help dialog */
"copyright" = "Upphovsrätt";

View File

@@ -294,12 +294,6 @@
/* Button in the main menu */
"donate" = "Changia";
/* Tex label above the Donate button */
"donate_description" = "Changia ili kuunda ramani bora pamoja!";
"already_donated" = "Tayari kutoa";
"remind_me_later" = "Kumbusha baadaye";
"support_us" = "Kuunga mkono CoMaps";
/* Button in the main Help dialog */
"copyright" = "Copyright";

View File

@@ -294,12 +294,6 @@
/* Button in the main menu */
"donate" = "บริจาค";
/* Tex label above the Donate button */
"donate_description" = "บริจาคเพื่อสร้างแผนที่ที่ดีที่สุดด้วยกัน!";
"already_donated" = "บริจาคแล้ว";
"remind_me_later" = "เตือนภายหลัง";
"support_us" = "สนับสนุน CoMaps";
/* Button in the main Help dialog */
"copyright" = "ลิขสิทธิ์";

View File

@@ -294,12 +294,6 @@
/* Button in the main menu */
"donate" = "Bağış yap";
/* Tex label above the Donate button */
"donate_description" = "En iyi harita uygulamasını birlikte geliştirmemiz için bağış yapın!";
"already_donated" = "Zaten bağış yaptım";
"remind_me_later" = "Sonra hatırlat";
"support_us" = "CoMapsi Destekleyin";
/* Button in the main Help dialog */
"copyright" = "Telif hakkı";

View File

@@ -294,12 +294,6 @@
/* Button in the main menu */
"donate" = "Підтримати грошима";
/* Tex label above the Donate button */
"donate_description" = "Пожертвуйте, щоб разом створювати найкращі мапи!";
"already_donated" = "Вже пожертвувано";
"remind_me_later" = "Нагадати пізніше";
"support_us" = "Підтримати CoMaps";
/* Button in the main Help dialog */
"copyright" = "Копірайт";

View File

@@ -294,12 +294,6 @@
/* Button in the main menu */
"donate" = "Quyên tặng";
/* Tex label above the Donate button */
"donate_description" = "Hãy quyên góp để cùng nhau xây dựng những bản đồ tốt nhất!";
"already_donated" = "Đã quyên góp";
"remind_me_later" = "Nhắc sau";
"support_us" = "Hỗ trợ CoMaps";
/* Button in the main Help dialog */
"copyright" = "Bản quyền";

View File

@@ -294,12 +294,6 @@
/* Button in the main menu */
"donate" = "捐助我们";
/* Tex label above the Donate button */
"donate_description" = "捐助,以共同打造最好的地图!";
"already_donated" = "已捐赠";
"remind_me_later" = "稍后提醒";
"support_us" = "支持 CoMaps";
/* Button in the main Help dialog */
"copyright" = "版权";

View File

@@ -294,12 +294,6 @@
/* Button in the main menu */
"donate" = "捐助我們";
/* Tex label above the Donate button */
"donate_description" = "捐助,以共同打造最好的地圖!";
"already_donated" = "已捐贈";
"remind_me_later" = "稍後提醒";
"support_us" = "支持 CoMaps";
/* Button in the main Help dialog */
"copyright" = "版權";

View File

@@ -476,9 +476,6 @@
ED46DDCE2D098A0B007CACD6 /* WidgetKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ED46DDCD2D098A0B007CACD6 /* WidgetKit.framework */; };
ED46DDD02D098A0B007CACD6 /* SwiftUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ED46DDCF2D098A0B007CACD6 /* SwiftUI.framework */; };
ED46DDE12D098A0C007CACD6 /* CoMapsWidgetExtension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = ED46DDCC2D098A0B007CACD6 /* CoMapsWidgetExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
ED4DC7772CAEDECC0029B338 /* ProductsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED4DC7752CAEDECC0029B338 /* ProductsViewModel.swift */; };
ED4DC7782CAEDECC0029B338 /* ProductButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED4DC7732CAEDECC0029B338 /* ProductButton.swift */; };
ED4DC7792CAEDECC0029B338 /* ProductsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED4DC7742CAEDECC0029B338 /* ProductsViewController.swift */; };
ED5BAF4B2D688F5B0088D7B1 /* SearchOnMapHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED5BAF4A2D688F5A0088D7B1 /* SearchOnMapHeaderView.swift */; };
ED5E02142D8B17B600A5CC7B /* ModalPresentationStepsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED5E02132D8B17B600A5CC7B /* ModalPresentationStepsController.swift */; };
ED63CEB92BDF8F9D006155C4 /* SettingsTableViewiCloudSwitchCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED63CEB62BDF8F9C006155C4 /* SettingsTableViewiCloudSwitchCell.swift */; };
@@ -1442,9 +1439,6 @@
ED48BBB817C2B1E2003E7E92 /* CircleView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CircleView.h; sourceTree = "<group>"; };
ED48BBB917C2B1E2003E7E92 /* CircleView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CircleView.m; sourceTree = "<group>"; };
ED49D76F2CF0E3A8004AF27E /* TrackRecordingButtonViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TrackRecordingButtonViewController.swift; sourceTree = "<group>"; };
ED4DC7732CAEDECC0029B338 /* ProductButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProductButton.swift; sourceTree = "<group>"; };
ED4DC7742CAEDECC0029B338 /* ProductsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProductsViewController.swift; sourceTree = "<group>"; };
ED4DC7752CAEDECC0029B338 /* ProductsViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProductsViewModel.swift; sourceTree = "<group>"; };
ED5BAF4A2D688F5A0088D7B1 /* SearchOnMapHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchOnMapHeaderView.swift; sourceTree = "<group>"; };
ED5E02132D8B17B600A5CC7B /* ModalPresentationStepsController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ModalPresentationStepsController.swift; sourceTree = "<group>"; };
ED63CEB62BDF8F9C006155C4 /* SettingsTableViewiCloudSwitchCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsTableViewiCloudSwitchCell.swift; sourceTree = "<group>"; };
@@ -3050,7 +3044,6 @@
993DF0C223F6BD0600AC231A /* ElevationDetails */,
99DEF9D523E420D2006BFD21 /* ElevationProfile */,
EDE8EAE32C2DB74A002777F5 /* OpenInAppActionSheet */,
ED4DC7762CAEDECC0029B338 /* Products */,
);
path = Components;
sourceTree = "<group>";
@@ -3251,16 +3244,6 @@
path = DocumentPicker;
sourceTree = "<group>";
};
ED4DC7762CAEDECC0029B338 /* Products */ = {
isa = PBXGroup;
children = (
ED4DC7732CAEDECC0029B338 /* ProductButton.swift */,
ED4DC7742CAEDECC0029B338 /* ProductsViewController.swift */,
ED4DC7752CAEDECC0029B338 /* ProductsViewModel.swift */,
);
path = Products;
sourceTree = "<group>";
};
ED70D5812D539A2500738C1E /* Presentation */ = {
isa = PBXGroup;
children = (
@@ -4627,9 +4610,6 @@
F692F3831EA0FAF5001E82EB /* MWMAutoupdateController.mm in Sources */,
34AB664D1FC5AA330078E451 /* RouteManagerFooterView.swift in Sources */,
6741A9E01BF340DE002C974C /* MWMDownloaderDialogHeader.mm in Sources */,
ED4DC7772CAEDECC0029B338 /* ProductsViewModel.swift in Sources */,
ED4DC7782CAEDECC0029B338 /* ProductButton.swift in Sources */,
ED4DC7792CAEDECC0029B338 /* ProductsViewController.swift in Sources */,
CDCA2748223FD24600167D87 /* MWMCarPlaySearchResultObject.mm in Sources */,
475ED78824C7D0F30063ADC7 /* ValueStepperView.swift in Sources */,
3454D7E01E07F045004AF2AD /* UITextField+RuntimeAttributes.m in Sources */,

View File

@@ -1,38 +0,0 @@
final class ProductButton: UIButton {
private var action: () -> Void
init(title: String, action: @escaping () -> Void) {
self.action = action
super.init(frame: .zero)
self.setup(title: title, action: action)
self.layout()
}
@available(*, unavailable)
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
private func setup(title: String, action: @escaping () -> Void) {
setStyleAndApply(.blueBackground)
setTitle(title, for: .normal)
setTitleColor(.white, for: .normal)
titleLabel?.font = UIFont.regular14()
titleLabel?.allowsDefaultTighteningForTruncation = true
titleLabel?.adjustsFontSizeToFitWidth = true
titleLabel?.minimumScaleFactor = 0.5
layer.setCornerRadius(.buttonDefaultSmall)
layer.masksToBounds = true
addTarget(self, action: #selector(buttonDidTap), for: .touchUpInside)
}
private func layout() {
translatesAutoresizingMaskIntoConstraints = false
heightAnchor.constraint(equalToConstant: 30.0).isActive = true
}
@objc private func buttonDidTap() {
action()
}
}

View File

@@ -1,162 +0,0 @@
final class ProductsViewController: UIViewController {
private enum Constants {
static let spacing: CGFloat = 10
static let titleLeadingPadding: CGFloat = 12
static let titleTrailingPadding: CGFloat = 10
static let descriptionTopPadding: CGFloat = 10
static let closeButtonSize: CGFloat = 24
static let closeButtonTrailingPadding: CGFloat = -12
static let closeButtonTopPadding: CGFloat = 12
static let stackViewTopPadding: CGFloat = 12
static let subtitleButtonTopPadding: CGFloat = 4
static let subtitleButtonBottomPadding: CGFloat = -4
}
private let viewModel: ProductsViewModel
private let titleLabel = UILabel()
private let descriptionLabel = UILabel()
private let closeButton = UIButton(type: .system)
private let stackView = UIStackView()
private let leadingSubtitleButton = UIButton(type: .system)
private let trailingSubtitleButton = UIButton(type: .system)
init(viewModel: ProductsViewModel) {
self.viewModel = viewModel
super.init(nibName: nil, bundle: nil)
}
@available(*, unavailable)
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func viewDidLoad() {
super.viewDidLoad()
setupViews()
layout()
}
private func setupViews() {
view.setStyleAndApply(.background)
setupTitleLabel()
setupDescriptionLabel()
setupCloseButton()
setupProductsStackView()
setupSubtitleButtons()
}
private func setupTitleLabel() {
titleLabel.text = viewModel.title
titleLabel.font = UIFont.semibold16()
titleLabel.numberOfLines = 1
titleLabel.translatesAutoresizingMaskIntoConstraints = false
}
private func setupDescriptionLabel() {
descriptionLabel.text = viewModel.description
descriptionLabel.font = UIFont.regular14()
descriptionLabel.numberOfLines = 0
descriptionLabel.translatesAutoresizingMaskIntoConstraints = false
}
private func setupCloseButton() {
closeButton.setStyleAndApply(.gray)
closeButton.setImage(UIImage(resource: .icSearchClear), for: .normal)
closeButton.translatesAutoresizingMaskIntoConstraints = false
closeButton.addTarget(self, action: #selector(closeButtonDidTap), for: .touchUpInside)
}
private func setupProductsStackView() {
stackView.axis = .horizontal
stackView.alignment = .fill
stackView.distribution = .fillEqually
stackView.spacing = Constants.spacing
stackView.translatesAutoresizingMaskIntoConstraints = false
viewModel.products.forEach { product in
let button = ProductButton(title: product.title) { [weak self] in
self?.productButtonDidTap(product)
}
stackView.addArrangedSubview(button)
}
}
private func setupSubtitleButtons() {
leadingSubtitleButton.setTitle(viewModel.leadingSubtitle, for: .normal)
leadingSubtitleButton.backgroundColor = .clear
leadingSubtitleButton.setTitleColor(.linkBlue(), for: .normal)
leadingSubtitleButton.translatesAutoresizingMaskIntoConstraints = false
leadingSubtitleButton.addTarget(self, action: #selector(leadingSubtitleButtonDidTap), for: .touchUpInside)
trailingSubtitleButton.setTitle(viewModel.trailingSubtitle, for: .normal)
trailingSubtitleButton.backgroundColor = .clear
trailingSubtitleButton.setTitleColor(.linkBlue(), for: .normal)
trailingSubtitleButton.translatesAutoresizingMaskIntoConstraints = false
trailingSubtitleButton.addTarget(self, action: #selector(trailingSubtitleButtonDidTap), for: .touchUpInside)
}
private func layout() {
view.addSubview(titleLabel)
view.addSubview(descriptionLabel)
view.addSubview(closeButton)
view.addSubview(stackView)
view.addSubview(leadingSubtitleButton)
view.addSubview(trailingSubtitleButton)
NSLayoutConstraint.activate([
titleLabel.topAnchor.constraint(equalTo: closeButton.topAnchor),
titleLabel.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: Constants.titleLeadingPadding),
titleLabel.trailingAnchor.constraint(equalTo: closeButton.leadingAnchor),
descriptionLabel.topAnchor.constraint(equalTo: titleLabel.bottomAnchor, constant: Constants.descriptionTopPadding),
descriptionLabel.leadingAnchor.constraint(equalTo: titleLabel.leadingAnchor),
descriptionLabel.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -Constants.titleTrailingPadding),
closeButton.widthAnchor.constraint(equalToConstant: Constants.closeButtonSize),
closeButton.heightAnchor.constraint(equalToConstant: Constants.closeButtonSize),
closeButton.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: Constants.closeButtonTrailingPadding),
closeButton.topAnchor.constraint(equalTo: view.topAnchor, constant: Constants.closeButtonTopPadding),
stackView.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: Constants.titleLeadingPadding),
stackView.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -Constants.titleLeadingPadding),
stackView.topAnchor.constraint(equalTo: descriptionLabel.bottomAnchor, constant: Constants.stackViewTopPadding),
leadingSubtitleButton.topAnchor.constraint(equalTo: stackView.bottomAnchor, constant: Constants.subtitleButtonTopPadding),
leadingSubtitleButton.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: Constants.titleLeadingPadding),
leadingSubtitleButton.trailingAnchor.constraint(equalTo: view.centerXAnchor),
leadingSubtitleButton.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: Constants.subtitleButtonBottomPadding),
trailingSubtitleButton.topAnchor.constraint(equalTo: leadingSubtitleButton.topAnchor, constant: Constants.subtitleButtonTopPadding),
trailingSubtitleButton.leadingAnchor.constraint(equalTo: view.centerXAnchor),
trailingSubtitleButton.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -Constants.titleLeadingPadding),
trailingSubtitleButton.bottomAnchor.constraint(equalTo: leadingSubtitleButton.bottomAnchor)
])
}
@objc private func closeButtonDidTap() {
viewModel.didClose(reason: .close)
hide()
}
private func productButtonDidTap(_ product: Product) {
viewModel.didSelectProduct(product)
viewModel.didClose(reason: .selectProduct)
hide()
}
@objc private func leadingSubtitleButtonDidTap() {
viewModel.didClose(reason: .alreadyDonated)
hide()
}
@objc private func trailingSubtitleButtonDidTap() {
viewModel.didClose(reason: .remindLater)
hide()
}
func hide() {
UIView.transition(with: view, duration: kDefaultAnimationDuration / 2, options: .transitionCrossDissolve) {
self.view.isHidden = true
}
}
}

View File

@@ -1,24 +0,0 @@
struct ProductsViewModel {
private let productsManager: ProductsManager.Type
let title: String = L("support_us")
let description: String
let leadingSubtitle: String = L("already_donated")
let trailingSubtitle: String = L("remind_me_later")
let products: [Product]
init(manager: ProductsManager.Type, configuration: ProductsConfiguration) {
self.productsManager = manager
self.description = configuration.placePagePrompt
self.products = configuration.products
}
func didSelectProduct(_ product: Product) {
UIViewController.topViewController().openUrl(product.link, externally: true)
productsManager.didSelect(product)
}
func didClose(reason: ProductsPopupCloseReason) {
productsManager.didCloseProductsPopup(with: reason)
}
}

View File

@@ -57,13 +57,6 @@ class PlacePageCommonLayout: NSObject, IPlacePageLayout {
return vc
} ()
private func productsViewController() -> ProductsViewController? {
let productsManager = FrameworkHelper.self
guard let configuration = productsManager.getProductsConfiguration() else { return nil }
let viewModel = ProductsViewModel(manager: productsManager, configuration: configuration)
return ProductsViewController(viewModel: viewModel)
}
lazy var buttonsViewController: PlacePageButtonsViewController = {
let vc = storyboard.instantiateViewController(ofType: PlacePageButtonsViewController.self)
vc.buttonsData = placePageData.buttonsData!
@@ -109,10 +102,6 @@ class PlacePageCommonLayout: NSObject, IPlacePageLayout {
viewControllers.append(infoViewController)
}
if let productsViewController = productsViewController() {
viewControllers.append(productsViewController)
}
if placePageData.buttonsData != nil {
viewControllers.append(buttonsViewController)
}