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