diff options
author | Arsentiy Milchakov <milcars@mapswithme.com> | 2019-07-09 19:24:31 +0300 |
---|---|---|
committer | Roman Kuznetsov <r.kuznetsow@gmail.com> | 2019-07-10 09:55:31 +0300 |
commit | 75deb3ec33619cee9a761568fa5db23f32b911b6 (patch) | |
tree | fbb436864883e6c16390fcc7cc5a4c4998cfe7fc /metrics | |
parent | 1f348a3a6f1d8f18d1ceadb7efdf8d22a172b3db (diff) |
[eye][promo] several fixes for promo
Diffstat (limited to 'metrics')
-rw-r--r-- | metrics/eye.cpp | 46 | ||||
-rw-r--r-- | metrics/eye.hpp | 5 | ||||
-rw-r--r-- | metrics/eye_info.hpp | 12 | ||||
-rw-r--r-- | metrics/metrics_tests/eye_tests.cpp | 15 |
4 files changed, 38 insertions, 40 deletions
diff --git a/metrics/eye.cpp b/metrics/eye.cpp index 36c982b479..edb5500575 100644 --- a/metrics/eye.cpp +++ b/metrics/eye.cpp @@ -23,14 +23,10 @@ namespace auto constexpr kMapObjectEventsExpirePeriod = std::chrono::hours(24 * 30 * 3); auto constexpr kEventCooldown = std::chrono::seconds(2); -std::array<std::string, 16> const kMapEventSupportedTypes = {{"amenity-bar", "amenity-cafe", +std::array<std::string, 7> const kMapEventSupportedTypes = {{"amenity-bar", "amenity-cafe", "amenity-pub", "amenity-restaurant", "amenity-fast_food", "amenity-biergarden", - "shop-bakery", "tourism-hotel", - "tourism-apartment", "tourism-camp_site", - "tourism-chalet", "tourism-guest_house", - "tourism-hostel", "tourism-motel", - "tourism-resort", "sponsored-booking"}}; + "shop-bakery"}}; void Load(Info & info) { @@ -347,10 +343,9 @@ void Eye::RegisterMapObjectEvent(MapObject const & mapObject, MapObject::Event:: MapObject result = mapObject; MapObject::Event event; - auto const eventTime = Clock::now(); event.m_type = type; event.m_userPos = userPos; - event.m_eventTime = eventTime; + event.m_eventTime = Clock::now(); bool found = false; bool duplication = false; @@ -383,14 +378,6 @@ void Eye::RegisterMapObjectEvent(MapObject const & mapObject, MapObject::Event:: mapObjects.Add(result); } - if (type == MapObject::Event::Type::BookingBook || - type == MapObject::Event::Type::BookingMore || - type == MapObject::Event::Type::BookingReviews || - type == MapObject::Event::Type::BookingDetails) - { - editableInfo->m_promo.m_transitionToBookingTime = eventTime; - } - if (!SaveLastMapObjectEvent(result)) return; @@ -404,6 +391,24 @@ void Eye::RegisterMapObjectEvent(MapObject const & mapObject, MapObject::Event:: }); } +void Eye::RegisterTransitionToBooking(m2::PointD const & hotelPos) +{ + auto const info = m_info.Get(); + auto editableInfo = std::make_shared<Info>(*info); + + editableInfo->m_promo.m_transitionToBookingTime = Clock::now(); + if (!Save(editableInfo)) + return; + + GetPlatform().RunTask(Platform::Thread::Gui, [this, hotelPos] + { + for (auto subscriber : m_subscribers) + { + subscriber->OnTransitionToBooking(hotelPos); + } + }); +} + void Eye::RegisterPromoAfterBookingShown(std::string const & cityId) { auto const info = m_info.Get(); @@ -506,6 +511,15 @@ void Eye::Event::MapObjectEvent(MapObject const & mapObject, MapObject::Event::T } // static +void Eye::Event::TransitionToBooking(m2::PointD const & hotelPos) +{ + GetPlatform().RunTask(Platform::Thread::File, [hotelPos] + { + Instance().RegisterTransitionToBooking(hotelPos); + }); +} + +// static void Eye::Event::PromoAfterBookingShown(std::string const & cityId) { GetPlatform().RunTask(Platform::Thread::File, [cityId] diff --git a/metrics/eye.hpp b/metrics/eye.hpp index cd2596e14e..336e8cec55 100644 --- a/metrics/eye.hpp +++ b/metrics/eye.hpp @@ -5,6 +5,8 @@ #include "base/atomic_shared_ptr.hpp" #include "base/macros.hpp" +#include "geometry/point2d.hpp" + #include <chrono> #include <string> #include <vector> @@ -25,6 +27,7 @@ public: virtual void OnLayerShown(Layer const & layer) {} virtual void OnMapObjectEvent(MapObject const & poi) {} virtual void OnPromoAfterBookingShown(Time const & time, std::string const & cityId) {} + virtual void OnTransitionToBooking(m2::PointD const & hotelPos) {} }; // Note This class IS thread-safe. @@ -48,6 +51,7 @@ public: static void LayerShown(Layer::Type type); static void MapObjectEvent(MapObject const & mapObject, MapObject::Event::Type type, m2::PointD const & userPos); + static void TransitionToBooking(m2::PointD const & hotelPos); static void PromoAfterBookingShown(std::string const & cityId); }; @@ -77,6 +81,7 @@ private: void RegisterLayerShown(Layer::Type type); void RegisterMapObjectEvent(MapObject const & mapObject, MapObject::Event::Type type, m2::PointD const & userPos); + void RegisterTransitionToBooking(m2::PointD const & hotelPos); void RegisterPromoAfterBookingShown(std::string const & cityId); base::AtomicSharedPtr<Info> m_info; diff --git a/metrics/eye_info.hpp b/metrics/eye_info.hpp index 5f88f3df11..65d9dd1f13 100644 --- a/metrics/eye_info.hpp +++ b/metrics/eye_info.hpp @@ -209,10 +209,6 @@ public: UgcEditorOpened, UgcSaved, RouteToCreated, - BookingBook, - BookingMore, - BookingReviews, - BookingDetails, }; DECLARE_VISITOR(visitor(m_type, "type"), visitor(m_userPos, "user_pos"), @@ -289,7 +285,9 @@ struct Promo DECLARE_VISITOR_AND_DEBUG_PRINT(Promo, visitor(m_transitionToBookingTime, "transitionToBookingTime"), - visitor(m_lastTimeShownAfterBooking, "lastTimeShownAfterBooking")) + visitor(m_lastTimeShownAfterBooking, "lastTimeShownAfterBooking"), + visitor(m_lastTimeShownAfterBookingCityId, + "lastTimeShownAfterBookingCityId")) Time m_transitionToBookingTime; Time m_lastTimeShownAfterBooking; std::string m_lastTimeShownAfterBookingCityId; @@ -378,10 +376,6 @@ inline std::string DebugPrint(MapObject::Event::Type const & type) case MapObject::Event::Type::UgcEditorOpened: return "UgcEditorOpened"; case MapObject::Event::Type::UgcSaved: return "UgcSaved"; case MapObject::Event::Type::RouteToCreated: return "RouteToCreated"; - case MapObject::Event::Type::BookingBook: return "BookingBook"; - case MapObject::Event::Type::BookingMore: return "BookingMore"; - case MapObject::Event::Type::BookingReviews: return "BookingReviews"; - case MapObject::Event::Type::BookingDetails: return "BookingDetails"; } UNREACHABLE(); } diff --git a/metrics/metrics_tests/eye_tests.cpp b/metrics/metrics_tests/eye_tests.cpp index 6bd3a817be..10863a7278 100644 --- a/metrics/metrics_tests/eye_tests.cpp +++ b/metrics/metrics_tests/eye_tests.cpp @@ -59,9 +59,6 @@ Info MakeDefaultInfoForTesting() eventInfo.m_userPos = {53.016347, 158.683327}; eventInfo.m_type = MapObject::Event::Type::Open; poi.GetEditableEvents().push_back(eventInfo); - eventInfo.m_eventTime = Time(std::chrono::hours(100000)); - eventInfo.m_userPos = {53.016347, 158.683327}; - eventInfo.m_type = MapObject::Event::Type::BookingMore; info.m_mapObjects.Add(poi); info.m_promo.m_lastTimeShownAfterBooking = Time(std::chrono::hours(100000)); @@ -733,18 +730,6 @@ std::string DebugPrint(First first) case First::Count: return "Count"; } } - -std::string DebugPrint(Second second) -{ - switch (second) - { - case Second::One: return "One"; - case Second::Two: return "Two"; - case Second::Three: return "Three"; - case Second::Four: return "Four"; - case Second::Count: return "Count"; - } -} } // namespace UNIT_TEST(EyeInfo_CountersSerdes) |