[android] Supported user actions call for UserActionsLogger

This commit is contained in:
Dmitry Donskoy 2018-09-12 20:58:17 +03:00 committed by Aleksandr Zatsepin
parent 525dcd30b7
commit e3b67a1be4
8 changed files with 115 additions and 20 deletions

View file

@ -67,6 +67,7 @@ import com.mapswithme.maps.location.CompassData;
import com.mapswithme.maps.location.LocationHelper;
import com.mapswithme.maps.maplayer.MapLayerCompositeController;
import com.mapswithme.maps.maplayer.Mode;
import com.mapswithme.maps.metrics.UserActionsLogger;
import com.mapswithme.maps.tips.TipsApi;
import com.mapswithme.maps.maplayer.subway.OnSubwayLayerToggleListener;
import com.mapswithme.maps.maplayer.subway.SubwayManager;
@ -2743,6 +2744,7 @@ public class MwmActivity extends BaseMwmFragmentActivity
Statistics.INSTANCE.trackToolbarClick(getItem());
RoutingController.get().cancel();
getActivity().closeMenu(() -> getActivity().showSearch(getActivity().mSearchController.getQuery()));
UserActionsLogger.logDiscoveryShownEvent();
}
}
@ -2806,6 +2808,7 @@ public class MwmActivity extends BaseMwmFragmentActivity
{
Statistics.INSTANCE.trackToolbarClick(getItem());
getActivity().closeMenu(getActivity()::showBookmarks);
UserActionsLogger.logBookmarksCatalogShownEvent();
}
}
@ -2836,6 +2839,7 @@ public class MwmActivity extends BaseMwmFragmentActivity
{
Statistics.INSTANCE.trackToolbarClick(getItem());
getActivity().showDiscovery();
UserActionsLogger.logDiscoveryShownEvent();
}
}

View file

