{"action":"created","comment":{"url":"https://api.github.com/repos/Automattic/wp-calypso/pulls/comments/229321432","pull_request_review_id":169789037,"id":229321432,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIyOTMyMTQzMg==","diff_hunk":"@@ -0,0 +1,487 @@\n+/** @format */\n+/**\n+ * External dependencies\n+ */\n+import page from 'page';\n+import PropTypes from 'prop-types';\n+import React, { PureComponent } from 'react';\n+import { connect } from 'react-redux';\n+import { compact, find, get, some } from 'lodash';\n+import { isDesktop } from 'lib/viewport';\n+import { localize } from 'i18n-calypso';\n+\n+/**\n+ * Internal dependencies\n+ */\n+import WpcomTaskList from './wpcom-task-list';\n+import Checklist from 'components/checklist';\n+import ChecklistBanner from './checklist-banner';\n+import ChecklistBannerTask from './checklist-banner/task';\n+import ChecklistNavigation from './checklist-navigation';\n+import ChecklistNotification from './checklist-notification';\n+import getSiteChecklist from 'state/selectors/get-site-checklist';\n+import isEligibleForDotcomChecklist from 'state/selectors/is-eligible-for-dotcom-checklist';\n+import QueryPosts from 'components/data/query-posts';\n+import QuerySiteChecklist from 'components/data/query-site-checklist';\n+import Task from 'components/checklist/task';\n+import { createNotice } from 'state/notices/actions';\n+import { getPostsForQuery } from 'state/posts/selectors';\n+import { getSelectedSiteId, isSiteSection } from 'state/ui/selectors';\n+import { getSiteOption, getSiteSlug } from 'state/sites/selectors';\n+import { recordTracksEvent } from 'state/analytics/actions';\n+import { requestGuidedTour } from 'state/ui/guided-tours/actions';\n+import { requestSiteChecklistTaskUpdate } from 'state/checklist/actions';\n+import { getCurrentUser, isCurrentUserEmailVerified } from 'state/current-user/selectors';\n+import userFactory from 'lib/user';\n+\n+const userLib = userFactory();\n+\n+const query = { type: 'any', number: 10, order_by: 'ID', order: 'ASC' };\n+\n+class WpcomChecklist extends PureComponent {\n+\tstatic propTypes = {\n+\t\tcreateNotice: PropTypes.func.isRequired,\n+\t\tdesignType: PropTypes.oneOf( [ 'blog', 'page', 'portfolio' ] ),\n+\t\trecordTracksEvent: PropTypes.func.isRequired,\n+\t\trequestGuidedTour: PropTypes.func.isRequired,\n+\t\trequestSiteChecklistTaskUpdate: PropTypes.func.isRequired,\n+\t\tsiteId: PropTypes.number,\n+\t\tsiteSlug: PropTypes.string,\n+\t\ttaskStatuses: PropTypes.object,\n+\t\tviewMode: PropTypes.oneOf( [ 'checklist', 'banner', 'navigation', 'notification' ] ),\n+\t};\n+\n+\tstatic defaultProps = {\n+\t\tviewMode: 'checklist',\n+\t};\n+\n+\tstate = {\n+\t\tpendingRequest: false,\n+\t\temailSent: false,\n+\t\terror: null,\n+\t};\n+\n+\tcanShow = () => {\n+\t\tif ( ! this.props.isEligibleForDotcomChecklist || ! this.props.isSiteSection ) {\n+\t\t\treturn false;\n+\t\t}\n+\n+\t\treturn true;\n+\t};\n+\n+\thandleTaskStart = ( { task, tourId, url } ) => () => {\n+\t\tif ( ! tourId && ! url ) {\n+\t\t\treturn;\n+\t\t}\n+\n+\t\tconst location = 'banner' === this.props.viewMode ? 'checklist_banner' : 'checklist_show';\n+\n+\t\tthis.props.recordTracksEvent( 'calypso_checklist_task_start', {\n+\t\t\tchecklist_name: 'new_blog',\n+\t\t\tlocation,\n+\t\t\tstep_name: task.id,\n+\t\t} );\n+\n+\t\tif ( tourId && ! task.isCompleted && isDesktop() ) {\n+\t\t\tthis.props.requestGuidedTour( tourId );\n+\t\t}\n+\n+\t\tif ( url ) {\n+\t\t\tpage.show( url );\n+\t\t}\n+\t};\n+\n+\thandleTaskDismiss = taskId => () => {\n+\t\tconst { siteId } = this.props;\n+\n+\t\tif ( taskId ) {\n+\t\t\tthis.props.createNotice( 'is-success', 'You completed a task!' );\n+\t\t\tthis.props.requestSiteChecklistTaskUpdate( siteId, taskId );\n+\t\t}\n+\t};\n+\n+\thandleSendVerificationEmail = e => {\n+\t\te.preventDefault();\n+\n+\t\tif ( this.state.pendingRequest ) {\n+\t\t\treturn;\n+\t\t}\n+\n+\t\tthis.setState( {\n+\t\t\tpendingRequest: true,\n+\t\t} );\n+\n+\t\tuserLib.sendVerificationEmail( ( error, response ) => {\n+\t\t\tthis.setState( {\n+\t\t\t\temailSent: response && response.success,\n+\t\t\t\terror: error,\n+\t\t\t\tpendingRequest: false,\n+\t\t\t} );\n+\t\t} );\n+\t};\n+\n+\tverificationTaskButtonText() {\n+\t\tconst { translate } = this.props;\n+\t\tif ( this.state.pendingRequest ) {\n+\t\t\treturn translate( 'Sending…' );\n+\t\t}\n+\n+\t\tif ( this.state.error ) {\n+\t\t\treturn translate( 'Error' );\n+\t\t}\n+\n+\t\tif ( this.state.emailSent ) {\n+\t\t\treturn translate( 'Email sent' );\n+\t\t}\n+\n+\t\treturn translate( 'Resend email' );\n+\t}\n+\n+\trender() {\n+\t\tconst {\n+\t\t\tdesignType,\n+\t\t\tsiteId,\n+\t\t\ttaskStatuses,\n+\t\t\tviewMode,\n+\t\t\tupdateCompletion,\n+\t\t\tsetNotification,\n+\t\t\tsetStoredTask,\n+\t\t\tclosePopover,\n+\t\t\tshowNotification,\n+\t\t\tstoredTask,\n+\t\t} = this.props;\n+\n+\t\tconst canShowChecklist = this.canShow();\n+\t\tconst taskList = new WpcomTaskList( taskStatuses, { designType } );","path":"client/my-sites/checklist/wpcom-checklist/index.jsx","position":155,"original_position":155,"commit_id":"74a9606185c50cee007e6b4be1091bc7637fbcbf","original_commit_id":"74a9606185c50cee007e6b4be1091bc7637fbcbf","user":{"login":"jsnajdr","id":664258,"node_id":"MDQ6VXNlcjY2NDI1OA==","avatar_url":"https://avatars3.githubusercontent.com/u/664258?v=4","gravatar_id":"","url":"https://api.github.com/users/jsnajdr","html_url":"https://github.com/jsnajdr","followers_url":"https://api.github.com/users/jsnajdr/followers","following_url":"https://api.github.com/users/jsnajdr/following{/other_user}","gists_url":"https://api.github.com/users/jsnajdr/gists{/gist_id}","starred_url":"https://api.github.com/users/jsnajdr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jsnajdr/subscriptions","organizations_url":"https://api.github.com/users/jsnajdr/orgs","repos_url":"https://api.github.com/users/jsnajdr/repos","events_url":"https://api.github.com/users/jsnajdr/events{/privacy}","received_events_url":"https://api.github.com/users/jsnajdr/received_events","type":"User","site_admin":false},"body":"Here we create a new instance on every rerender. Doesn't it cause some unwanted rerenders?","created_at":"2018-10-30T14:10:59Z","updated_at":"2018-10-30T14:13:30Z","html_url":"https://github.com/Automattic/wp-calypso/pull/28057#discussion_r229321432","pull_request_url":"https://api.github.com/repos/Automattic/wp-calypso/pulls/28057","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/Automattic/wp-calypso/pulls/comments/229321432"},"html":{"href":"https://github.com/Automattic/wp-calypso/pull/28057#discussion_r229321432"},"pull_request":{"href":"https://api.github.com/repos/Automattic/wp-calypso/pulls/28057"}}},"pull_request":{"url":"https://api.github.com/repos/Automattic/wp-calypso/pulls/28057","id":225481466,"node_id":"MDExOlB1bGxSZXF1ZXN0MjI1NDgxNDY2","html_url":"https://github.com/Automattic/wp-calypso/pull/28057","diff_url":"https://github.com/Automattic/wp-calypso/pull/28057.diff","patch_url":"https://github.com/Automattic/wp-calypso/pull/28057.patch","issue_url":"https://api.github.com/repos/Automattic/wp-calypso/issues/28057","number":28057,"state":"open","locked":false,"title":"Move task list logic outside of `WpcomChecklist` render tree","user":{"login":"sgomes","id":409615,"node_id":"MDQ6VXNlcjQwOTYxNQ==","avatar_url":"https://avatars1.githubusercontent.com/u/409615?v=4","gravatar_id":"","url":"https://api.github.com/users/sgomes","html_url":"https://github.com/sgomes","followers_url":"https://api.github.com/users/sgomes/followers","following_url":"https://api.github.com/users/sgomes/following{/other_user}","gists_url":"https://api.github.com/users/sgomes/gists{/gist_id}","starred_url":"https://api.github.com/users/sgomes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sgomes/subscriptions","organizations_url":"https://api.github.com/users/sgomes/orgs","repos_url":"https://api.github.com/users/sgomes/repos","events_url":"https://api.github.com/users/sgomes/events{/privacy}","received_events_url":"https://api.github.com/users/sgomes/received_events","type":"User","site_admin":false},"body":"#### Changes proposed in this Pull Request\r\n\r\n* Normalize file extensions in `WpcomChecklist` and friends. Using `.jsx` for files including JSX and `.js` for files containing plain JS.\r\n* Replace unnecessary `lodash` method usage with native methods.\r\n* Move task list logic outside of `WpcomChecklist` render tree.\r\n\r\nEach of these changes is presented as a separate commit, and it will likely be easier to look at each commit individually.\r\n\r\nThe last change is the main one in this PR, and is intended as an architectural revision that improves decoupling between rendering and logic.\r\n\r\nTask list logic was stuck inside the `WpcomChecklist` render tree, forcing checklist instances to look at the list of their children to determine completion status. This also made it difficult to determine whether the checklist should be rendered without actually rendering it (which will be useful in optimization work; see #27926).\r\n\r\nThis commit refactors the task list into a class that's instanced by `WpcomChecklist` and attached as a prop to the checklist component in its render tree.\r\nThis instance serves as the single source of truth on the list of tasks, the completion status of each task, and the overall completion status for the task list.\r\n\r\n#### Testing instructions\r\n\r\n* Use the various bits of checklist functionality (the `/checklist` page; the banner in `/stats`; the inline help integration)\r\n* All behaviour should remain the same, without any user-visible changes\r\n","created_at":"2018-10-24T17:05:46Z","updated_at":"2018-10-30T14:13:30Z","closed_at":null,"merged_at":null,"merge_commit_sha":"73b87a483071a75b4f79f733229562649579498e","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":758762135,"node_id":"MDU6TGFiZWw3NTg3NjIxMzU=","url":"https://api.github.com/repos/Automattic/wp-calypso/labels/Checklist","name":"Checklist","color":"006b75","default":false},{"id":285010018,"node_id":"MDU6TGFiZWwyODUwMTAwMTg=","url":"https://api.github.com/repos/Automattic/wp-calypso/labels/[Status]%20Needs%20Review","name":"[Status] Needs Review","color":"fbca04","default":false},{"id":285009976,"node_id":"MDU6TGFiZWwyODUwMDk5NzY=","url":"https://api.github.com/repos/Automattic/wp-calypso/labels/[Type]%20Enhancement","name":"[Type] Enhancement","color":"c7def8","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/Automattic/wp-calypso/pulls/28057/commits","review_comments_url":"https://api.github.com/repos/Automattic/wp-calypso/pulls/28057/comments","review_comment_url":"https://api.github.com/repos/Automattic/wp-calypso/pulls/comments{/number}","comments_url":"https://api.github.com/repos/Automattic/wp-calypso/issues/28057/comments","statuses_url":"https://api.github.com/repos/Automattic/wp-calypso/statuses/74a9606185c50cee007e6b4be1091bc7637fbcbf","head":{"label":"Automattic:update/refactor-wpcom-checklist","ref":"update/refactor-wpcom-checklist","sha":"74a9606185c50cee007e6b4be1091bc7637fbcbf","user":{"login":"Automattic","id":887802,"node_id":"MDEyOk9yZ2FuaXphdGlvbjg4NzgwMg==","avatar_url":"https://avatars1.githubusercontent.com/u/887802?v=4","gravatar_id":"","url":"https://api.github.com/users/Automattic","html_url":"https://github.com/Automattic","followers_url":"https://api.github.com/users/Automattic/followers","following_url":"https://api.github.com/users/Automattic/following{/other_user}","gists_url":"https://api.github.com/users/Automattic/gists{/gist_id}","starred_url":"https://api.github.com/users/Automattic/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Automattic/subscriptions","organizations_url":"https://api.github.com/users/Automattic/orgs","repos_url":"https://api.github.com/users/Automattic/repos","events_url":"https://api.github.com/users/Automattic/events{/privacy}","received_events_url":"https://api.github.com/users/Automattic/received_events","type":"Organization","site_admin":false},"repo":{"id":45936895,"node_id":"MDEwOlJlcG9zaXRvcnk0NTkzNjg5NQ==","name":"wp-calypso","full_name":"Automattic/wp-calypso","private":false,"owner":{"login":"Automattic","id":887802,"node_id":"MDEyOk9yZ2FuaXphdGlvbjg4NzgwMg==","avatar_url":"https://avatars1.githubusercontent.com/u/887802?v=4","gravatar_id":"","url":"https://api.github.com/users/Automattic","html_url":"https://github.com/Automattic","followers_url":"https://api.github.com/users/Automattic/followers","following_url":"https://api.github.com/users/Automattic/following{/other_user}","gists_url":"https://api.github.com/users/Automattic/gists{/gist_id}","starred_url":"https://api.github.com/users/Automattic/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Automattic/subscriptions","organizations_url":"https://api.github.com/users/Automattic/orgs","repos_url":"https://api.github.com/users/Automattic/repos","events_url":"https://api.github.com/users/Automattic/events{/privacy}","received_events_url":"https://api.github.com/users/Automattic/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/Automattic/wp-calypso","description":"The JavaScript and API powered WordPress.com","fork":false,"url":"https://api.github.com/repos/Automattic/wp-calypso","forks_url":"https://api.github.com/repos/Automattic/wp-calypso/forks","keys_url":"https://api.github.com/repos/Automattic/wp-calypso/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Automattic/wp-calypso/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Automattic/wp-calypso/teams","hooks_url":"https://api.github.com/repos/Automattic/wp-calypso/hooks","issue_events_url":"https://api.github.com/repos/Automattic/wp-calypso/issues/events{/number}","events_url":"https://api.github.com/repos/Automattic/wp-calypso/events","assignees_url":"https://api.github.com/repos/Automattic/wp-calypso/assignees{/user}","branches_url":"https://api.github.com/repos/Automattic/wp-calypso/branches{/branch}","tags_url":"https://api.github.com/repos/Automattic/wp-calypso/tags","blobs_url":"https://api.github.com/repos/Automattic/wp-calypso/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Automattic/wp-calypso/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Automattic/wp-calypso/git/refs{/sha}","trees_url":"https://api.github.com/repos/Automattic/wp-calypso/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Automattic/wp-calypso/statuses/{sha}","languages_url":"https://api.github.com/repos/Automattic/wp-calypso/languages","stargazers_url":"https://api.github.com/repos/Automattic/wp-calypso/stargazers","contributors_url":"https://api.github.com/repos/Automattic/wp-calypso/contributors","subscribers_url":"https://api.github.com/repos/Automattic/wp-calypso/subscribers","subscription_url":"https://api.github.com/repos/Automattic/wp-calypso/subscription","commits_url":"https://api.github.com/repos/Automattic/wp-calypso/commits{/sha}","git_commits_url":"https://api.github.com/repos/Automattic/wp-calypso/git/commits{/sha}","comments_url":"https://api.github.com/repos/Automattic/wp-calypso/comments{/number}","issue_comment_url":"https://api.github.com/repos/Automattic/wp-calypso/issues/comments{/number}","contents_url":"https://api.github.com/repos/Automattic/wp-calypso/contents/{+path}","compare_url":"https://api.github.com/repos/Automattic/wp-calypso/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Automattic/wp-calypso/merges","archive_url":"https://api.github.com/repos/Automattic/wp-calypso/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Automattic/wp-calypso/downloads","issues_url":"https://api.github.com/repos/Automattic/wp-calypso/issues{/number}","pulls_url":"https://api.github.com/repos/Automattic/wp-calypso/pulls{/number}","milestones_url":"https://api.github.com/repos/Automattic/wp-calypso/milestones{/number}","notifications_url":"https://api.github.com/repos/Automattic/wp-calypso/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Automattic/wp-calypso/labels{/name}","releases_url":"https://api.github.com/repos/Automattic/wp-calypso/releases{/id}","deployments_url":"https://api.github.com/repos/Automattic/wp-calypso/deployments","created_at":"2015-11-10T20:00:16Z","updated_at":"2018-10-30T14:06:16Z","pushed_at":"2018-10-30T14:12:29Z","git_url":"git://github.com/Automattic/wp-calypso.git","ssh_url":"git@github.com:Automattic/wp-calypso.git","clone_url":"https://github.com/Automattic/wp-calypso.git","svn_url":"https://github.com/Automattic/wp-calypso","homepage":"https://developer.wordpress.com/calypso/","size":115054,"stargazers_count":10538,"watchers_count":10538,"language":"JavaScript","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":1485,"mirror_url":null,"archived":false,"open_issues_count":1635,"license":{"key":"gpl-2.0","name":"GNU General Public License v2.0","spdx_id":"GPL-2.0","url":"https://api.github.com/licenses/gpl-2.0","node_id":"MDc6TGljZW5zZTg="},"forks":1485,"open_issues":1635,"watchers":10538,"default_branch":"master"}},"base":{"label":"Automattic:master","ref":"master","sha":"853cf54bfee2fa384bff6b65dd67ee6e982dcd39","user":{"login":"Automattic","id":887802,"node_id":"MDEyOk9yZ2FuaXphdGlvbjg4NzgwMg==","avatar_url":"https://avatars1.githubusercontent.com/u/887802?v=4","gravatar_id":"","url":"https://api.github.com/users/Automattic","html_url":"https://github.com/Automattic","followers_url":"https://api.github.com/users/Automattic/followers","following_url":"https://api.github.com/users/Automattic/following{/other_user}","gists_url":"https://api.github.com/users/Automattic/gists{/gist_id}","starred_url":"https://api.github.com/users/Automattic/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Automattic/subscriptions","organizations_url":"https://api.github.com/users/Automattic/orgs","repos_url":"https://api.github.com/users/Automattic/repos","events_url":"https://api.github.com/users/Automattic/events{/privacy}","received_events_url":"https://api.github.com/users/Automattic/received_events","type":"Organization","site_admin":false},"repo":{"id":45936895,"node_id":"MDEwOlJlcG9zaXRvcnk0NTkzNjg5NQ==","name":"wp-calypso","full_name":"Automattic/wp-calypso","private":false,"owner":{"login":"Automattic","id":887802,"node_id":"MDEyOk9yZ2FuaXphdGlvbjg4NzgwMg==","avatar_url":"https://avatars1.githubusercontent.com/u/887802?v=4","gravatar_id":"","url":"https://api.github.com/users/Automattic","html_url":"https://github.com/Automattic","followers_url":"https://api.github.com/users/Automattic/followers","following_url":"https://api.github.com/users/Automattic/following{/other_user}","gists_url":"https://api.github.com/users/Automattic/gists{/gist_id}","starred_url":"https://api.github.com/users/Automattic/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Automattic/subscriptions","organizations_url":"https://api.github.com/users/Automattic/orgs","repos_url":"https://api.github.com/users/Automattic/repos","events_url":"https://api.github.com/users/Automattic/events{/privacy}","received_events_url":"https://api.github.com/users/Automattic/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/Automattic/wp-calypso","description":"The JavaScript and API powered WordPress.com","fork":false,"url":"https://api.github.com/repos/Automattic/wp-calypso","forks_url":"https://api.github.com/repos/Automattic/wp-calypso/forks","keys_url":"https://api.github.com/repos/Automattic/wp-calypso/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Automattic/wp-calypso/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Automattic/wp-calypso/teams","hooks_url":"https://api.github.com/repos/Automattic/wp-calypso/hooks","issue_events_url":"https://api.github.com/repos/Automattic/wp-calypso/issues/events{/number}","events_url":"https://api.github.com/repos/Automattic/wp-calypso/events","assignees_url":"https://api.github.com/repos/Automattic/wp-calypso/assignees{/user}","branches_url":"https://api.github.com/repos/Automattic/wp-calypso/branches{/branch}","tags_url":"https://api.github.com/repos/Automattic/wp-calypso/tags","blobs_url":"https://api.github.com/repos/Automattic/wp-calypso/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Automattic/wp-calypso/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Automattic/wp-calypso/git/refs{/sha}","trees_url":"https://api.github.com/repos/Automattic/wp-calypso/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Automattic/wp-calypso/statuses/{sha}","languages_url":"https://api.github.com/repos/Automattic/wp-calypso/languages","stargazers_url":"https://api.github.com/repos/Automattic/wp-calypso/stargazers","contributors_url":"https://api.github.com/repos/Automattic/wp-calypso/contributors","subscribers_url":"https://api.github.com/repos/Automattic/wp-calypso/subscribers","subscription_url":"https://api.github.com/repos/Automattic/wp-calypso/subscription","commits_url":"https://api.github.com/repos/Automattic/wp-calypso/commits{/sha}","git_commits_url":"https://api.github.com/repos/Automattic/wp-calypso/git/commits{/sha}","comments_url":"https://api.github.com/repos/Automattic/wp-calypso/comments{/number}","issue_comment_url":"https://api.github.com/repos/Automattic/wp-calypso/issues/comments{/number}","contents_url":"https://api.github.com/repos/Automattic/wp-calypso/contents/{+path}","compare_url":"https://api.github.com/repos/Automattic/wp-calypso/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Automattic/wp-calypso/merges","archive_url":"https://api.github.com/repos/Automattic/wp-calypso/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Automattic/wp-calypso/downloads","issues_url":"https://api.github.com/repos/Automattic/wp-calypso/issues{/number}","pulls_url":"https://api.github.com/repos/Automattic/wp-calypso/pulls{/number}","milestones_url":"https://api.github.com/repos/Automattic/wp-calypso/milestones{/number}","notifications_url":"https://api.github.com/repos/Automattic/wp-calypso/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Automattic/wp-calypso/labels{/name}","releases_url":"https://api.github.com/repos/Automattic/wp-calypso/releases{/id}","deployments_url":"https://api.github.com/repos/Automattic/wp-calypso/deployments","created_at":"2015-11-10T20:00:16Z","updated_at":"2018-10-30T14:06:16Z","pushed_at":"2018-10-30T14:12:29Z","git_url":"git://github.com/Automattic/wp-calypso.git","ssh_url":"git@github.com:Automattic/wp-calypso.git","clone_url":"https://github.com/Automattic/wp-calypso.git","svn_url":"https://github.com/Automattic/wp-calypso","homepage":"https://developer.wordpress.com/calypso/","size":115054,"stargazers_count":10538,"watchers_count":10538,"language":"JavaScript","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":1485,"mirror_url":null,"archived":false,"open_issues_count":1635,"license":{"key":"gpl-2.0","name":"GNU General Public License v2.0","spdx_id":"GPL-2.0","url":"https://api.github.com/licenses/gpl-2.0","node_id":"MDc6TGljZW5zZTg="},"forks":1485,"open_issues":1635,"watchers":10538,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/Automattic/wp-calypso/pulls/28057"},"html":{"href":"https://github.com/Automattic/wp-calypso/pull/28057"},"issue":{"href":"https://api.github.com/repos/Automattic/wp-calypso/issues/28057"},"comments":{"href":"https://api.github.com/repos/Automattic/wp-calypso/issues/28057/comments"},"review_comments":{"href":"https://api.github.com/repos/Automattic/wp-calypso/pulls/28057/comments"},"review_comment":{"href":"https://api.github.com/repos/Automattic/wp-calypso/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/Automattic/wp-calypso/pulls/28057/commits"},"statuses":{"href":"https://api.github.com/repos/Automattic/wp-calypso/statuses/74a9606185c50cee007e6b4be1091bc7637fbcbf"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"jsnajdr"}}