{"action":"created","comment":{"url":"https://api.github.com/repos/Automattic/wp-calypso/pulls/comments/110103400","pull_request_review_id":31247785,"id":110103400,"diff_hunk":"@@ -2,34 +2,139 @@\n  * External dependencies\n  */\n import React from 'react';\n+import { connect } from 'react-redux';\n import Gridicon from 'gridicons';\n \n /**\n  * Internal dependencies\n  */\n+import {\n+\tshowRequestForm as showMagicLoginRequestForm,\n+} from 'state/login/magic-login/actions';\n+import {\n+\temailAddressFormInput,\n+\tisShowingRequestForm as isShowingMagicLoginRequestForm,\n+\tisShowingExpiredPage as isShowingMagicLoginExpiredPage,\n+\tisShowingCheckYourEmailPage,\n+} from 'state/login/magic-login/selectors';\n+import { getCurrentQueryArguments } from 'state/ui/selectors';\n+\n import Main from 'components/main';\n import LoginBlock from 'blocks/login';\n+import RequestLoginEmailForm from '../magic-login/request-login-email-form';\n+import HandleEmailedLinkForm from '../magic-login/handle-emailed-link-form';\n+import EmailedLoginLinkSuccessfully from '../magic-login/emailed-login-link-successfully';\n+import EmailedLoginLinkExpired from '../magic-login/emailed-login-link-expired';\n import { isEnabled } from 'config';\n import { localize } from 'i18n-calypso';\n \n-const Login = ( { translate } ) => (\n-\t<Main className=\"wp-login\">\n-\t\t<div className=\"wp-login__header\">\n-\t\t\t<Gridicon icon=\"user-circle\" size={ 72 } />\n-\t\t\t<div>{ translate( 'You are signed out' ) }</div>\n-\t\t</div>\n-\t\t<div className=\"wp-login__container\">\n-\t\t\t<LoginBlock\n-\t\t\t\ttitle={ translate( 'Sign in to WordPress.com' ) } />\n-\t\t</div>\n-\t\t<div className=\"wp-login__footer\">\n-\t\t\t{\n-\t\t\t\tisEnabled( 'magic-login' ) && (\n-\t\t\t\t\t<a href=\"/login/send-me-a-link\">{ translate( 'Email me a login link' ) }</a>\n-\t\t\t\t)\n-\t\t\t}\n-\t\t</div>\n-\t</Main>\n-);\n-\n-export default localize( Login );\n+class Login extends React.Component {\n+\tmagicLoginMainContent() {\n+\t\tconst {\n+\t\t\thandlingMagicLink,\n+\t\t\tmagicLoginEmailAddress,\n+\t\t\tshowingCheckYourEmailPage,\n+\t\t\tshowingMagicLoginExpiredPage,\n+\t\t} = this.props;\n+\n+\t\tif ( showingMagicLoginExpiredPage ) {\n+\t\t\treturn <EmailedLoginLinkExpired />;\n+\t\t}\n+\n+\t\tif ( showingCheckYourEmailPage ) {\n+\t\t\treturn <EmailedLoginLinkSuccessfully emailAddress={ magicLoginEmailAddress } />;\n+\t\t}\n+\n+\t\tif ( handlingMagicLink ) {\n+\t\t\treturn <HandleEmailedLinkForm />;\n+\t\t}\n+\t}\n+\n+\tfooterContent() {\n+\t\tconst {\n+\t\t\thandlingMagicLink,\n+\t\t\tshowingCheckYourEmailPage,\n+\t\t\tshowingMagicLoginRequestForm,\n+\t\t\ttranslate,\n+\t\t} = this.props;\n+\n+\t\tif ( ! (\n+\t\t\thandlingMagicLink ||\n+\t\t\tshowingCheckYourEmailPage ||\n+\t\t\tshowingMagicLoginRequestForm\n+\t\t) ) {\n+\t\t\treturn <a href=\"#\" onClick={ this.props.onMagicLoginRequestClick }>{ translate( 'Email me a login link' ) }</a>;\n+\t\t}\n+\t}\n+\n+\trender() {\n+\t\tconst {\n+\t\t\tshowingMagicLoginRequestForm,\n+\t\t\ttranslate,\n+\t\t} = this.props;\n+\n+\t\treturn (\n+\t\t\t<Main className=\"wp-login\">\n+\t\t\t\t{ this.magicLoginMainContent() || (\n+\t\t\t\t\t<div>\n+\t\t\t\t\t\t<div className=\"wp-login__header\">\n+\t\t\t\t\t\t\t<Gridicon icon=\"user-circle\" size={ 72 } />\n+\t\t\t\t\t\t\t<div>{\n+\t\t\t\t\t\t\t\t// @TODO show currently logged in user if any\n+\t\t\t\t\t\t\t\ttranslate( 'You are signed out' )\n+\t\t\t\t\t\t\t}</div>\n+\t\t\t\t\t\t</div>\n+\t\t\t\t\t\t<div className=\"wp-login__container\">\n+\t\t\t\t\t\t\t{ showingMagicLoginRequestForm\n+\t\t\t\t\t\t\t\t? <RequestLoginEmailForm />\n+\t\t\t\t\t\t\t\t: <LoginBlock title={ translate( 'Sign in to WordPress.com' ) } />\n+\t\t\t\t\t\t\t}\n+\t\t\t\t\t\t</div>\n+\t\t\t\t\t\t<div className=\"wp-login__footer\">\n+\t\t\t\t\t\t\t{ this.footerContent() }\n+\t\t\t\t\t\t</div>\n+\t\t\t\t\t</div>\n+\t\t\t\t) }\n+\t\t\t</Main>\n+\t\t);\n+\t}\n+}\n+\n+const mapState = state => {\n+\tconst magicLoginEnabled = isEnabled( 'magic-login' );\n+\tconst queryArguments = getCurrentQueryArguments( state );\n+\n+\tconst {\n+\t\taction,\n+\t\tclient_id: clientId,\n+\t\temail,\n+\t\ttoken,\n+\t\ttt: tokenTime,\n+\t} = queryArguments;\n+\n+\treturn {\n+\t\thandlingMagicLink: (\n+\t\t\tmagicLoginEnabled &&\n+\t\t\taction === 'handleLoginEmail' &&\n+\t\t\tclientId &&\n+\t\t\temail &&\n+\t\t\ttoken &&\n+\t\t\ttokenTime\n+\t\t),\n+\t\tmagicLoginEmailAddress: emailAddressFormInput( state ),\n+\t\tshowingMagicLoginExpiredPage: magicLoginEnabled && isShowingMagicLoginExpiredPage( state ),\n+\t\tshowingMagicLoginRequestForm: magicLoginEnabled && isShowingMagicLoginRequestForm( state ),\n+\t\tshowingCheckYourEmailPage: magicLoginEnabled && isShowingCheckYourEmailPage( state ),\n+\t};\n+};\n+\n+const mapDispatch = dispatch => {\n+\treturn {\n+\t\tonMagicLoginRequestClick: event => {\n+\t\t\tevent.preventDefault();\n+\t\t\tdispatch( showMagicLoginRequestForm() );\n+\t\t}","path":"client/login/wp-login/index.js","position":156,"original_position":156,"commit_id":"9d8b03886e04d27f56b7864fa1dc23faa8d32425","original_commit_id":"9d8b03886e04d27f56b7864fa1dc23faa8d32425","user":{"login":"mcsf","id":150562,"avatar_url":"https://avatars3.githubusercontent.com/u/150562?v=3","gravatar_id":"","url":"https://api.github.com/users/mcsf","html_url":"https://github.com/mcsf","followers_url":"https://api.github.com/users/mcsf/followers","following_url":"https://api.github.com/users/mcsf/following{/other_user}","gists_url":"https://api.github.com/users/mcsf/gists{/gist_id}","starred_url":"https://api.github.com/users/mcsf/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mcsf/subscriptions","organizations_url":"https://api.github.com/users/mcsf/orgs","repos_url":"https://api.github.com/users/mcsf/repos","events_url":"https://api.github.com/users/mcsf/events{/privacy}","received_events_url":"https://api.github.com/users/mcsf/received_events","type":"User","site_admin":false},"body":"You should only use `mapDispatch` to wrangle bindings of state, props and dispatch. The presence of `event` here is a code smell to me: this a function that should be defined in the component. So:\r\n\r\n```js\r\nconst mapDispatch = {\r\n  showMagicLoginRequestForm\r\n};\r\n```\r\n\r\nThen in the component class:\r\n\r\n```js\r\nonMagicLoginRequestClick = ( event ) => {\r\n  event.preventDefault();\r\n  this.props.showMagicLoginRequestForm();\r\n}\r\n``` ","created_at":"2017-04-06T08:21:22Z","updated_at":"2017-04-06T08:26:56Z","html_url":"https://github.com/Automattic/wp-calypso/pull/12732#discussion_r110103400","pull_request_url":"https://api.github.com/repos/Automattic/wp-calypso/pulls/12732","_links":{"self":{"href":"https://api.github.com/repos/Automattic/wp-calypso/pulls/comments/110103400"},"html":{"href":"https://github.com/Automattic/wp-calypso/pull/12732#discussion_r110103400"},"pull_request":{"href":"https://api.github.com/repos/Automattic/wp-calypso/pulls/12732"}}},"pull_request":{"url":"https://api.github.com/repos/Automattic/wp-calypso/pulls/12732","id":113946511,"html_url":"https://github.com/Automattic/wp-calypso/pull/12732","diff_url":"https://github.com/Automattic/wp-calypso/pull/12732.diff","patch_url":"https://github.com/Automattic/wp-calypso/pull/12732.patch","issue_url":"https://api.github.com/repos/Automattic/wp-calypso/issues/12732","number":12732,"state":"closed","locked":false,"title":"Magic Login: Control flow state with redux instead of separate routes","user":{"login":"jblz","id":1587282,"avatar_url":"https://avatars1.githubusercontent.com/u/1587282?v=3","gravatar_id":"","url":"https://api.github.com/users/jblz","html_url":"https://github.com/jblz","followers_url":"https://api.github.com/users/jblz/followers","following_url":"https://api.github.com/users/jblz/following{/other_user}","gists_url":"https://api.github.com/users/jblz/gists{/gist_id}","starred_url":"https://api.github.com/users/jblz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jblz/subscriptions","organizations_url":"https://api.github.com/users/jblz/orgs","repos_url":"https://api.github.com/users/jblz/repos","events_url":"https://api.github.com/users/jblz/events{/privacy}","received_events_url":"https://api.github.com/users/jblz/received_events","type":"User","site_admin":false},"body":"This PR moves to redux actions to control state & converges on the `/login` route (instead of `/login/send-me-a-link`, for example).\r\n\r\n## Manual Testing\r\n\r\n* Apply server-side changes (see: D5031-code)\r\n* Visit the [login page](http://calypso.localhost:3000/login)\r\n* Click the `Email me a login link` link\r\n* Follow the flow\r\n\r\n## Automated Testing\r\n`npm run test-client -- --grep \"state login\"`\r\n\r\nFor item `Initiate state changes via Redux actions` in #12677\r\n\r\n## TODOs (in follow up PR(s))\r\n\r\n* \"reduxify\" auth handler components (+ tests)\r\n* component / rendering tests","created_at":"2017-04-03T14:41:10Z","updated_at":"2017-04-06T08:26:57Z","closed_at":"2017-04-05T20:09:28Z","merged_at":"2017-04-05T20:09:27Z","merge_commit_sha":"b83c3afe018c0836c179d6cdef326067328faec9","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/Automattic/wp-calypso/pulls/12732/commits","review_comments_url":"https://api.github.com/repos/Automattic/wp-calypso/pulls/12732/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/12732/comments","statuses_url":"https://api.github.com/repos/Automattic/wp-calypso/statuses/9d8b03886e04d27f56b7864fa1dc23faa8d32425","head":{"label":"Automattic:add/magic-login-redux","ref":"add/magic-login-redux","sha":"9d8b03886e04d27f56b7864fa1dc23faa8d32425","user":{"login":"Automattic","id":887802,"avatar_url":"https://avatars2.githubusercontent.com/u/887802?v=3","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,"name":"wp-calypso","full_name":"Automattic/wp-calypso","owner":{"login":"Automattic","id":887802,"avatar_url":"https://avatars2.githubusercontent.com/u/887802?v=3","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},"private":false,"html_url":"https://github.com/Automattic/wp-calypso","description":"The new 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":"2017-04-06T01:02:02Z","pushed_at":"2017-04-06T08:26:32Z","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":59302,"stargazers_count":8620,"watchers_count":8620,"language":"JavaScript","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":1104,"mirror_url":null,"open_issues_count":1839,"forks":1104,"open_issues":1839,"watchers":8620,"default_branch":"master"}},"base":{"label":"Automattic:master","ref":"master","sha":"98f5e11185e08e2d9ece798d03fcbe7f730557a1","user":{"login":"Automattic","id":887802,"avatar_url":"https://avatars2.githubusercontent.com/u/887802?v=3","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,"name":"wp-calypso","full_name":"Automattic/wp-calypso","owner":{"login":"Automattic","id":887802,"avatar_url":"https://avatars2.githubusercontent.com/u/887802?v=3","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},"private":false,"html_url":"https://github.com/Automattic/wp-calypso","description":"The new 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":"2017-04-06T01:02:02Z","pushed_at":"2017-04-06T08:26:32Z","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":59302,"stargazers_count":8620,"watchers_count":8620,"language":"JavaScript","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":1104,"mirror_url":null,"open_issues_count":1839,"forks":1104,"open_issues":1839,"watchers":8620,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/Automattic/wp-calypso/pulls/12732"},"html":{"href":"https://github.com/Automattic/wp-calypso/pull/12732"},"issue":{"href":"https://api.github.com/repos/Automattic/wp-calypso/issues/12732"},"comments":{"href":"https://api.github.com/repos/Automattic/wp-calypso/issues/12732/comments"},"review_comments":{"href":"https://api.github.com/repos/Automattic/wp-calypso/pulls/12732/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/12732/commits"},"statuses":{"href":"https://api.github.com/repos/Automattic/wp-calypso/statuses/9d8b03886e04d27f56b7864fa1dc23faa8d32425"}}}}
{"actor":{"display_login":"mcsf"}}