jenkins-bot has submitted this change and it was merged. ( 
https://gerrit.wikimedia.org/r/404535 )

Change subject: Add basic eventlogging to Offline Library screen.
......................................................................


Add basic eventlogging to Offline Library screen.

- Also fix Sharing of packs on Nougat and higher (it was crashing).

Bug: T179069
Change-Id: I90caafdd11b42af9b69af283f959072fd7986fee
---
A app/src/main/java/org/wikipedia/analytics/OfflineLibraryFunnel.java
M app/src/main/java/org/wikipedia/offline/LocalCompilationsFragment.java
M app/src/main/java/org/wikipedia/settings/SettingsPreferenceLoader.java
M app/src/main/java/org/wikipedia/util/ShareUtil.java
M app/src/main/res/xml/file_paths.xml
5 files changed, 75 insertions(+), 56 deletions(-)

Approvals:
  jenkins-bot: Verified
  Cooltey: Looks good to me, approved



diff --git 
a/app/src/main/java/org/wikipedia/analytics/OfflineLibraryFunnel.java 
b/app/src/main/java/org/wikipedia/analytics/OfflineLibraryFunnel.java
new file mode 100644
index 0000000..3cbb436
--- /dev/null
+++ b/app/src/main/java/org/wikipedia/analytics/OfflineLibraryFunnel.java
@@ -0,0 +1,43 @@
+package org.wikipedia.analytics;
+
+import android.support.annotation.NonNull;
+
+import org.json.JSONObject;
+import org.wikipedia.WikipediaApp;
+import org.wikipedia.offline.Compilation;
+
+import java.util.List;
+
+public class OfflineLibraryFunnel extends TimedFunnel {
+    private static final String SCHEMA_NAME = "MobileWikiAppOfflineLibrary";
+    private static final int REV_ID = 17649221;
+
+    private final int source;
+    private int shareCount;
+
+    public OfflineLibraryFunnel(WikipediaApp app, int source) {
+        super(app, SCHEMA_NAME, REV_ID, Funnel.SAMPLE_LOG_ALL, 
app.getWikiSite());
+        this.source = source;
+    }
+
+    @Override protected void preprocessSessionToken(@NonNull JSONObject 
eventData) { }
+
+    public void share() {
+        shareCount++;
+    }
+
+    public void done(@NonNull List<Compilation> currentCompilations) {
+        StringBuilder packStr = new StringBuilder();
+        for (Compilation c : currentCompilations) {
+            if (packStr.length() > 0) {
+                packStr.append(",");
+            }
+            packStr.append(c.name());
+        }
+        log(
+                "source", source,
+                "packList", packStr.toString(),
+                "shareCount", shareCount
+        );
+    }
+}
diff --git 
a/app/src/main/java/org/wikipedia/offline/LocalCompilationsFragment.java 
b/app/src/main/java/org/wikipedia/offline/LocalCompilationsFragment.java
index 08a148a..b9e3426 100644
--- a/app/src/main/java/org/wikipedia/offline/LocalCompilationsFragment.java
+++ b/app/src/main/java/org/wikipedia/offline/LocalCompilationsFragment.java
@@ -1,8 +1,6 @@
 package org.wikipedia.offline;
 
-import android.content.DialogInterface;
 import android.content.Intent;
-import android.net.Uri;
 import android.os.Bundle;
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
@@ -13,14 +11,15 @@
 import android.support.v7.widget.SimpleItemAnimator;
 import android.text.method.LinkMovementMethod;
 import android.view.LayoutInflater;
-import android.view.MenuItem;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.ProgressBar;
 import android.widget.TextView;
 
 import org.wikipedia.R;
+import org.wikipedia.WikipediaApp;
 import org.wikipedia.activity.FragmentUtil;
+import org.wikipedia.analytics.OfflineLibraryFunnel;
 import org.wikipedia.page.LinkMovementMethodExt;
 import org.wikipedia.richtext.RichTextUtil;
 import org.wikipedia.settings.SettingsActivity;
@@ -35,6 +34,7 @@
 import org.wikipedia.views.SearchEmptyView;
 import org.wikipedia.views.WikiErrorView;
 
+import java.io.File;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -65,6 +65,7 @@
     private CompilationItemAdapter adapter = new CompilationItemAdapter();
     private ItemCallback itemCallback = new ItemCallback();
     private CompilationClientCallback compilationClientCallback = new 
CompilationClientCallback();
+    private OfflineLibraryFunnel funnel;
 
     @NonNull private List<Compilation> displayedItems = new ArrayList<>();
 
@@ -89,12 +90,7 @@
         recyclerView.addItemDecoration(new 
DrawableItemDecoration(getContext(), R.attr.list_separator_drawable));
         ((SimpleItemAnimator) 
recyclerView.getItemAnimator()).setSupportsChangeAnimations(false);
 
-        errorView.setBackClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                getActivity().finish();
-            }
-        });
+        errorView.setBackClickListener(v -> getActivity().finish());
 
         emptyDescription.setMovementMethod(LinkMovementMethod.getInstance());
         
