Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArsentiy Milchakov <milcars@mapswithme.com>2019-07-09 19:24:31 +0300
committerRoman Kuznetsov <r.kuznetsow@gmail.com>2019-07-10 09:55:31 +0300
commit75deb3ec33619cee9a761568fa5db23f32b911b6 (patch)
treefbb436864883e6c16390fcc7cc5a4c4998cfe7fc /metrics
parent1f348a3a6f1d8f18d1ceadb7efdf8d22a172b3db (diff)
[eye][promo] several fixes for promo
Diffstat (limited to 'metrics')
-rw-r--r--metrics/eye.cpp46
-rw-r--r--metrics/eye.hpp5
-rw-r--r--metrics/eye_info.hpp12
-rw-r--r--metrics/metrics_tests/eye_tests.cpp15
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)