@ -29,6 +29,7 @@ import com.mapswithme.maps.gallery.ItemSelectedListener;
import com.mapswithme.maps.gallery.Items;
import com.mapswithme.maps.gallery.impl.BaseItemSelectedListener;
import com.mapswithme.maps.gallery.impl.Factory;
import com.mapswithme.maps.gallery.impl.GalleryBasedItemSelectedListener;
import com.mapswithme.maps.search.SearchResult;
import com.mapswithme.maps.widget.PlaceholderView;
import com.mapswithme.maps.widget.ToolbarController;
@ -389,22 +390,24 @@ public class DiscoveryFragment extends BaseMwmToolbarFragment implements Discove
private <I extends Items.Item> ItemSelectedListener<I> createOnlineProductItemListener(@NonNull GalleryType galleryType,
@NonNull ItemType itemType)
{
return new BaseItemSelectedListener<I>(getActivity(), itemType)
return new GalleryBasedItemSelectedListener<I>(getActivity(), itemType)
{
@Override
public void onItemSelected(@NonNull I item, int position)
public void onItemSelectedInternal(@NonNull I item, int position)
{
super.onItemSelected(item, position);
super.onItemSelectedInternal(item, position);
Statistics.INSTANCE.trackGalleryProductItemSelected(galleryType, DISCOVERY, position, EXTERNAL);
getType().getItemClickEvent().log();
}
@Override
public void onMoreItemSelected(@NonNull I item)
public void onMoreItemSelectedInternal(@NonNull I item)
{
super.onMoreItemSelected(item);
super.onMoreItemSelectedInternal(item);
Statistics.INSTANCE.trackGalleryEvent(Statistics.EventName.PP_SPONSOR_MORE_SELECTED,
galleryType,
DISCOVERY);
getType().getMoreClickEvent().log();
}
};
}
@ -423,7 +426,7 @@ public class DiscoveryFragment extends BaseMwmToolbarFragment implements Discove
}
}
private static class SearchBasedListener extends BaseItemSelectedListener<Items.SearchItem>
private static class SearchBasedListener extends GalleryBasedItemSelectedListener<Items.SearchItem>
{
@NonNull
private final DiscoveryFragment mFragment;
@ -441,14 +444,14 @@ public class DiscoveryFragment extends BaseMwmToolbarFragment implements Discove
}
@Override
public void onMoreItemSelected(@NonNull Items.SearchItem item)
public void onMoreItemSelectedInternal(@NonNull Items.SearchItem item)
{
mFragment.showSimilarItems(item, getType());
}
@Override
@CallSuper
public void onItemSelected(@NonNull Items.SearchItem item, int position)
public void onItemSelectedInternal(@NonNull Items.SearchItem item, int position)
{
mFragment.showOnMap(item);
Statistics.INSTANCE.trackGalleryProductItemSelected(mType, DISCOVERY, position, PLACEPAGE);
@ -478,7 +481,7 @@ public class DiscoveryFragment extends BaseMwmToolbarFragment implements Discove
}
@Override
public void onMoreItemSelected(@NonNull Items.SearchItem item)
public void onMoreItemSelectedInternal(@NonNull Items.SearchItem item)
{
getFragment().showFilter();
Statistics.INSTANCE.trackGalleryEvent(Statistics.EventName.PP_SPONSOR_MORE_SELECTED,

View file

@ -1,13 +1,31 @@
package com.mapswithme.maps.discovery;
import com.mapswithme.maps.metrics.UserActionsLogger;
public enum DiscoveryUserEvent
{
HOTELS_CLICKED,
ATTRACTIONS_CLICKED,
CAFES_CLICKED,
LOCALS_CLICKED,
MORE_HOTELS_CLICKED,
MORE_ATTRACTIONS_CLICKED,
MORE_CAFES_CLICKED,
MORE_LOCALS_CLICKED
MORE_LOCALS_CLICKED,
/* Must be last */
STUB
{
@Override
public void log()
{
/* Do nothing */
}
};
public void log()
{
UserActionsLogger.logDiscoveryItemClickedEvent(this);
}
}

View file

@ -11,10 +11,13 @@ public enum ItemType
{
VIATOR,
ATTRACTIONS(R.string.discovery_button_subtitle_attractions)
ATTRACTIONS(R.string.discovery_button_subtitle_attractions,
DiscoveryUserEvent.MORE_ATTRACTIONS_CLICKED,
DiscoveryUserEvent.ATTRACTIONS_CLICKED)
{
@Override
public void onResultReceived(@NonNull DiscoveryResultReceiver callback, @NonNull SearchResult[] results)
public void onResultReceived(@NonNull DiscoveryResultReceiver callback,
@NonNull SearchResult[] results)
{
callback.onAttractionsReceived(results);
}
@ -26,10 +29,11 @@ public enum ItemType
}
},
CAFES(R.string.food)
CAFES(R.string.food, DiscoveryUserEvent.MORE_CAFES_CLICKED, DiscoveryUserEvent.CAFES_CLICKED)
{
@Override
public void onResultReceived(@NonNull DiscoveryResultReceiver callback, @NonNull SearchResult[] results)
public void onResultReceived(@NonNull DiscoveryResultReceiver callback,
@NonNull SearchResult[] results)
{
callback.onCafesReceived(results);
}
@ -41,28 +45,51 @@ public enum ItemType
}
},
HOTELS
HOTELS(R.string.discovery_button_subtitle_attractions, DiscoveryUserEvent.MORE_HOTELS_CLICKED,
DiscoveryUserEvent.HOTELS_CLICKED)
{
@Override
public void onResultReceived(@NonNull DiscoveryResultReceiver callback, @NonNull SearchResult[] results)
public void onResultReceived(@NonNull DiscoveryResultReceiver callback,
@NonNull SearchResult[] results)
{
callback.onHotelsReceived(results);
}
},
LOCAL_EXPERTS;
LOCAL_EXPERTS(R.string.discovery_button_subtitle_attractions,
DiscoveryUserEvent.MORE_LOCALS_CLICKED,
DiscoveryUserEvent.LOCALS_CLICKED);
@StringRes
private final int mSearchCategory;
@NonNull
private final DiscoveryUserEvent mMoreClickEvent;
@NonNull
private final DiscoveryUserEvent mItemClickEvent;
ItemType(@StringRes int searchCategory)
ItemType(@StringRes int searchCategory, @NonNull DiscoveryUserEvent moreClickEvent,
@NonNull DiscoveryUserEvent itemClickEvent)
{
mSearchCategory = searchCategory;
mMoreClickEvent = moreClickEvent;
mItemClickEvent = itemClickEvent;
}
ItemType()
{
this(UiUtils.NO_ID);
this(UiUtils.NO_ID, DiscoveryUserEvent.STUB, DiscoveryUserEvent.STUB);
}
@NonNull
public DiscoveryUserEvent getMoreClickEvent()
{
return mMoreClickEvent;
}
@NonNull
public DiscoveryUserEvent getItemClickEvent()
{
return mItemClickEvent;
}
@StringRes

View file

@ -0,0 +1,39 @@
package com.mapswithme.maps.gallery.impl;
import android.app.Activity;
import android.support.annotation.NonNull;
import com.mapswithme.maps.discovery.ItemType;
import com.mapswithme.maps.gallery.Items;
public class GalleryBasedItemSelectedListener<I extends Items.Item> extends BaseItemSelectedListener<I>
{
public GalleryBasedItemSelectedListener(@NonNull Activity context, @NonNull ItemType type)
{
super(context, type);
}
@Override
public final void onMoreItemSelected(@NonNull I item)
{
onMoreItemSelectedInternal(item);
getType().getMoreClickEvent().log();
}
@Override
public final void onItemSelected(@NonNull I item, int position)
{
onItemSelectedInternal(item, position);
getType().getItemClickEvent().log();
}
protected void onMoreItemSelectedInternal(@NonNull I item)
{
super.onMoreItemSelected(item);
}
protected void onItemSelectedInternal(@NonNull I item, int position)
{
super.onItemSelected(item, position);
}
}

View file

@ -25,6 +25,7 @@ import com.mapswithme.maps.R;
import com.mapswithme.maps.bookmarks.OnItemClickListener;
import com.mapswithme.maps.maplayer.subway.OnSubwayLayerToggleListener;
import com.mapswithme.maps.maplayer.traffic.OnTrafficLayerToggleListener;
import com.mapswithme.maps.metrics.UserActionsLogger;
import com.mapswithme.maps.widget.recycler.SpanningLinearLayoutManager;
import java.util.Arrays;
@ -207,6 +208,7 @@ public class ToggleMapLayerDialog extends DialogFragment
{
OnSubwayLayerToggleListener listener = (OnSubwayLayerToggleListener) getActivity();
listener.onSubwayLayerSelected();
UserActionsLogger.logLayerUsedEvent(Mode.SUBWAY);
}
}
@ -217,6 +219,7 @@ public class ToggleMapLayerDialog extends DialogFragment
{
OnTrafficLayerToggleListener listener = (OnTrafficLayerToggleListener) getActivity();
listener.onTrafficLayerSelected();
UserActionsLogger.logLayerUsedEvent(Mode.TRAFFIC);
}
}
}

View file

@ -1,6 +1,5 @@
package com.mapswithme.maps.metrics;
import android.provider.Settings;
import android.support.annotation.NonNull;
import com.mapswithme.maps.discovery.DiscoveryUserEvent;

View file

@ -22,6 +22,7 @@ import com.mapswithme.maps.MwmApplication;
import com.mapswithme.maps.R;
import com.mapswithme.maps.activity.CustomNavigateUpListener;
import com.mapswithme.maps.base.BaseMwmToolbarFragment;
import com.mapswithme.maps.metrics.UserActionsLogger;
import com.mapswithme.maps.widget.ToolbarController;
import com.mapswithme.maps.widget.recycler.TagItemDecoration;
import com.mapswithme.maps.widget.recycler.TagLayoutManager;
@ -226,6 +227,7 @@ public class FilterFragment extends BaseMwmToolbarFragment
mListener.onFilterApply(filter, params);
Statistics.INSTANCE.trackFilterEvent(Statistics.EventName.SEARCH_FILTER_APPLY,
Statistics.EventParam.HOTEL);
UserActionsLogger.logBookingFilterUsedEvent();
}
@Override