diff --git a/map/framework.cpp b/map/framework.cpp index 0174a3bffe..7576ef3d2d 100644 --- a/map/framework.cpp +++ b/map/framework.cpp @@ -950,7 +950,7 @@ void Framework::FillInfoFromFeatureType(FeatureType & ft, place_page::Info & inf if (m_localAdsManager.IsSupportedType(info.GetTypes())) { info.SetLocalAdsUrl(m_localAdsManager.GetCompanyUrl(ft.GetID())); - auto const status = m_localAdsManager.Contains(ft.GetID()) + auto const status = m_localAdsManager.HasVisualization(ft.GetID()) ? place_page::LocalAdsStatus::Customer : place_page::LocalAdsStatus::Candidate; info.SetLocalAdsStatus(status); @@ -1763,7 +1763,7 @@ void Framework::FillSearchResultsMarks(search::Results::ConstIter begin, if (r.m_metadata.m_isSponsoredHotel) { - mark->SetBookingType(isFeature && m_localAdsManager.Contains(r.GetFeatureID()) /* hasLocalAds */); + mark->SetBookingType(isFeature && m_localAdsManager.HasVisualization(r.GetFeatureID()) /* hasLocalAds */); mark->SetRating(r.m_metadata.m_hotelRating); mark->SetPricing(r.m_metadata.m_hotelPricing); } @@ -1771,7 +1771,7 @@ void Framework::FillSearchResultsMarks(search::Results::ConstIter begin, { auto product = GetProductInfo(r); auto const type = r.GetFeatureType(); - mark->SetFromType(type, m_localAdsManager.Contains(r.GetFeatureID())); + mark->SetFromType(type, m_localAdsManager.HasVisualization(r.GetFeatureID())); if (product.m_ugcRating != search::ProductInfo::kInvalidRating) mark->SetRating(product.m_ugcRating); } @@ -1857,7 +1857,7 @@ void Framework::CreateDrapeEngine(ref_ptr contextFac for (auto const & event : events) { auto const & mwmInfo = event.m_feature.m_mwmId.GetInfo(); - if (!mwmInfo || !m_localAdsManager.Contains(event.m_feature)) + if (!mwmInfo || !m_localAdsManager.HasAds(event.m_feature)) continue; statEvents.emplace_back(local_ads::EventType::ShowPoint, @@ -3591,7 +3591,7 @@ search::ProductInfo Framework::GetProductInfo(search::Result const & result) con search::ProductInfo productInfo; - productInfo.m_isLocalAdsCustomer = m_localAdsManager.Contains(result.GetFeatureID()); + productInfo.m_isLocalAdsCustomer = m_localAdsManager.HasVisualization(result.GetFeatureID()); auto const ugc = m_ugcApi->GetLoader().GetUGC(result.GetFeatureID()); productInfo.m_ugcRating = ugc.m_totalRating; diff --git a/map/local_ads_manager.cpp b/map/local_ads_manager.cpp index a310a3c027..e57f2ae710 100644 --- a/map/local_ads_manager.cpp +++ b/map/local_ads_manager.cpp @@ -724,7 +724,7 @@ LocalAdsManager::FeaturesCache LocalAdsManager::ReadCampaignFeatures(CampaignDat LocalAdsManager::CacheEntry entry; entry.m_position = feature::GetCenter(ft, scales::GetUpperScale()); - entry.m_isCustom = it->second != nullptr; + entry.m_isVisibleOnMap = it->second != nullptr; if (it->second != nullptr) { it->second->m_position = entry.m_position; @@ -744,7 +744,7 @@ void LocalAdsManager::UpdateFeaturesCache(FeaturesCache && features) if (!features.empty()) m_featuresCache.insert(features.begin(), features.end()); for (auto const & entry : m_featuresCache) - customFeatures.insert(std::make_pair(entry.first, entry.second.m_isCustom)); + customFeatures.insert(std::make_pair(entry.first, entry.second.m_isVisibleOnMap)); } m_drapeEngine.SafeCall(&df::DrapeEngine::SetCustomFeatures, std::move(customFeatures)); } @@ -770,12 +770,22 @@ void LocalAdsManager::ClearLocalAdsForMwm(MwmSet::MwmId const & mwmId) DeleteLocalAdsMarks(mwmId); } -bool LocalAdsManager::Contains(FeatureID const & featureId) const +bool LocalAdsManager::HasAds(FeatureID const & featureId) const { std::lock_guard lock(m_featuresCacheMutex); return m_featuresCache.find(featureId) != m_featuresCache.cend(); } +bool LocalAdsManager::HasVisualization(FeatureID const & featureId) const +{ + std::lock_guard lock(m_featuresCacheMutex); + auto const it = m_featuresCache.find(featureId); + if (it == m_featuresCache.cend()) + return false; + + return it->second.m_isVisibleOnMap; +} + bool LocalAdsManager::IsSupportedType(feature::TypesHolder const & types) const { return m_supportedTypes.Contains(types); diff --git a/map/local_ads_manager.hpp b/map/local_ads_manager.hpp index 9230ea8165..72908d49b0 100644 --- a/map/local_ads_manager.hpp +++ b/map/local_ads_manager.hpp @@ -66,7 +66,6 @@ public: LocalAdsManager(GetMwmsByRectFn && getMwmsByRectFn, GetMwmIdByNameFn && getMwmIdByName, ReadFeaturesFn && readFeaturesFn, GetMapObjectByIdFn && getMapObjectByIdFn); - LocalAdsManager(LocalAdsManager && /* localAdsManager */) = default; void Startup(BookmarkManager * bmManager, bool isEnabled); void SetDrapeEngine(ref_ptr engine); @@ -80,7 +79,8 @@ public: local_ads::Statistics & GetStatistics() { return m_statistics; } local_ads::Statistics const & GetStatistics() const { return m_statistics; } - bool Contains(FeatureID const & featureId) const; + bool HasAds(FeatureID const & featureId) const; + bool HasVisualization(FeatureID const & featureId) const; bool IsSupportedType(feature::TypesHolder const & types) const; std::string GetCompanyUrl(FeatureID const & featureId) const; @@ -98,7 +98,7 @@ private: struct CacheEntry { - bool m_isCustom = false; + bool m_isVisibleOnMap = false; m2::PointD m_position; }; using FeaturesCache = std::map;