emptyDescription.setText(StringUtil.fromHtml(getString(R.string.offline_library_empty_description_sideload)));
@@ -102,16 +98,15 @@
         packsHint.setMovementMethod(LinkMovementMethod.getInstance());
         
packsHint.setText(StringUtil.fromHtml(getString(R.string.offline_library_packs_hint)));
         RichTextUtil.removeUnderlinesFromLinks(packsHint);
-        dataUsageHint.setMovementMethod(new LinkMovementMethodExt(new 
LinkMovementMethodExt.UrlHandler() {
-            @Override
-            public void onUrlClick(@NonNull String url, @Nullable String 
titleString) {
-                if (url.equals(UriUtil.LOCAL_URL_SETTINGS)) {
-                    startActivity(SettingsActivity.newIntent(getContext()));
-                }
+        dataUsageHint.setMovementMethod(new LinkMovementMethodExt((url, 
titleString) -> {
+            if (url.equals(UriUtil.LOCAL_URL_SETTINGS)) {
+                startActivity(SettingsActivity.newIntent(getContext()));
             }
         }));
         
dataUsageHint.setText(StringUtil.fromHtml(getString(R.string.offline_library_data_usage_hint)));
         RichTextUtil.removeUnderlinesFromLinks(dataUsageHint);
+
+        funnel = new OfflineLibraryFunnel(WikipediaApp.getInstance(), 0);
         return view;
     }
 
@@ -130,6 +125,7 @@
 
     @Override
     public void onDestroyView() {
+        funnel.done(OfflineManager.instance().compilations());
         recyclerView.setAdapter(null);
         unbinder.unbind();
         unbinder = null;
@@ -159,12 +155,7 @@
     }
 
     private void postBeginUpdate() {
-        listContainer.post(new Runnable() {
-            @Override
-            public void run() {
-                beginUpdate();
-            }
-        });
+        listContainer.post(this::beginUpdate);
     }
 
     private void beginUpdate() {
@@ -221,12 +212,7 @@
                     
DimenUtil.roundedDpToPx(DimenUtil.getDimension(R.dimen.activity_horizontal_margin)),
                     
DimenUtil.roundedDpToPx(DimenUtil.getDimension(R.dimen.list_item_footer_padding)));
             
controlView.setBackgroundColor(ResourceUtil.getThemedColor(getContext(), 
android.R.attr.colorBackground));
-            controlView.setCallback(new 
CompilationDownloadControlView.Callback() {
-                @Override
-                public void onCancel() {
-                    getDownloadObserver().remove(compilation);
-                }
-            });
+            controlView.setCallback(() -> 
getDownloadObserver().remove(compilation));
         }
 
         void bindItem(Compilation compilation) {
@@ -272,7 +258,7 @@
 
         @Override
         public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, 
int type) {
-            return new CompilationItemHolder(new 
PageItemView<Compilation>(getContext()));
+            return new CompilationItemHolder(new PageItemView<>(getContext()));
         }
 
         @Override
@@ -324,19 +310,16 @@
     private void showCompilationOverflowMenu(@NonNull final Compilation 
compilation, @NonNull View anchorView) {
         PopupMenu menu = new PopupMenu(anchorView.getContext(), anchorView);
         menu.getMenuInflater().inflate(R.menu.menu_local_compilation_item, 
menu.getMenu());
-        menu.setOnMenuItemClickListener(new 
PopupMenu.OnMenuItemClickListener() {
-            @Override
-            public boolean onMenuItemClick(MenuItem menuItem) {
-                switch (menuItem.getItemId()) {
-                    case R.id.menu_compilation_share:
-                        share(compilation);
-                        return false;
-                    case R.id.menu_compilation_remove:
-                        remove(compilation);
-                        return false;
-                    default:
-                        return false;
-                }
+        menu.setOnMenuItemClickListener(menuItem -> {
+            switch (menuItem.getItemId()) {
+                case R.id.menu_compilation_share:
+                    share(compilation);
+                    return false;
+                case R.id.menu_compilation_remove:
+                    remove(compilation);
+                    return false;
+                default:
+                    return false;
             }
         });
         menu.show();
@@ -345,18 +328,14 @@
     private void share(@NonNull Compilation compilation) {
         Intent intent = ShareCompat.IntentBuilder.from(getActivity())
                 .setType("*/*")
-                .setStream(Uri.parse("file://" + compilation.path()))
+                .setStream(ShareUtil.getUriFromFile(getContext(), new 
File(compilation.path())))
                 .getIntent();
         startActivity(ShareUtil.createChooserIntent(intent, 
getString(R.string.share_via), getContext()));
+        funnel.share();
     }
 
     private void remove(@NonNull final Compilation compilation) {
-        getDownloadObserver().removeWithConfirmation(getActivity(), 
compilation, new DialogInterface.OnClickListener() {
-            @Override
-            public void onClick(DialogInterface dialog, int which) {
-                beginUpdate();
-            }
-        });
+        getDownloadObserver().removeWithConfirmation(getActivity(), 
compilation, (dialog, which) -> beginUpdate());
     }
 
     private class CompilationClientCallback implements 
CompilationClient.Callback {
diff --git 
a/app/src/main/java/org/wikipedia/settings/SettingsPreferenceLoader.java 
b/app/src/main/java/org/wikipedia/settings/SettingsPreferenceLoader.java
index f6491c9..931347b 100644
--- a/app/src/main/java/org/wikipedia/settings/SettingsPreferenceLoader.java
+++ b/app/src/main/java/org/wikipedia/settings/SettingsPreferenceLoader.java
@@ -57,10 +57,6 @@
         Preference offlineLibPref = 
findPreference(R.string.preference_key_enable_offline_library);
         offlineLibPref.setOnPreferenceChangeListener(new 
OfflineLibraryEnableListener());
         
offlineLibPref.setSummary(StringUtil.fromHtml(getPreferenceHost().getString(R.string.preference_summary_enable_offline_library)));
-        // TODO: remove when offline library sideloading is ready to go.
-        if (!ReleaseUtil.isPreBetaRelease()) {
-            offlineLibPref.setVisible(false);
-        }
 
         loadPreferences(R.xml.preferences_about);
 
diff --git a/app/src/main/java/org/wikipedia/util/ShareUtil.java 
b/app/src/main/java/org/wikipedia/util/ShareUtil.java
index ec516c0..60b1a54 100644
--- a/app/src/main/java/org/wikipedia/util/ShareUtil.java
+++ b/app/src/main/java/org/wikipedia/util/ShareUtil.java
@@ -69,7 +69,7 @@
             @Override
             public Uri performTask() throws Throwable {
                 File processedBitmap = processBitmapForSharing(context, bmp, 
imageFileName);
-                return getUri(context, processedBitmap);
+                return getUriFromFile(context, processedBitmap);
             }
 
             @Override
@@ -100,10 +100,10 @@
     }
 
 
-    private static Uri getUri(Context context, File processedBitmap) {
+    public static Uri getUriFromFile(@NonNull Context context, @NonNull File 
file) {
         return Build.VERSION.SDK_INT >= Build.VERSION_CODES.M
-                ? FileProvider.getUriForFile(context, FILE_PROVIDER_AUTHORITY, 
processedBitmap)
-                : Uri.parse(FILE_PREFIX + processedBitmap.getAbsolutePath());
+                ? FileProvider.getUriForFile(context, FILE_PROVIDER_AUTHORITY, 
file)
+                : Uri.parse(FILE_PREFIX + file.getAbsolutePath());
     }
 
     private static File processBitmapForSharing(final Context context, final 
Bitmap bmp,
diff --git a/app/src/main/res/xml/file_paths.xml 
b/app/src/main/res/xml/file_paths.xml
index e2db02d..fc2c7bd 100644
--- a/app/src/main/res/xml/file_paths.xml
+++ b/app/src/main/res/xml/file_paths.xml
@@ -1,4 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <paths>
     <cache-path name="share" path="share/" />
+    <external-path name="external_files" path="."/>
 </paths>
\ No newline at end of file

-- 
To view, visit https://gerrit.wikimedia.org/r/404535
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I90caafdd11b42af9b69af283f959072fd7986fee
Gerrit-PatchSet: 1
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Dbrant <[email protected]>
Gerrit-Reviewer: Brion VIBBER <[email protected]>
Gerrit-Reviewer: Cooltey <[email protected]>
Gerrit-Reviewer: Sharvaniharan <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to