From 7b1157b81c23ce07a342346c67708ac487c20b59 Mon Sep 17 00:00:00 2001 From: Stefanos Togkoulidis Date: Wed, 15 Jun 2016 11:24:59 +0300 Subject: [PATCH 1/5] Track the Gravatar permissions interrupted case --- .../wordpress/android/ui/main/MeFragment.java | 28 +++++++++++-------- .../android/analytics/AnalyticsTracker.java | 1 + .../analytics/AnalyticsTrackerMixpanel.java | 4 +++ .../analytics/AnalyticsTrackerNosara.java | 3 ++ 4 files changed, 24 insertions(+), 12 deletions(-) diff --git a/WordPress/src/main/java/org/wordpress/android/ui/main/MeFragment.java b/WordPress/src/main/java/org/wordpress/android/ui/main/MeFragment.java index 74409bee7576..c11b30cb58e4 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/main/MeFragment.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/main/MeFragment.java @@ -428,21 +428,25 @@ public void onRequestPermissionsResult(int requestCode, @NonNull String permissi grantResults) { switch (requestCode) { case CAMERA_AND_MEDIA_PERMISSION_REQUEST_CODE: - for (int grantResult : grantResults) { - if (grantResult == PackageManager.PERMISSION_DENIED) { - ToastUtils.showToast(this.getActivity(), getString(R.string - .gravatar_camera_and_media_permission_required), ToastUtils.Duration.LONG); - - AnalyticsTracker.track(AnalyticsTracker.Stat - .ME_GRAVATAR_PERMISSIONS_DENIED); - - return; + if (permissions == null || permissions.length == 0) { + AnalyticsTracker.track(AnalyticsTracker.Stat.ME_GRAVATAR_PERMISSIONS_INTERRUPTED); + } else { + for (int grantResult : grantResults) { + if (grantResult == PackageManager.PERMISSION_DENIED) { + ToastUtils.showToast(this.getActivity(), getString(R.string + .gravatar_camera_and_media_permission_required), ToastUtils.Duration.LONG); + + AnalyticsTracker.track(AnalyticsTracker.Stat + .ME_GRAVATAR_PERMISSIONS_DENIED); + + return; + } } - } - AnalyticsTracker.track(AnalyticsTracker.Stat.ME_GRAVATAR_PERMISSIONS_ACCEPTED); + AnalyticsTracker.track(AnalyticsTracker.Stat.ME_GRAVATAR_PERMISSIONS_ACCEPTED); - askForCameraOrGallery(); + askForCameraOrGallery(); + } break; } } diff --git a/libs/analytics/WordPressAnalytics/src/main/java/org/wordpress/android/analytics/AnalyticsTracker.java b/libs/analytics/WordPressAnalytics/src/main/java/org/wordpress/android/analytics/AnalyticsTracker.java index 69756225f98c..6a4d6f3afa68 100644 --- a/libs/analytics/WordPressAnalytics/src/main/java/org/wordpress/android/analytics/AnalyticsTracker.java +++ b/libs/analytics/WordPressAnalytics/src/main/java/org/wordpress/android/analytics/AnalyticsTracker.java @@ -85,6 +85,7 @@ public enum Stat { ME_ACCESSED, ME_GRAVATAR_TAPPED, ME_GRAVATAR_TOOLTIP_TAPPED, + ME_GRAVATAR_PERMISSIONS_INTERRUPTED, ME_GRAVATAR_PERMISSIONS_DENIED, ME_GRAVATAR_PERMISSIONS_ACCEPTED, ME_GRAVATAR_SHOT_NEW, diff --git a/libs/analytics/WordPressAnalytics/src/main/java/org/wordpress/android/analytics/AnalyticsTrackerMixpanel.java b/libs/analytics/WordPressAnalytics/src/main/java/org/wordpress/android/analytics/AnalyticsTrackerMixpanel.java index 0a3f9b44ec0c..54a8c4ed6671 100644 --- a/libs/analytics/WordPressAnalytics/src/main/java/org/wordpress/android/analytics/AnalyticsTrackerMixpanel.java +++ b/libs/analytics/WordPressAnalytics/src/main/java/org/wordpress/android/analytics/AnalyticsTrackerMixpanel.java @@ -874,6 +874,10 @@ private AnalyticsTrackerMixpanelInstructionsForStat instructionsForStat( instructions = AnalyticsTrackerMixpanelInstructionsForStat. mixpanelInstructionsForEventName("Me - Tapped Gravatar Tooltip"); break; + case ME_GRAVATAR_PERMISSIONS_INTERRUPTED: + instructions = AnalyticsTrackerMixpanelInstructionsForStat. + mixpanelInstructionsForEventName("Me - Gravatar Permissions Interrupted"); + break; case ME_GRAVATAR_PERMISSIONS_DENIED: instructions = AnalyticsTrackerMixpanelInstructionsForStat. mixpanelInstructionsForEventName("Me - Gravatar Permissions Denied"); diff --git a/libs/analytics/WordPressAnalytics/src/main/java/org/wordpress/android/analytics/AnalyticsTrackerNosara.java b/libs/analytics/WordPressAnalytics/src/main/java/org/wordpress/android/analytics/AnalyticsTrackerNosara.java index 5a5421064014..9fd404106a33 100644 --- a/libs/analytics/WordPressAnalytics/src/main/java/org/wordpress/android/analytics/AnalyticsTrackerNosara.java +++ b/libs/analytics/WordPressAnalytics/src/main/java/org/wordpress/android/analytics/AnalyticsTrackerNosara.java @@ -435,6 +435,9 @@ public void track(AnalyticsTracker.Stat stat, Map properties) { case ME_GRAVATAR_TOOLTIP_TAPPED: eventName = "me_gravatar_tooltip_tapped"; break; + case ME_GRAVATAR_PERMISSIONS_INTERRUPTED: + eventName = "me_gravatar_permissions_interrupted"; + break; case ME_GRAVATAR_PERMISSIONS_DENIED: eventName = "me_gravatar_permissions_denied"; break; From f1ca79933ca33d528a04acc00c23e4961b6b9b16 Mon Sep 17 00:00:00 2001 From: Stefanos Togkoulidis Date: Wed, 15 Jun 2016 11:31:16 +0300 Subject: [PATCH 2/5] Track denied permissions in Gravatar update --- .../org/wordpress/android/ui/main/MeFragment.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/WordPress/src/main/java/org/wordpress/android/ui/main/MeFragment.java b/WordPress/src/main/java/org/wordpress/android/ui/main/MeFragment.java index c11b30cb58e4..9a1c84088f16 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/main/MeFragment.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/main/MeFragment.java @@ -64,6 +64,8 @@ import java.lang.ref.WeakReference; import java.text.SimpleDateFormat; import java.util.Date; +import java.util.HashMap; +import java.util.Map; import java.util.TreeMap; import de.greenrobot.event.EventBus; @@ -431,13 +433,14 @@ public void onRequestPermissionsResult(int requestCode, @NonNull String permissi if (permissions == null || permissions.length == 0) { AnalyticsTracker.track(AnalyticsTracker.Stat.ME_GRAVATAR_PERMISSIONS_INTERRUPTED); } else { - for (int grantResult : grantResults) { - if (grantResult == PackageManager.PERMISSION_DENIED) { + for (int i = 0; i < grantResults.length; i++) { + if (grantResults[i] == PackageManager.PERMISSION_DENIED) { ToastUtils.showToast(this.getActivity(), getString(R.string .gravatar_camera_and_media_permission_required), ToastUtils.Duration.LONG); - AnalyticsTracker.track(AnalyticsTracker.Stat - .ME_GRAVATAR_PERMISSIONS_DENIED); + Map properties = new HashMap<>(); + properties.put("permission denied", permissions[i]); + AnalyticsTracker.track(AnalyticsTracker.Stat.ME_GRAVATAR_PERMISSIONS_DENIED, properties); return; } From 7b17f8e57be7194dbbaefcd98641c68b0936ef5b Mon Sep 17 00:00:00 2001 From: Stefanos Togkoulidis Date: Thu, 16 Jun 2016 09:36:38 +0300 Subject: [PATCH 3/5] Track all granted or denied Gravatar permissions --- .../wordpress/android/ui/main/MeFragment.java | 32 ++++++++++++------- 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/WordPress/src/main/java/org/wordpress/android/ui/main/MeFragment.java b/WordPress/src/main/java/org/wordpress/android/ui/main/MeFragment.java index 9a1c84088f16..918bc95489c3 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/main/MeFragment.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/main/MeFragment.java @@ -63,8 +63,10 @@ import java.io.IOException; import java.lang.ref.WeakReference; import java.text.SimpleDateFormat; +import java.util.ArrayList; import java.util.Date; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.TreeMap; @@ -433,22 +435,28 @@ public void onRequestPermissionsResult(int requestCode, @NonNull String permissi if (permissions == null || permissions.length == 0) { AnalyticsTracker.track(AnalyticsTracker.Stat.ME_GRAVATAR_PERMISSIONS_INTERRUPTED); } else { - for (int i = 0; i < grantResults.length; i++) { - if (grantResults[i] == PackageManager.PERMISSION_DENIED) { - ToastUtils.showToast(this.getActivity(), getString(R.string - .gravatar_camera_and_media_permission_required), ToastUtils.Duration.LONG); - - Map properties = new HashMap<>(); - properties.put("permission denied", permissions[i]); - AnalyticsTracker.track(AnalyticsTracker.Stat.ME_GRAVATAR_PERMISSIONS_DENIED, properties); + List granted = new ArrayList<>(); + List denied = new ArrayList<>(); - return; + for (int i = 0; i < grantResults.length; i++) { + if (grantResults[i] == PackageManager.PERMISSION_GRANTED) { + granted.add(permissions[i]); + } else { + denied.add(permissions[i]); } } - AnalyticsTracker.track(AnalyticsTracker.Stat.ME_GRAVATAR_PERMISSIONS_ACCEPTED); - - askForCameraOrGallery(); + if (denied.size() == 0) { + AnalyticsTracker.track(AnalyticsTracker.Stat.ME_GRAVATAR_PERMISSIONS_ACCEPTED); + askForCameraOrGallery(); + } else { + ToastUtils.showToast(this.getActivity(), getString(R.string + .gravatar_camera_and_media_permission_required), ToastUtils.Duration.LONG); + Map properties = new HashMap<>(); + properties.put("permissions granted", TextUtils.join(",", granted)); + properties.put("permissions denied", TextUtils.join(",", denied)); + AnalyticsTracker.track(AnalyticsTracker.Stat.ME_GRAVATAR_PERMISSIONS_DENIED, properties); + } } break; } From c1ebb4c0a282697ef0ac1313581cc6a0dfdde73a Mon Sep 17 00:00:00 2001 From: Stefanos Togkoulidis Date: Thu, 16 Jun 2016 14:48:41 +0300 Subject: [PATCH 4/5] Remove uneeded null check --- .../src/main/java/org/wordpress/android/ui/main/MeFragment.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WordPress/src/main/java/org/wordpress/android/ui/main/MeFragment.java b/WordPress/src/main/java/org/wordpress/android/ui/main/MeFragment.java index 918bc95489c3..dbe71477c325 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/main/MeFragment.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/main/MeFragment.java @@ -432,7 +432,7 @@ public void onRequestPermissionsResult(int requestCode, @NonNull String permissi grantResults) { switch (requestCode) { case CAMERA_AND_MEDIA_PERMISSION_REQUEST_CODE: - if (permissions == null || permissions.length == 0) { + if (permissions.length == 0) { AnalyticsTracker.track(AnalyticsTracker.Stat.ME_GRAVATAR_PERMISSIONS_INTERRUPTED); } else { List granted = new ArrayList<>(); From f5f27c00e90c844b53de23a72c92700a0d40b1ce Mon Sep 17 00:00:00 2001 From: Stefanos Togkoulidis Date: Thu, 16 Jun 2016 14:48:59 +0300 Subject: [PATCH 5/5] "none" instead of empty if granted list is empty --- .../main/java/org/wordpress/android/ui/main/MeFragment.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/WordPress/src/main/java/org/wordpress/android/ui/main/MeFragment.java b/WordPress/src/main/java/org/wordpress/android/ui/main/MeFragment.java index dbe71477c325..316cf2a3cc18 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/main/MeFragment.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/main/MeFragment.java @@ -453,7 +453,8 @@ public void onRequestPermissionsResult(int requestCode, @NonNull String permissi ToastUtils.showToast(this.getActivity(), getString(R.string .gravatar_camera_and_media_permission_required), ToastUtils.Duration.LONG); Map properties = new HashMap<>(); - properties.put("permissions granted", TextUtils.join(",", granted)); + properties.put("permissions granted", granted.size() == 0 ? "[none]" : TextUtils + .join(",", granted)); properties.put("permissions denied", TextUtils.join(",", denied)); AnalyticsTracker.track(AnalyticsTracker.Stat.ME_GRAVATAR_PERMISSIONS_DENIED, properties); }