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

Reply via email to