Mholloway has uploaded a new change for review. ( https://gerrit.wikimedia.org/r/333993 )
Change subject: Instrument EventLogging for description editing ...................................................................... Instrument EventLogging for description editing Bug: T149915 Change-Id: I45c74605d9fa5bf9036d30bd93f84b17365a3f77 --- M app/src/main/java/org/wikipedia/analytics/EditFunnel.java M app/src/main/java/org/wikipedia/analytics/FunnelManager.java M app/src/main/java/org/wikipedia/descriptions/DescriptionEditFragment.java M app/src/main/java/org/wikipedia/page/leadimages/ArticleHeaderView.java M app/src/main/java/org/wikipedia/page/leadimages/LeadImagesHandler.java 5 files changed, 77 insertions(+), 14 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia refs/changes/93/333993/1 diff --git a/app/src/main/java/org/wikipedia/analytics/EditFunnel.java b/app/src/main/java/org/wikipedia/analytics/EditFunnel.java index 5bbd88c..29f912e 100644 --- a/app/src/main/java/org/wikipedia/analytics/EditFunnel.java +++ b/app/src/main/java/org/wikipedia/analytics/EditFunnel.java @@ -11,11 +11,26 @@ public class EditFunnel extends Funnel { private static final String SCHEMA_NAME = "MobileWikiAppEdit"; - private static final int REV_ID = 9003125; + private static final int REV_ID = 16254387; - private final PageTitle title; + public enum DescriptionEditType { + NEW("new"), + EXISTING("existing"); - public EditFunnel(WikipediaApp app, PageTitle title) { + private String logString; + + DescriptionEditType(@NonNull String logString) { + this.logString = logString; + } + + @NonNull public String toLogString() { + return logString; + } + } + + @NonNull private final PageTitle title; + + public EditFunnel(@NonNull WikipediaApp app, @NonNull PageTitle title) { super(app, SCHEMA_NAME, REV_ID, title.getWikiSite()); this.title = title; } @@ -32,6 +47,13 @@ ); } + public void logStart(@NonNull DescriptionEditType type) { + log( + "action", "start", + "wikidataDescriptionEdit", type.toLogString() + ); + } + public void logPreview() { log( "action", "preview" @@ -42,6 +64,13 @@ log( "action", "saved", "revID", revID + ); + } + + public void logSaved(@NonNull DescriptionEditType type) { + log( + "action", "saved", + "wikidataDescriptionEdit", type.toLogString() ); } @@ -148,6 +177,20 @@ ); } + public void logSaveAttempt(DescriptionEditType type) { + log( + "action", "saveAttempt", + "wikidataDescriptionEdit", type.toLogString() + ); + } + + public void logReady(DescriptionEditType type) { + log( + "action", "ready", + "wikidataDescriptionEdit", type.toLogString() + ); + } + @Override protected JSONObject preprocessData(@NonNull JSONObject eventData) { if (User.isLoggedIn()) { diff --git a/app/src/main/java/org/wikipedia/analytics/FunnelManager.java b/app/src/main/java/org/wikipedia/analytics/FunnelManager.java index 3f7d0e1..3dc98bf 100644 --- a/app/src/main/java/org/wikipedia/analytics/FunnelManager.java +++ b/app/src/main/java/org/wikipedia/analytics/FunnelManager.java @@ -1,5 +1,7 @@ package org.wikipedia.analytics; +import android.support.annotation.NonNull; + import org.wikipedia.WikipediaApp; import org.wikipedia.page.PageTitle; @@ -16,7 +18,7 @@ this.app = app; } - public EditFunnel getEditFunnel(PageTitle title) { + public EditFunnel getEditFunnel(@NonNull PageTitle title) { if (!editFunnels.containsKey(title)) { editFunnels.put(title, new EditFunnel(app, title)); } diff --git a/app/src/main/java/org/wikipedia/descriptions/DescriptionEditFragment.java b/app/src/main/java/org/wikipedia/descriptions/DescriptionEditFragment.java index cc3586a..6612bbe 100644 --- a/app/src/main/java/org/wikipedia/descriptions/DescriptionEditFragment.java +++ b/app/src/main/java/org/wikipedia/descriptions/DescriptionEditFragment.java @@ -14,6 +14,7 @@ import org.wikipedia.R; import org.wikipedia.WikipediaApp; import org.wikipedia.activity.FragmentUtil; +import org.wikipedia.analytics.EditFunnel; import org.wikipedia.csrf.CsrfToken; import org.wikipedia.csrf.CsrfTokenClient; import org.wikipedia.dataclient.WikiSite; @@ -46,11 +47,13 @@ private static final String ARG_TITLE = "title"; + @NonNull private WikipediaApp app = WikipediaApp.getInstance(); @BindView(R.id.fragment_description_edit_view) DescriptionEditView editView; private Unbinder unbinder; private PageTitle pageTitle; @Nullable private Call<CsrfToken> editTokenCall; @Nullable private Call<DescriptionEdit> descriptionEditCall; + @Nullable private EditFunnel.DescriptionEditType editType; private Runnable successRunnable = new Runnable() { @Override public void run() { @@ -82,6 +85,9 @@ @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); pageTitle = GsonUnmarshaller.unmarshal(PageTitle.class, getArguments().getString(ARG_TITLE)); + editType = pageTitle.getDescription() == null + ? EditFunnel.DescriptionEditType.NEW + : EditFunnel.DescriptionEditType.EXISTING; } @Nullable @@ -93,6 +99,7 @@ editView.setPageTitle(pageTitle); editView.setCallback(new EditViewCallback()); + getEditFunnel(pageTitle).logReady(editType); return view; } @@ -153,6 +160,7 @@ cancelCalls(); requestEditToken(); + getEditFunnel(pageTitle).logSaveAttempt(editType); } /** fetch edit token from Wikidata */ @@ -191,7 +199,6 @@ * @throws IllegalArgumentException if user is not logged in */ private void refreshLoginTokens(User user, @NonNull RetryCallback retryCallback) { - WikipediaApp app = WikipediaApp.getInstance(); app.getCsrfTokenStorage().clearAllTokens(); app.getCookieManager().clearAllCookies(); @@ -230,6 +237,7 @@ // to determine whether the change has propagated to the relevant // RESTBase endpoints. new Handler().postDelayed(successRunnable, TimeUnit.SECONDS.toMillis(4)); + getEditFunnel(pageTitle).logSaved(editType); } @Override public void abusefilter(@NonNull Call<DescriptionEdit> call, @@ -263,6 +271,10 @@ } } + private EditFunnel getEditFunnel(@NonNull PageTitle title) { + return app.getFunnelManager().getEditFunnel(title); + } + private interface RetryCallback { void retry(); } diff --git a/app/src/main/java/org/wikipedia/page/leadimages/ArticleHeaderView.java b/app/src/main/java/org/wikipedia/page/leadimages/ArticleHeaderView.java index adfdbfb..b05ed32 100644 --- a/app/src/main/java/org/wikipedia/page/leadimages/ArticleHeaderView.java +++ b/app/src/main/java/org/wikipedia/page/leadimages/ArticleHeaderView.java @@ -134,6 +134,10 @@ return image.getImage(); } + @NonNull CharSequence getSubtitle() { + return subtitle; + } + public void setOnImageLoadListener(@Nullable FaceAndColorDetectImageView.OnImageLoadListener listener) { image.setLoadListener(listener); } diff --git a/app/src/main/java/org/wikipedia/page/leadimages/LeadImagesHandler.java b/app/src/main/java/org/wikipedia/page/leadimages/LeadImagesHandler.java index 8ae69bf..d3e3db2 100755 --- a/app/src/main/java/org/wikipedia/page/leadimages/LeadImagesHandler.java +++ b/app/src/main/java/org/wikipedia/page/leadimages/LeadImagesHandler.java @@ -19,6 +19,7 @@ import org.wikipedia.Constants; import org.wikipedia.R; import org.wikipedia.WikipediaApp; +import org.wikipedia.analytics.EditFunnel; import org.wikipedia.analytics.GalleryFunnel; import org.wikipedia.analytics.LoginFunnel; import org.wikipedia.bridge.CommunicationBridge; @@ -71,13 +72,9 @@ this.parentFragment = parentFragment; this.bridge = bridge; this.webView = webView; - image = articleHeaderView.getImage(); - initDisplayDimensions(); - initWebView(); - initArticleHeaderView(); // hide ourselves by default @@ -249,12 +246,16 @@ articleHeaderView.setCallback(new ArticleHeaderView.Callback() { @Override public void onDescriptionClicked() { - verifyLoggedInForDescriptionEdit(); + verifyLoggedInForDescriptionEdit(EditFunnel.DescriptionEditType.NEW); } @Override public void onEditDescription() { - verifyLoggedInForDescriptionEdit(); + verifyLoggedInForDescriptionEdit( + TextUtils.isEmpty(articleHeaderView.getSubtitle()) + ? EditFunnel.DescriptionEditType.NEW + : EditFunnel.DescriptionEditType.EXISTING + ); } @Override @@ -264,7 +265,7 @@ }); } - private void verifyLoggedInForDescriptionEdit() { + private void verifyLoggedInForDescriptionEdit(@NonNull EditFunnel.DescriptionEditType type) { if (!User.isLoggedIn() && Prefs.getTotalAnonDescriptionsEdited() >= parentFragment.getResources().getInteger(R.integer.description_max_anon_edits)) { new AlertDialog.Builder(parentFragment.getContext()) .setMessage(R.string.description_edit_anon_limit) @@ -277,11 +278,11 @@ .setNegativeButton(android.R.string.cancel, null) .show(); } else { - startDescriptionEditActivity(); + startDescriptionEditActivity(type); } } - private void startDescriptionEditActivity() { + private void startDescriptionEditActivity(@NonNull EditFunnel.DescriptionEditType type) { if (isDescriptionEditTutorialEnabled()) { parentFragment.startActivityForResult(DescriptionEditTutorialActivity.newIntent(parentFragment.getContext()), Constants.ACTIVITY_REQUEST_DESCRIPTION_EDIT_TUTORIAL); @@ -290,6 +291,7 @@ parentFragment.startActivityForResult(DescriptionEditActivity.newIntent(getActivity(), getTitle()), Constants.ACTIVITY_REQUEST_DESCRIPTION_EDIT); + WikipediaApp.getInstance().getFunnelManager().getEditFunnel(getTitle()).logStart(type); } private void initWebView() { -- To view, visit https://gerrit.wikimedia.org/r/333993 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I45c74605d9fa5bf9036d30bd93f84b17365a3f77 Gerrit-PatchSet: 1 Gerrit-Project: apps/android/wikipedia Gerrit-Branch: master Gerrit-Owner: Mholloway <mhollo...@wikimedia.org> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits