From 152aba80cbeb2d17f8ad58c39e9a9787e3fdafe5 Mon Sep 17 00:00:00 2001 From: Arsentiy Milchakov Date: Wed, 22 Apr 2020 17:36:46 +0300 Subject: [PATCH] [map] guides api is added into guides manager --- map/CMakeLists.txt | 2 ++ map/framework.cpp | 3 +++ map/guides_manager.cpp | 5 +++++ map/guides_manager.hpp | 35 +++++++++++++++++++++------------- map/guides_on_map_delegate.cpp | 15 +++++++++++++++ map/guides_on_map_delegate.hpp | 18 +++++++++++++++++ 6 files changed, 65 insertions(+), 13 deletions(-) create mode 100644 map/guides_on_map_delegate.cpp create mode 100644 map/guides_on_map_delegate.hpp diff --git a/map/CMakeLists.txt b/map/CMakeLists.txt index 758b1c6b7b..f88b9b7dce 100644 --- a/map/CMakeLists.txt +++ b/map/CMakeLists.txt @@ -75,6 +75,8 @@ set( gps_tracker.hpp guides_manager.cpp guides_manager.hpp + guides_on_map_delegate.cpp + guides_on_map_delegate.hpp isolines_manager.cpp isolines_manager.hpp local_ads_manager.cpp diff --git a/map/framework.cpp b/map/framework.cpp index f4c09bae6c..68f63b2295 100644 --- a/map/framework.cpp +++ b/map/framework.cpp @@ -6,6 +6,7 @@ #include "map/download_on_map_ads_delegate.hpp" #include "map/everywhere_search_params.hpp" #include "map/gps_tracker.hpp" +#include "map/guides_on_map_delegate.hpp" #include "map/notifications/notification_manager_delegate.hpp" #include "map/notifications/notification_queue.hpp" #include "map/promo_catalog_poi_checker.hpp" @@ -549,6 +550,8 @@ Framework::Framework(FrameworkParams const & params) *m_cityFinder, catalogHeadersProvider)); eye::Eye::Instance().Subscribe(m_promoApi.get()); + m_guidesManager.SetApiDelegate(make_unique(catalogHeadersProvider)); + // Clean the no longer used key from old devices. // Remove this line after April 2020 (assuming the majority of devices // will have updated by then). diff --git a/map/guides_manager.cpp b/map/guides_manager.cpp index 5d4f36dfd6..1ae576630a 100644 --- a/map/guides_manager.cpp +++ b/map/guides_manager.cpp @@ -60,3 +60,8 @@ void GuidesManager::SetGalleryListener(GuidesGalleryChangedFn const & onGalleryC { m_onGalleryChangedFn = onGalleryChangedFn; } + +void GuidesManager::SetApiDelegate(std::unique_ptr apiDelegate) +{ + m_api.SetDelegate(std::move(apiDelegate)); +} diff --git a/map/guides_manager.hpp b/map/guides_manager.hpp index a0098ec143..550b58dae7 100644 --- a/map/guides_manager.hpp +++ b/map/guides_manager.hpp @@ -1,14 +1,19 @@ #pragma once +#include "map/catalog_headers_provider.hpp" +#include "map/guides_on_map_delegate.hpp" + +#include "partners_api/guides_on_map_api.hpp" + #include "geometry/rect2d.hpp" #include "geometry/screenbase.hpp" +#include #include +#include #include #include -#include - class GuidesManager final { public: @@ -20,17 +25,6 @@ public: NetworkError }; - GuidesState GetState() const; - - using GuidesStateChangedFn = std::function; - void SetStateListener(GuidesStateChangedFn const & onStateChangedFn); - - void UpdateViewport(ScreenBase const & screen); - void Invalidate(); - - void SetEnabled(bool enabled); - bool IsEnabled() const; - struct GuidesGallery { struct Item @@ -71,6 +65,17 @@ public: std::vector m_items; }; + GuidesState GetState() const; + + using GuidesStateChangedFn = std::function; + void SetStateListener(GuidesStateChangedFn const & onStateChangedFn); + + void UpdateViewport(ScreenBase const & screen); + void Invalidate(); + + void SetEnabled(bool enabled); + bool IsEnabled() const; + GuidesGallery GetGallery() const; std::string GetActiveGuide() const; void SetActiveGuide(std::string const & guideId); @@ -78,12 +83,16 @@ public: using GuidesGalleryChangedFn = std::function; void SetGalleryListener(GuidesGalleryChangedFn const & onGalleryChangedFn); + void SetApiDelegate(std::unique_ptr apiDelegate); + private: void ChangeState(GuidesState newState); GuidesState m_state = GuidesState::Disabled; GuidesStateChangedFn m_onStateChangedFn; GuidesGalleryChangedFn m_onGalleryChangedFn; + + guides_on_map::Api m_api; }; std::string DebugPrint(GuidesManager::GuidesState state); diff --git a/map/guides_on_map_delegate.cpp b/map/guides_on_map_delegate.cpp new file mode 100644 index 0000000000..8f67903672 --- /dev/null +++ b/map/guides_on_map_delegate.cpp @@ -0,0 +1,15 @@ +#include "map/guides_on_map_delegate.hpp" + +GuidesOnMapDelegate::GuidesOnMapDelegate( + std::shared_ptr const & headersProvider) + : m_headersProvider(headersProvider) +{ +} + +platform::HttpClient::Headers GuidesOnMapDelegate::GetHeaders() +{ + if (!m_headersProvider) + return {}; + + return m_headersProvider->GetHeaders(); +} diff --git a/map/guides_on_map_delegate.hpp b/map/guides_on_map_delegate.hpp new file mode 100644 index 0000000000..f67c84aa9b --- /dev/null +++ b/map/guides_on_map_delegate.hpp @@ -0,0 +1,18 @@ +#pragma once + +#include "map/catalog_headers_provider.hpp" + +#include "partners_api/guides_on_map_api.hpp" + +#include + +class GuidesOnMapDelegate : public guides_on_map::Api::Delegate +{ +public: + GuidesOnMapDelegate(std::shared_ptr const & headersProvider); + + platform::HttpClient::Headers GetHeaders() override; + +private: + std::shared_ptr m_headersProvider; +};