Skip to content

Commit a88901e

Browse files
authored
Merge pull request #5495 from wordpress-mobile/issue/add-analytics-to-media-service
Add Analytics to MediaUploadService
2 parents 6e0bf8c + a9cf8c2 commit a88901e

File tree

4 files changed

+55
-0
lines changed

4 files changed

+55
-0
lines changed

WordPress/src/main/java/org/wordpress/android/ui/media/services/MediaUploadService.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import org.greenrobot.eventbus.Subscribe;
1010
import org.greenrobot.eventbus.ThreadMode;
1111
import org.wordpress.android.WordPress;
12+
import org.wordpress.android.analytics.AnalyticsTracker;
1213
import org.wordpress.android.fluxc.Dispatcher;
1314
import org.wordpress.android.fluxc.generated.MediaActionBuilder;
1415
import org.wordpress.android.fluxc.model.MediaModel;
@@ -18,11 +19,14 @@
1819
import org.wordpress.android.fluxc.store.MediaStore.MediaPayload;
1920
import org.wordpress.android.fluxc.store.MediaStore.OnMediaUploaded;
2021
import org.wordpress.android.models.MediaUploadState;
22+
import org.wordpress.android.util.AnalyticsUtils;
2123
import org.wordpress.android.util.AppLog;
2224
import org.wordpress.android.util.StringUtils;
2325

2426
import java.util.ArrayList;
27+
import java.util.HashMap;
2528
import java.util.List;
29+
import java.util.Map;
2630

2731
import javax.inject.Inject;
2832

@@ -111,11 +115,13 @@ private void handleOnMediaUploadedSuccess(@NonNull OnMediaUploaded event) {
111115
if (event.canceled) {
112116
// Upload canceled
113117
AppLog.i(AppLog.T.MEDIA, "Upload successfully canceled.");
118+
trackUploadMediaEvents(AnalyticsTracker.Stat.MEDIA_UPLOAD_CANCELED, mCurrentUpload, null);
114119
completeCurrentUpload();
115120
uploadNextInQueue();
116121
} else if (event.completed) {
117122
// Upload completed
118123
AppLog.i(AppLog.T.MEDIA, "Upload completed - localId=" + event.media.getId() + " title=" + event.media.getTitle());
124+
trackUploadMediaEvents(AnalyticsTracker.Stat.MEDIA_UPLOAD_SUCCESS, mCurrentUpload, null);
119125
mCurrentUpload.setMediaId(event.media.getMediaId());
120126
completeCurrentUpload();
121127
uploadNextInQueue();
@@ -134,6 +140,9 @@ private void handleOnMediaUploadedError(@NonNull OnMediaUploaded event) {
134140
completeCurrentUpload();
135141
// TODO: check whether we need to broadcast the error or maybe it is enough to register for FluxC events
136142
// event.media, event.error
143+
Map<String, Object> properties = new HashMap<>();
144+
properties.put("error_type", event.error.type.name());
145+
trackUploadMediaEvents(AnalyticsTracker.Stat.MEDIA_UPLOAD_ERROR, mCurrentUpload, properties);
137146
uploadNextInQueue();
138147
}
139148

@@ -160,6 +169,7 @@ private void uploadNextInQueue() {
160169
}
161170

162171
dispatchUploadAction(mCurrentUpload);
172+
trackUploadMediaEvents(AnalyticsTracker.Stat.MEDIA_UPLOAD_STARTED, mCurrentUpload, null);
163173
}
164174

165175
private void completeCurrentUpload() {
@@ -272,4 +282,21 @@ public void onMediaUploaded(OnMediaUploaded event) {
272282
handleOnMediaUploadedSuccess(event);
273283
}
274284
}
285+
286+
/**
287+
* Analytics about media being uploaded
288+
*
289+
* @param media The media being uploaded
290+
*/
291+
private void trackUploadMediaEvents(AnalyticsTracker.Stat stat, MediaModel media, Map<String, Object> properties) {
292+
if (media == null) {
293+
AppLog.e(AppLog.T.MEDIA, "Cannot track media upload service events if the original media is null!!");
294+
return;
295+
}
296+
Map<String, Object> mediaProperties = AnalyticsUtils.getMediaProperties(this, media.isVideo(), null, media.getFilePath());
297+
if (properties != null) {
298+
mediaProperties.putAll(properties);
299+
}
300+
AnalyticsTracker.track(stat, mediaProperties);
301+
}
275302
}

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,10 @@ public enum Stat {
229229
DEEP_LINKED,
230230
DEEP_LINKED_FALLBACK,
231231
DEEP_LINK_NOT_DEFAULT_HANDLER,
232+
MEDIA_UPLOAD_STARTED,
233+
MEDIA_UPLOAD_ERROR,
234+
MEDIA_UPLOAD_SUCCESS,
235+
MEDIA_UPLOAD_CANCELED,
232236
}
233237

234238
private static final List<Tracker> TRACKERS = new ArrayList<>();

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

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1274,6 +1274,22 @@ private AnalyticsTrackerMixpanelInstructionsForStat instructionsForStat(
12741274
instructions = AnalyticsTrackerMixpanelInstructionsForStat.
12751275
mixpanelInstructionsForEventName("Media Library - Added Video");
12761276
break;
1277+
case MEDIA_UPLOAD_STARTED:
1278+
instructions = AnalyticsTrackerMixpanelInstructionsForStat.
1279+
mixpanelInstructionsForEventName("Media Service - Upload Started");
1280+
break;
1281+
case MEDIA_UPLOAD_ERROR:
1282+
instructions = AnalyticsTrackerMixpanelInstructionsForStat.
1283+
mixpanelInstructionsForEventName("Media Service - Upload Error");
1284+
break;
1285+
case MEDIA_UPLOAD_SUCCESS:
1286+
instructions = AnalyticsTrackerMixpanelInstructionsForStat.
1287+
mixpanelInstructionsForEventName("Media Service - Response OK");
1288+
break;
1289+
case MEDIA_UPLOAD_CANCELED:
1290+
instructions = AnalyticsTrackerMixpanelInstructionsForStat.
1291+
mixpanelInstructionsForEventName("Media Service - Upload Canceled");
1292+
break;
12771293
default:
12781294
instructions = null;
12791295
break;

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -660,6 +660,14 @@ public static String getEventNameForStat(AnalyticsTracker.Stat stat) {
660660
return "media_library_photo_added";
661661
case MEDIA_LIBRARY_ADDED_VIDEO:
662662
return "media_library_video_added";
663+
case MEDIA_UPLOAD_STARTED:
664+
return "media_service_upload_started";
665+
case MEDIA_UPLOAD_ERROR:
666+
return "media_service_upload_response_error";
667+
case MEDIA_UPLOAD_SUCCESS:
668+
return "media_service_upload_response_ok";
669+
case MEDIA_UPLOAD_CANCELED:
670+
return "media_service_upload_canceled";
663671
default:
664672
return null;
665673
}

0 commit comments

Comments
 (0)