Skip to content

Commit c37552f

Browse files
committed
Move Tracks anonID related methods to a common class.
1 parent 9f4f4f3 commit c37552f

File tree

4 files changed

+85
-52
lines changed

4 files changed

+85
-52
lines changed

WordPressAnalytics/src/main/java/org/wordpress/android/analytics/AnalyticsTracker.java

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,12 @@
44
import android.content.SharedPreferences;
55
import android.preference.PreferenceManager;
66

7+
import org.wordpress.android.util.AppLog;
8+
79
import java.util.ArrayList;
810
import java.util.List;
911
import java.util.Map;
12+
import java.util.UUID;
1013

1114
public final class AnalyticsTracker {
1215
private static boolean mHasUserOptedOut;
@@ -106,16 +109,6 @@ public enum Stat {
106109
NOTIFICATION_SETTINGS_UPDATED,
107110
}
108111

109-
public interface Tracker {
110-
void track(Stat stat);
111-
void track(Stat stat, Map<String, ?> properties);
112-
void endSession();
113-
void refreshMetadata(boolean isUserConnected,boolean isWordPressComUser, boolean isJetpackUser,
114-
int sessionCount, int numBlogs, int versionCode, String username, String email);
115-
void clearAllData();
116-
void registerPushNotificationToken(String regId);
117-
}
118-
119112
private static final List<Tracker> TRACKERS = new ArrayList<Tracker>();
120113

121114
private AnalyticsTracker() {

WordPressAnalytics/src/main/java/org/wordpress/android/analytics/AnalyticsTrackerMixpanel.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,9 @@
1919
import java.util.Iterator;
2020
import java.util.Map;
2121

22-
public class AnalyticsTrackerMixpanel implements AnalyticsTracker.Tracker {
22+
public class AnalyticsTrackerMixpanel extends Tracker {
2323
public static final String SESSION_COUNT = "sessionCount";
2424

25-
private Context mContext;
2625
private MixpanelAPI mMixpanel;
2726
private EnumMap<AnalyticsTracker.Stat, JSONObject> mAggregatedProperties;
2827
private static final String MIXPANEL_PLATFORM = "platform";
@@ -32,11 +31,12 @@ public class AnalyticsTrackerMixpanel implements AnalyticsTracker.Tracker {
3231
private static final String MIXPANEL_NUMBER_OF_BLOGS = "number_of_blogs";
3332
private static final String VERSION_CODE = "version_code";
3433
private static final String APP_LOCALE = "app_locale";
34+
private static final String MIXPANEL_ANON_ID = "mixpanel_user_anon_id";
3535

3636
public AnalyticsTrackerMixpanel(Context context, String token) {
37+
super(context);
3738
mAggregatedProperties = new EnumMap<AnalyticsTracker.Stat, JSONObject>(AnalyticsTracker.Stat.class);
3839
mMixpanel = MixpanelAPI.getInstance(context, token);
39-
mContext = context;
4040
}
4141

4242
@SuppressWarnings("deprecation")
@@ -57,6 +57,10 @@ public static void showNotification(Context context, PendingIntent intent, int n
5757
nm.notify(0, notification);
5858
}
5959

60+
String getAnonIdPrefKey() {
61+
return MIXPANEL_ANON_ID;
62+
}
63+
6064
@Override
6165
public void track(AnalyticsTracker.Stat stat) {
6266
track(stat, null);

WordPressAnalytics/src/main/java/org/wordpress/android/analytics/AnalyticsTrackerNosara.java

Lines changed: 6 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
import java.util.Map;
1515
import java.util.UUID;
1616

17-
public class AnalyticsTrackerNosara implements AnalyticsTracker.Tracker {
17+
public class AnalyticsTrackerNosara extends Tracker {
1818

1919
private static final String JETPACK_USER = "jetpack_user";
2020
private static final String NUMBER_OF_BLOGS = "number_of_blogs";
@@ -23,20 +23,21 @@ public class AnalyticsTrackerNosara implements AnalyticsTracker.Tracker {
2323
private static final String EVENTS_PREFIX = "wpandroid_";
2424

2525
private String mWpcomUserName = null;
26-
private String mAnonID = null; // do not access this variable directly. Use methods.
27-
2826
private TracksClient mNosaraClient;
29-
private Context mContext;
3027

3128
public AnalyticsTrackerNosara(Context context) {
29+
super(context);
3230
if (null == context) {
3331
mNosaraClient = null;
3432
return;
3533
}
36-
mContext = context;
3734
mNosaraClient = TracksClient.getClient(context);
3835
}
3936

37+
String getAnonIdPrefKey() {
38+
return TRACKS_ANON_ID;
39+
}
40+
4041
@Override
4142
public void track(AnalyticsTracker.Stat stat) {
4243
track(stat, null);
@@ -391,41 +392,7 @@ public void track(AnalyticsTracker.Stat stat, Map<String, ?> properties) {
391392
}
392393
}
393394

394-
private void clearAnonID() {
395-
mAnonID = null;
396-
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(mContext);
397-
if (preferences.contains(TRACKS_ANON_ID)) {
398-
final SharedPreferences.Editor editor = preferences.edit();
399-
editor.remove(TRACKS_ANON_ID);
400-
editor.commit();
401-
}
402-
}
403395

404-
private String getAnonID() {
405-
if (mAnonID == null) {
406-
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(mContext);
407-
mAnonID = preferences.getString(TRACKS_ANON_ID, null);
408-
}
409-
return mAnonID;
410-
}
411-
412-
private String generateNewAnonID() {
413-
String uuid = UUID.randomUUID().toString();
414-
String[] uuidSplitted = uuid.split("-");
415-
StringBuilder builder = new StringBuilder();
416-
for (String currentPart : uuidSplitted) {
417-
builder.append(currentPart);
418-
}
419-
uuid = builder.toString();
420-
AppLog.d(AppLog.T.STATS, "New anon ID generated: " + uuid);
421-
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(mContext);
422-
final SharedPreferences.Editor editor = preferences.edit();
423-
editor.putString(TRACKS_ANON_ID, uuid);
424-
editor.commit();
425-
426-
mAnonID = uuid;
427-
return uuid;
428-
}
429396

430397
@Override
431398
public void endSession() {
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
package org.wordpress.android.analytics;
2+
3+
import android.content.Context;
4+
import android.content.SharedPreferences;
5+
import android.preference.PreferenceManager;
6+
7+
import java.util.Map;
8+
import java.util.UUID;
9+
10+
import org.wordpress.android.analytics.AnalyticsTracker.Stat;
11+
import org.wordpress.android.util.AppLog;
12+
13+
public abstract class Tracker {
14+
abstract void track(Stat stat);
15+
abstract void track(Stat stat, Map<String, ?> properties);
16+
abstract void endSession();
17+
abstract void refreshMetadata(boolean isUserConnected,boolean isWordPressComUser, boolean isJetpackUser,
18+
int sessionCount, int numBlogs, int versionCode, String username, String email);
19+
abstract void clearAllData();
20+
abstract void registerPushNotificationToken(String regId);
21+
abstract String getAnonIdPrefKey();
22+
23+
private String mAnonID = null; // do not access this variable directly. Use methods.
24+
Context mContext;
25+
26+
public Tracker(Context context) {
27+
if (null == context) {
28+
return;
29+
}
30+
mContext = context;
31+
}
32+
33+
void clearAnonID() {
34+
mAnonID = null;
35+
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(mContext);
36+
if (preferences.contains(getAnonIdPrefKey())) {
37+
final SharedPreferences.Editor editor = preferences.edit();
38+
editor.remove(getAnonIdPrefKey());
39+
editor.commit();
40+
}
41+
}
42+
43+
String getAnonID() {
44+
if (mAnonID == null) {
45+
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(mContext);
46+
mAnonID = preferences.getString(getAnonIdPrefKey(), null);
47+
}
48+
return mAnonID;
49+
}
50+
51+
String generateNewAnonID() {
52+
String uuid = UUID.randomUUID().toString();
53+
String[] uuidSplitted = uuid.split("-");
54+
StringBuilder builder = new StringBuilder();
55+
for (String currentPart : uuidSplitted) {
56+
builder.append(currentPart);
57+
}
58+
uuid = builder.toString();
59+
AppLog.d(AppLog.T.STATS, "New anon ID generated: " + uuid);
60+
61+
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(mContext);
62+
final SharedPreferences.Editor editor = preferences.edit();
63+
editor.putString(getAnonIdPrefKey(), uuid);
64+
editor.commit();
65+
66+
mAnonID = uuid;
67+
return uuid;
68+
}
69+
}

0 commit comments

Comments
 (0)