diff --git a/configure.sh b/configure.sh index 069b80d90d..87702f66b7 100755 --- a/configure.sh +++ b/configure.sh @@ -95,14 +95,19 @@ else #define CLOUD_URL "" #define MAX_PARTNERS_COUNT 0 #define PARTNER1_NAME "" +#define PARTNER1_HAS_BUTTON false #define PARTNER1_BANNER_PLACEMENT_ID "" #define PARTNER2_NAME "" +#define PARTNER2_HAS_BUTTON false #define PARTNER2_BANNER_PLACEMENT_ID "" #define PARTNER3_NAME "" +#define PARTNER3_HAS_BUTTON false #define PARTNER3_BANNER_PLACEMENT_ID "" #define PARTNER4_NAME "" +#define PARTNER4_HAS_BUTTON false #define PARTNER4_BANNER_PLACEMENT_ID "" #define PARTNER5_NAME "" +#define PARTNER5_HAS_BUTTON false #define PARTNER5_BANNER_PLACEMENT_ID "" #define MAXIM_CLIENT_ID "" #define MAXIM_SERVER_TOKEN "" diff --git a/indexer/ftypes_sponsored.cpp b/indexer/ftypes_sponsored.cpp index 07f2eb2cb4..a0018e8bc0 100644 --- a/indexer/ftypes_sponsored.cpp +++ b/indexer/ftypes_sponsored.cpp @@ -37,3 +37,21 @@ int SponsoredPartnerChecker::GetPartnerIndex(FeatureType const & ft) const return -1; } } // namespace ftypes + +std::string GetPartnerNameByIndex(int partnerIndex) +{ + static std::vector kIds = {PARTNER1_NAME, PARTNER2_NAME, PARTNER3_NAME, + PARTNER4_NAME, PARTNER5_NAME}; + if (partnerIndex < 0 || partnerIndex >= kIds.size()) + return {}; + return kIds[partnerIndex]; +} + +bool IsPartnerButtonExist(int partnerIndex) +{ + static std::vector kButtons = {PARTNER1_HAS_BUTTON, PARTNER2_HAS_BUTTON, PARTNER3_HAS_BUTTON, + PARTNER4_HAS_BUTTON, PARTNER5_HAS_BUTTON}; + if (partnerIndex < 0 || partnerIndex >= kButtons.size()) + return false; + return kButtons[partnerIndex]; +} diff --git a/indexer/ftypes_sponsored.hpp b/indexer/ftypes_sponsored.hpp index ad9ee026e9..414009c8fe 100644 --- a/indexer/ftypes_sponsored.hpp +++ b/indexer/ftypes_sponsored.hpp @@ -36,3 +36,6 @@ public: DECLARE_CHECKER_INSTANCE(SponsoredPartnerChecker); }; } // namespace ftypes + +extern std::string GetPartnerNameByIndex(int partnerIndex); +extern bool IsPartnerButtonExist(int partnerIndex); diff --git a/map/framework.cpp b/map/framework.cpp index 65d80ae5a5..2e4ebbf799 100644 --- a/map/framework.cpp +++ b/map/framework.cpp @@ -857,10 +857,14 @@ void Framework::FillInfoFromFeatureType(FeatureType const & ft, place_page::Info else if (ftypes::SponsoredPartnerChecker::Instance()(ft)) { info.SetSponsoredType(place_page::SponsoredType::Partner); - auto const & url = info.GetMetadata().Get(feature::Metadata::FMD_BANNER_URL); - info.SetSponsoredUrl(url); - info.SetSponsoredDescriptionUrl(url); - info.SetPartnerIndex(ftypes::SponsoredPartnerChecker::Instance().GetPartnerIndex(ft)); + auto const partnerIndex = ftypes::SponsoredPartnerChecker::Instance().GetPartnerIndex(ft); + info.SetPartnerIndex(partnerIndex); + if (IsPartnerButtonExist(partnerIndex)) + { + auto const & url = info.GetMetadata().Get(feature::Metadata::FMD_BANNER_URL); + info.SetSponsoredUrl(url); + info.SetSponsoredDescriptionUrl(url); + } } else if (ftypes::IsHolidayChecker::Instance()(ft) && !info.GetMetadata().Get(feature::Metadata::FMD_RATING).empty()) diff --git a/map/place_page_info.cpp b/map/place_page_info.cpp index 2d5552b8f1..5c597d40a5 100644 --- a/map/place_page_info.cpp +++ b/map/place_page_info.cpp @@ -5,6 +5,7 @@ #include "partners_api/banner.hpp" #include "indexer/feature_utils.hpp" +#include "indexer/ftypes_sponsored.hpp" #include "indexer/osm_editor.hpp" #include "platform/measurement_utils.hpp" @@ -20,15 +21,6 @@ namespace place_page namespace { auto constexpr kTopRatingBound = 10.0f; - -std::string GetPartnerNameByIndex(int partnerIndex) -{ - static std::vector kIds = {PARTNER1_NAME, PARTNER2_NAME, PARTNER3_NAME, - PARTNER4_NAME, PARTNER5_NAME}; - if (partnerIndex < 0 || partnerIndex >= kIds.size()) - return {}; - return kIds[partnerIndex]; -} } // namespace char const * const Info::kSubtitleSeparator = " • ";