{"action":"created","comment":{"url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/pulls/comments/145404848","pull_request_review_id":70198589,"id":145404848,"diff_hunk":"@@ -33,62 +36,161 @@\n     private final NotificationManager mNotificationManager;\n     private final Notification.Builder mNotificationBuilder;\n \n-    private static final SparseArray<NotificationData> sPostIdToNotificationData = new SparseArray<>();\n+    // error notifications will remain visible until the user discards or acts upon them,\n+    // so we need to be able to map them to the Post that failed\n+    private static final SparseArray<Integer> sPostIdToErrorNotificationId = new SparseArray<>();\n+\n+    // used to hold notification data for everything (only one outstanding foreground notification\n+    // for the live UploadService instance\n+    private static NotificationData sNotificationData;\n \n     private class NotificationData {\n         int notificationId;\n-        int notificationErrorId;\n         int totalMediaItems;\n         int currentMediaItem;\n-        float itemProgressSize;\n-        Bitmap latestIcon;\n+        int totalPostItems;\n+        int totalPageItemsIncludedInPostCount;\n+        int currentPostItem;\n     }\n \n     PostUploadNotifier(Context context, UploadService service) {\n         // Add the uploader to the notification bar\n         mContext = context;\n         mService = service;\n+        sNotificationData = new NotificationData();\n         mNotificationManager = (NotificationManager) SystemServiceFactory.get(mContext,\n                 Context.NOTIFICATION_SERVICE);\n         mNotificationBuilder = new Notification.Builder(mContext.getApplicationContext());\n         mNotificationBuilder.setSmallIcon(android.R.drawable.stat_sys_upload);\n     }\n \n-    void showForegroundNotificationForPost(@NonNull PostModel post, String message) {\n-        mNotificationBuilder.setContentTitle(buildNotificationTitleForPost(post));\n-        if (message != null) {\n-            mNotificationBuilder.setContentText(message);\n+    private void updateForegroundNotification(@Nullable PostModel post) {\n+        updateNotificationBuilder(post);\n+        doNotify(sNotificationData.notificationId, mNotificationBuilder.build());\n+    }\n+\n+    private void updateNotificationBuilder(@Nullable PostModel post) {\n+        // set the Notification's title and prepare the Notifications message text, i.e. \"1/3 Posts, 4/17 media items\"\n+        if (sNotificationData.totalMediaItems > 0 && sNotificationData.totalPostItems == 0) {\n+            // only media items are being uploaded\n+            // check if special case for ONE media item\n+            if (sNotificationData.totalMediaItems == 1) {\n+                mNotificationBuilder.setContentTitle(buildNotificationTitleForMedia());\n+                mNotificationBuilder.setContentText(buildNotificationSubtitleForMedia());\n+            } else {\n+                mNotificationBuilder.setContentTitle(buildNotificationTitleForMixedContent());\n+                mNotificationBuilder.setContentText(buildNotificationSubtitleForMedia());\n+            }\n+\n+        } else if (sNotificationData.totalMediaItems == 0 && sNotificationData.totalPostItems > 0) {\n+            // only Post / Pages are being uploaded\n+            // check if special case for ONE Post\n+            if (sNotificationData.totalPostItems == 1) {\n+                mNotificationBuilder.setContentTitle(buildNotificationTitleForPost(post));\n+                mNotificationBuilder.setContentText(buildNotificationSubtitleForPost(post));\n+            } else {\n+                mNotificationBuilder.setContentTitle(buildNotificationTitleForMixedContent());\n+                mNotificationBuilder.setContentText(buildNotificationSubtitleForPosts());\n+            }\n+        } else {\n+            // mixed content (Post/Pages and media) is being uploaded\n+            mNotificationBuilder.setContentTitle(buildNotificationTitleForMixedContent());\n+            mNotificationBuilder.setContentText(buildNotificationSubtitleForMixedContent());\n         }\n-        int notificationId = (new Random()).nextInt() + post.getLocalSiteId();\n+    }\n \n-        NotificationData notificationData = new NotificationData();\n-        notificationData.notificationId = notificationId;\n-        sPostIdToNotificationData.put(post.getId(), notificationData);\n-        mService.startForeground(notificationId, mNotificationBuilder.build());\n+    private synchronized void startOrUpdateForegroundNotification(@Nullable PostModel post) {\n+        updateNotificationBuilder(post);\n+        if (sNotificationData.notificationId == 0) {\n+            sNotificationData.notificationId = (new Random()).nextInt();\n+            mService.startForeground(sNotificationData.notificationId, mNotificationBuilder.build());\n+        } else {\n+            // service was already started, let's just modify the notification\n+            doNotify(sNotificationData.notificationId, mNotificationBuilder.build());\n+        }\n+    }\n+\n+    // Post could have initial media, or not (nulable)\n+    void addPostInfoToForegroundNotification(@NonNull PostModel post, @Nullable List<MediaModel> media) {\n+        sNotificationData.totalPostItems++;\n+        if (post.isPage()) {\n+            sNotificationData.totalPageItemsIncludedInPostCount++;\n+        }\n+        if (media != null) {\n+            addMediaInfoToForegroundNotification(media);\n+        }\n+        startOrUpdateForegroundNotification(post);\n+    }\n+\n+    void addMediaInfoToForegroundNotification(@NonNull List<MediaModel> media) {","path":"WordPress/src/main/java/org/wordpress/android/ui/uploads/PostUploadNotifier.java","position":null,"original_position":126,"commit_id":"faeb5a85617dff4fdaaa3d3d5e9c7750afac5cbc","original_commit_id":"c54e827f13f456592f27e12c076f63d5b51041e9","user":{"login":"mzorz","id":6597771,"avatar_url":"https://avatars0.githubusercontent.com/u/6597771?v=4","gravatar_id":"","url":"https://api.github.com/users/mzorz","html_url":"https://github.com/mzorz","followers_url":"https://api.github.com/users/mzorz/followers","following_url":"https://api.github.com/users/mzorz/following{/other_user}","gists_url":"https://api.github.com/users/mzorz/gists{/gist_id}","starred_url":"https://api.github.com/users/mzorz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mzorz/subscriptions","organizations_url":"https://api.github.com/users/mzorz/orgs","repos_url":"https://api.github.com/users/mzorz/repos","events_url":"https://api.github.com/users/mzorz/events{/privacy}","received_events_url":"https://api.github.com/users/mzorz/received_events","type":"User","site_admin":false},"body":"Sorry I forgot to mention this in the description - yeah it is intended so I remember for the PRs to come (that will be merged against this branch), that will actually either make use of these params or finally remove them 👍 ","created_at":"2017-10-18T12:56:30Z","updated_at":"2017-10-18T12:56:30Z","html_url":"https://github.com/wordpress-mobile/WordPress-Android/pull/6713#discussion_r145404848","pull_request_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/pulls/6713","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/pulls/comments/145404848"},"html":{"href":"https://github.com/wordpress-mobile/WordPress-Android/pull/6713#discussion_r145404848"},"pull_request":{"href":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/pulls/6713"}},"in_reply_to_id":145258939},"pull_request":{"url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/pulls/6713","id":146035874,"html_url":"https://github.com/wordpress-mobile/WordPress-Android/pull/6713","diff_url":"https://github.com/wordpress-mobile/WordPress-Android/pull/6713.diff","patch_url":"https://github.com/wordpress-mobile/WordPress-Android/pull/6713.patch","issue_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/issues/6713","number":6713,"state":"open","locked":false,"title":"UploadService foreground notification","user":{"login":"mzorz","id":6597771,"avatar_url":"https://avatars0.githubusercontent.com/u/6597771?v=4","gravatar_id":"","url":"https://api.github.com/users/mzorz","html_url":"https://github.com/mzorz","followers_url":"https://api.github.com/users/mzorz/followers","following_url":"https://api.github.com/users/mzorz/following{/other_user}","gists_url":"https://api.github.com/users/mzorz/gists{/gist_id}","starred_url":"https://api.github.com/users/mzorz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mzorz/subscriptions","organizations_url":"https://api.github.com/users/mzorz/orgs","repos_url":"https://api.github.com/users/mzorz/repos","events_url":"https://api.github.com/users/mzorz/events{/privacy}","received_events_url":"https://api.github.com/users/mzorz/received_events","type":"User","site_admin":false},"body":"Fixes #6389 (use one foreground notification for the UploadService) and #6546 (have a progress notification for media uploads triggered from the MediaBrowser)\r\n\r\n**IMPORTANT** don't merge until #6735 is complete:\r\nThis is the basis for all the things listed in https://github.com/wordpress-mobile/WordPress-Android/issues/6735 (Async media success / error notifications master thread) and all other branches will be merged into this one once this is reviewed.\r\n\r\n\r\n\r\n### TEST CASE A: single media upload within the Editor\r\n\r\n1. go to the Posts list and start a new draft\r\n2. open the media picker to include 1 media item\r\n3. see the foreground progress notification starts and remains there for as long as it takes for the media item to upload. If you drag the drawer down, you should see the Notification shows title “Uploading…” and subtext “Uploading 1/1 media item”.\r\n4. when the upload finishes, the notification should be gone.\r\n5. exit the editor\r\n6. see the foreground progress notification appears again to upload the draft post\r\n7. once the draft post is finished uploading, the foreground notification is dismissed automatically and a final, successful notification is shown, along with the snackbar. \r\n\r\n\r\n### TEST CASE B: multiple media upload within the Editor\r\n\r\n1. go to the Posts list and start a new draft\r\n2. open the media picker to include 2 media item (do this by using the long press functionality, which turns the media picker into the “multi-select” mode)\r\n3. see the foreground progress notification starts and remains there for as long as it takes for the media items to upload. If you drag the drawer down, you should see the Notification shows title “Uploading…” and subtext “Uploading 1/2 media items”.\r\n4. when the upload for both items finishes, the notification should be gone.\r\n5. exit the editor\r\n6. see the foreground progress notification appears again to upload the draft post\r\n7. once the draft post is finished uploading, the foreground notification is dismissed automatically and a final, successful notification is shown, along with the snackbar. \r\n\r\nYou can try this for 3, 4, 5, etc items as well.\r\n\r\n\r\n### TEST CASE C: single media upload, exiting the Editor\r\n\r\n1. go to the Posts list and start a new draft\r\n2. open the media picker to include 1 media item\r\n3. see the foreground progress notification starts and remains there for as long as it takes for the media item to upload. If you drag the drawer down, you should see the Notification shows title “Uploading…” and subtext “Uploading 1/1 media item”.\r\n4. while the upload is still happening (make sure to choose a large enough file), exit the editor.\r\n5. Observe the notification is still there, but now reads “Uploading 1/1 media item, 1/1 Post”.\r\n6. once the media item is finished uploading, see the foreground progress notification changes its text to “Uploading 1/1 Post”.\r\n7. once the draft post is finished uploading, the foreground notification is dismissed automatically and a final, successful notification is shown, along with the snackbar. \r\n\r\n### TEST CASE D: multiple media upload, exiting the Editor\r\n\r\n1. go to the Posts list and start a new draft\r\n2. open the media picker to include 2 media item (do this by using the long press functionality, which turns the media picker into the “multi-select” mode)\r\n3. see the foreground progress notification starts and remains there for as long as it takes for the media items to upload. If you drag the drawer down, you should see the Notification shows title “Uploading…” and subtext “Uploading 1/2 media items”.\r\n4. while the upload is still happening (make sure to choose 2 large enough files), exit the editor.\r\n5. Observe the notification is still there, but now reads “Uploading 1/2 media items, 1/1 Post”, and then successively to “Uploading 2/2 media items, 1/1 Post”.\r\n6. once the media items are finished uploading, see the foreground progress notification changes its text to “Uploading 1/1 Post”.\r\n7. once the draft post is finished uploading, the foreground notification is dismissed automatically and a final, successful notification is shown, along with the snackbar. \r\n\r\n\r\n\r\n### TEST CASE E: single media upload & error, within the Editor\r\n1. go to the Posts list and start a new draft\r\n2. open the media picker to include 1 media item\r\n3. see the foreground progress notification starts and remains there for as long as it takes for the media item to upload. If you drag the drawer down, you should see the Notification shows title “Uploading…” and subtext “Uploading 1/1 media item”.\r\n4. before the upload finishes, turn airplane mode ON.\r\n5. you should see the media item failed overlay and retry icon on the image, the foreground progress notification disappears, and an error notification appears (this last one remains there until user dismisses it).\r\n6. exit the editor\r\n7. the error notification should remain there, and the Posts list shows the error cause in red for the failed Post.\r\n\r\n\r\n### TEST CASE F: single media upload & error & recover, within the Editor\r\n1. go to the Posts list and start a new draft\r\n2. open the media picker to include 1 media item\r\n3. see the foreground progress notification starts and remains there for as long as it takes for the media item to upload. If you drag the drawer down, you should see the Notification shows title “Uploading…” and subtext “Uploading 1/1 media item”.\r\n4. before the upload finishes, turn airplane mode ON.\r\n5. you should see the media item failed overlay and retry icon on the image, the foreground progress notification disappears, and an error notification appears (this last one remains there until user dismisses it).\r\n6. turn airplane mode off\r\n7. tap on the image to retry\r\n8. the foreground notification should come up again, and read “Uploading 1/1 media item”.\r\n9. when the upload finishes, the notification should be gone.\r\n10. exit the editor\r\n11. see the foreground progress notification appears again to upload the draft post\r\n12. once the draft post is finished uploading, the foreground notification is dismissed automatically and a final, successful notification is shown, along with the snackbar. \r\n\r\n\r\n### TEST CASE G: single media upload & error & recover, outside the Editor\r\n1. go to the Posts list and start a new draft\r\n2. open the media picker to include 1 media item\r\n3. see the foreground progress notification starts and remains there for as long as it takes for the media item to upload. If you drag the drawer down, you should see the Notification shows title “Uploading…” and subtext “Uploading 1/1 media item”.\r\n4. exit the editor.\r\n5. you should see the progress notification there, and now it reads “Uploading 1/1 media item, 1/1 Post”.\r\n6. before the upload finishes, turn airplane mode ON.\r\n7. the progress notification should disappear, and instead an error notification is shown. Also, the Posts list shows the error in the corresponding Post item in the list, in red.\r\n8. tap on such Post to enter the Editor again. Also, dismiss the Error notification.\r\n9. you should see the media item failed overlay and retry icon on the image, the foreground progress notification disappears, and an error notification appears (this last one remains there until user dismisses it).\r\n10. turn airplane mode off\r\n11. tap on the image to retry\r\n12. the foreground notification should come up again, and read “Uploading 1/1 media item”.\r\n13. when the upload finishes, the notification should be gone.\r\n14. exit the editor\r\n15. see the foreground progress notification appears again to upload the draft post\r\n16. once the draft post is finished uploading, the foreground notification is dismissed automatically and a final, successful notification is shown, along with the snackbar. \r\n\r\n\r\n### TEST CASE H: multiple media upload & selective error & recover, outside the Editor (fully async)\r\nFor this one you’ll need to go through Charles proxy as I want to intentionally abort specific uploads.\r\n1. go to the Posts list and start a new draft\r\n2. open the media picker to include several media items\r\n3. see the foreground progress notification starts and remains there for as long as it takes for the media item to upload. If you drag the drawer down, you should see the Notification shows title “Uploading…” and subtext “Uploading 1/x media item”. (with x being the number of items you included in the Post)\r\n4. exit the editor.\r\n5. you should see the progress notification there, and now it reads “Uploading 1/x media item, 1/1 Post”.\r\n6. before the upload finishes, cancel one of the uploads. You can do so by setting a breakpoint in Charles for the endpoint `https://public-api.wordpress.com/rest/v1.1/sites/<site_id>/media/new/`\r\n7. an error notification is shown for that specific item, but the foreground progress notification should continue to show. It should read “Uploading 1/x media item, 1/1 Post”.\r\n8. wait until everything else finishes, and open the Editor on that Post again.\r\n9. you should see the media item failed overlay and retry icon on the image, the foreground progress notification disappears, and an error notification appears (this last one remains there until user dismisses it).\r\n10. tap on the image to retry\r\n11. the foreground notification should come up again, and read “Uploading 1/1 media item”.\r\n12. when the upload finishes, the notification should be gone.\r\n13. exit the editor\r\n14. see the foreground progress notification appears again to upload the draft post\r\n15. once the draft post is finished uploading, the foreground notification is dismissed automatically and a final, successful notification is shown, along with the snackbar. \r\n\r\n\r\n### TEST CASE I: media browser single media upload\r\n1. go to the Media Browser\r\n2. start an upload for a single item\r\n3. see the notification appears with text “Uploading…” “1/1 media item”, and a new placeholder with a spinner appears in the grid\r\n4. wait for it to complete\r\n5. the foreground notification disappears\r\n\r\n\r\n### TEST CASE J: media browser multiple media upload\r\n1. go to the Media Browser\r\n2. start an upload for several items\r\n3. see the notification appears with text “Uploading…” “1/x media item”, with x being the number of items chosen in step 2, and as many placeholders with a spinner appear in the grid\r\n4. as each one of them completes, see the text change as in “2/x media items”, “3/x media items”, etc.  and a successful notification is shown for each new item.\r\n5. once everything is completed, the foreground notification disappears\r\n\r\n\r\n### TEST CASE K: media browser multiple media upload & selective fail\r\nFor this one you’ll need to go through Charles proxy as I want to intentionally abort specific uploads.\r\n1. go to the Media Browser\r\n2. start an upload for several items\r\n3. see the notification appears with text “Uploading…” “1/x media item”, with x being the number of items chosen in step 2, and as many placeholders with a spinner appear in the grid\r\n4. for a specific one, abort the connection. You should see an error notification appear.\r\n5. as each one of the remaining ones completes, see the text change as in “2/x media items”, “3/x media items”, etc. No notifications are shown separately for each successfully uploaded item.\r\n6. once everything is completed, the foreground notification disappears\r\n\r\n\r\n","created_at":"2017-10-11T19:09:05Z","updated_at":"2017-10-18T12:56:30Z","closed_at":null,"merged_at":null,"merge_commit_sha":"158a270327b75762c96667d496cc2afe90d2898c","assignee":{"login":"nbradbury","id":3903757,"avatar_url":"https://avatars2.githubusercontent.com/u/3903757?v=4","gravatar_id":"","url":"https://api.github.com/users/nbradbury","html_url":"https://github.com/nbradbury","followers_url":"https://api.github.com/users/nbradbury/followers","following_url":"https://api.github.com/users/nbradbury/following{/other_user}","gists_url":"https://api.github.com/users/nbradbury/gists{/gist_id}","starred_url":"https://api.github.com/users/nbradbury/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nbradbury/subscriptions","organizations_url":"https://api.github.com/users/nbradbury/orgs","repos_url":"https://api.github.com/users/nbradbury/repos","events_url":"https://api.github.com/users/nbradbury/events{/privacy}","received_events_url":"https://api.github.com/users/nbradbury/received_events","type":"User","site_admin":false},"assignees":[{"login":"nbradbury","id":3903757,"avatar_url":"https://avatars2.githubusercontent.com/u/3903757?v=4","gravatar_id":"","url":"https://api.github.com/users/nbradbury","html_url":"https://github.com/nbradbury","followers_url":"https://api.github.com/users/nbradbury/followers","following_url":"https://api.github.com/users/nbradbury/following{/other_user}","gists_url":"https://api.github.com/users/nbradbury/gists{/gist_id}","starred_url":"https://api.github.com/users/nbradbury/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nbradbury/subscriptions","organizations_url":"https://api.github.com/users/nbradbury/orgs","repos_url":"https://api.github.com/users/nbradbury/repos","events_url":"https://api.github.com/users/nbradbury/events{/privacy}","received_events_url":"https://api.github.com/users/nbradbury/received_events","type":"User","site_admin":false}],"requested_reviewers":[],"milestone":null,"commits_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/pulls/6713/commits","review_comments_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/pulls/6713/comments","review_comment_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/pulls/comments{/number}","comments_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/issues/6713/comments","statuses_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/statuses/faeb5a85617dff4fdaaa3d3d5e9c7750afac5cbc","head":{"label":"wordpress-mobile:issue/6389-upload-service-notification","ref":"issue/6389-upload-service-notification","sha":"faeb5a85617dff4fdaaa3d3d5e9c7750afac5cbc","user":{"login":"wordpress-mobile","id":1306301,"avatar_url":"https://avatars2.githubusercontent.com/u/1306301?v=4","gravatar_id":"","url":"https://api.github.com/users/wordpress-mobile","html_url":"https://github.com/wordpress-mobile","followers_url":"https://api.github.com/users/wordpress-mobile/followers","following_url":"https://api.github.com/users/wordpress-mobile/following{/other_user}","gists_url":"https://api.github.com/users/wordpress-mobile/gists{/gist_id}","starred_url":"https://api.github.com/users/wordpress-mobile/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wordpress-mobile/subscriptions","organizations_url":"https://api.github.com/users/wordpress-mobile/orgs","repos_url":"https://api.github.com/users/wordpress-mobile/repos","events_url":"https://api.github.com/users/wordpress-mobile/events{/privacy}","received_events_url":"https://api.github.com/users/wordpress-mobile/received_events","type":"Organization","site_admin":false},"repo":{"id":9306568,"name":"WordPress-Android","full_name":"wordpress-mobile/WordPress-Android","owner":{"login":"wordpress-mobile","id":1306301,"avatar_url":"https://avatars2.githubusercontent.com/u/1306301?v=4","gravatar_id":"","url":"https://api.github.com/users/wordpress-mobile","html_url":"https://github.com/wordpress-mobile","followers_url":"https://api.github.com/users/wordpress-mobile/followers","following_url":"https://api.github.com/users/wordpress-mobile/following{/other_user}","gists_url":"https://api.github.com/users/wordpress-mobile/gists{/gist_id}","starred_url":"https://api.github.com/users/wordpress-mobile/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wordpress-mobile/subscriptions","organizations_url":"https://api.github.com/users/wordpress-mobile/orgs","repos_url":"https://api.github.com/users/wordpress-mobile/repos","events_url":"https://api.github.com/users/wordpress-mobile/events{/privacy}","received_events_url":"https://api.github.com/users/wordpress-mobile/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/wordpress-mobile/WordPress-Android","description":"WordPress for Android","fork":false,"url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android","forks_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/forks","keys_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/keys{/key_id}","collaborators_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/teams","hooks_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/hooks","issue_events_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/issues/events{/number}","events_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/events","assignees_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/assignees{/user}","branches_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/branches{/branch}","tags_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/tags","blobs_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/git/refs{/sha}","trees_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/git/trees{/sha}","statuses_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/statuses/{sha}","languages_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/languages","stargazers_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/stargazers","contributors_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/contributors","subscribers_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/subscribers","subscription_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/subscription","commits_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/commits{/sha}","git_commits_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/git/commits{/sha}","comments_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/comments{/number}","issue_comment_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/issues/comments{/number}","contents_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/contents/{+path}","compare_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/compare/{base}...{head}","merges_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/merges","archive_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/downloads","issues_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/issues{/number}","pulls_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/pulls{/number}","milestones_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/milestones{/number}","notifications_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/labels{/name}","releases_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/releases{/id}","deployments_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/deployments","created_at":"2013-04-08T20:52:40Z","updated_at":"2017-10-16T04:51:03Z","pushed_at":"2017-10-18T12:54:45Z","git_url":"git://github.com/wordpress-mobile/WordPress-Android.git","ssh_url":"git@github.com:wordpress-mobile/WordPress-Android.git","clone_url":"https://github.com/wordpress-mobile/WordPress-Android.git","svn_url":"https://github.com/wordpress-mobile/WordPress-Android","homepage":"http://android.wordpress.org","size":180651,"stargazers_count":1547,"watchers_count":1547,"language":"Java","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":true,"forks_count":846,"mirror_url":null,"open_issues_count":340,"forks":846,"open_issues":340,"watchers":1547,"default_branch":"develop"}},"base":{"label":"wordpress-mobile:develop","ref":"develop","sha":"cbbc14ec84ae2edaac9c0efe24618dc673d2805b","user":{"login":"wordpress-mobile","id":1306301,"avatar_url":"https://avatars2.githubusercontent.com/u/1306301?v=4","gravatar_id":"","url":"https://api.github.com/users/wordpress-mobile","html_url":"https://github.com/wordpress-mobile","followers_url":"https://api.github.com/users/wordpress-mobile/followers","following_url":"https://api.github.com/users/wordpress-mobile/following{/other_user}","gists_url":"https://api.github.com/users/wordpress-mobile/gists{/gist_id}","starred_url":"https://api.github.com/users/wordpress-mobile/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wordpress-mobile/subscriptions","organizations_url":"https://api.github.com/users/wordpress-mobile/orgs","repos_url":"https://api.github.com/users/wordpress-mobile/repos","events_url":"https://api.github.com/users/wordpress-mobile/events{/privacy}","received_events_url":"https://api.github.com/users/wordpress-mobile/received_events","type":"Organization","site_admin":false},"repo":{"id":9306568,"name":"WordPress-Android","full_name":"wordpress-mobile/WordPress-Android","owner":{"login":"wordpress-mobile","id":1306301,"avatar_url":"https://avatars2.githubusercontent.com/u/1306301?v=4","gravatar_id":"","url":"https://api.github.com/users/wordpress-mobile","html_url":"https://github.com/wordpress-mobile","followers_url":"https://api.github.com/users/wordpress-mobile/followers","following_url":"https://api.github.com/users/wordpress-mobile/following{/other_user}","gists_url":"https://api.github.com/users/wordpress-mobile/gists{/gist_id}","starred_url":"https://api.github.com/users/wordpress-mobile/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wordpress-mobile/subscriptions","organizations_url":"https://api.github.com/users/wordpress-mobile/orgs","repos_url":"https://api.github.com/users/wordpress-mobile/repos","events_url":"https://api.github.com/users/wordpress-mobile/events{/privacy}","received_events_url":"https://api.github.com/users/wordpress-mobile/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/wordpress-mobile/WordPress-Android","description":"WordPress for Android","fork":false,"url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android","forks_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/forks","keys_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/keys{/key_id}","collaborators_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/teams","hooks_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/hooks","issue_events_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/issues/events{/number}","events_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/events","assignees_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/assignees{/user}","branches_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/branches{/branch}","tags_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/tags","blobs_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/git/refs{/sha}","trees_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/git/trees{/sha}","statuses_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/statuses/{sha}","languages_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/languages","stargazers_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/stargazers","contributors_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/contributors","subscribers_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/subscribers","subscription_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/subscription","commits_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/commits{/sha}","git_commits_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/git/commits{/sha}","comments_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/comments{/number}","issue_comment_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/issues/comments{/number}","contents_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/contents/{+path}","compare_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/compare/{base}...{head}","merges_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/merges","archive_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/downloads","issues_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/issues{/number}","pulls_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/pulls{/number}","milestones_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/milestones{/number}","notifications_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/labels{/name}","releases_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/releases{/id}","deployments_url":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/deployments","created_at":"2013-04-08T20:52:40Z","updated_at":"2017-10-16T04:51:03Z","pushed_at":"2017-10-18T12:54:45Z","git_url":"git://github.com/wordpress-mobile/WordPress-Android.git","ssh_url":"git@github.com:wordpress-mobile/WordPress-Android.git","clone_url":"https://github.com/wordpress-mobile/WordPress-Android.git","svn_url":"https://github.com/wordpress-mobile/WordPress-Android","homepage":"http://android.wordpress.org","size":180651,"stargazers_count":1547,"watchers_count":1547,"language":"Java","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":true,"forks_count":846,"mirror_url":null,"open_issues_count":340,"forks":846,"open_issues":340,"watchers":1547,"default_branch":"develop"}},"_links":{"self":{"href":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/pulls/6713"},"html":{"href":"https://github.com/wordpress-mobile/WordPress-Android/pull/6713"},"issue":{"href":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/issues/6713"},"comments":{"href":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/issues/6713/comments"},"review_comments":{"href":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/pulls/6713/comments"},"review_comment":{"href":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/pulls/6713/commits"},"statuses":{"href":"https://api.github.com/repos/wordpress-mobile/WordPress-Android/statuses/faeb5a85617dff4fdaaa3d3d5e9c7750afac5cbc"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"mzorz"}}