{"action":"created","comment":{"url":"https://api.github.com/repos/ENCODE-DCC/encoded/pulls/comments/114863696","pull_request_review_id":36360455,"id":114863696,"diff_hunk":"@@ -57,7 +59,7 @@ var RichTextBlockView = module.exports.RichTextBlockView = React.createClass({\n \n     render: function() {\n         return (\n-            <div contentEditable={this.context.editable} dangerouslySetInnerHTML={{__html: this.state.value.body}} />\n+            <div contentEditable={this.context.editable} dangerouslySetInnerHTML={{__html: this.state.value.body}} ref={(comp) => { this.domNode = comp; }} />","path":"src/encoded/static/components/blocks/richtext.js","position":45,"original_position":45,"commit_id":"8dab2d248c32854a7ac6c521764fe5ad033db770","original_commit_id":"8dab2d248c32854a7ac6c521764fe5ad033db770","user":{"login":"forresttanaka","id":1181324,"avatar_url":"https://avatars2.githubusercontent.com/u/1181324?v=3","gravatar_id":"","url":"https://api.github.com/users/forresttanaka","html_url":"https://github.com/forresttanaka","followers_url":"https://api.github.com/users/forresttanaka/followers","following_url":"https://api.github.com/users/forresttanaka/following{/other_user}","gists_url":"https://api.github.com/users/forresttanaka/gists{/gist_id}","starred_url":"https://api.github.com/users/forresttanaka/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/forresttanaka/subscriptions","organizations_url":"https://api.github.com/users/forresttanaka/orgs","repos_url":"https://api.github.com/users/forresttanaka/repos","events_url":"https://api.github.com/users/forresttanaka/events{/privacy}","received_events_url":"https://api.github.com/users/forresttanaka/received_events","type":"User","site_admin":false},"body":"Yes.","created_at":"2017-05-04T19:09:40Z","updated_at":"2017-05-04T19:09:40Z","html_url":"https://github.com/ENCODE-DCC/encoded/pull/1818#discussion_r114863696","pull_request_url":"https://api.github.com/repos/ENCODE-DCC/encoded/pulls/1818","_links":{"self":{"href":"https://api.github.com/repos/ENCODE-DCC/encoded/pulls/comments/114863696"},"html":{"href":"https://github.com/ENCODE-DCC/encoded/pull/1818#discussion_r114863696"},"pull_request":{"href":"https://api.github.com/repos/ENCODE-DCC/encoded/pulls/1818"}}},"pull_request":{"url":"https://api.github.com/repos/ENCODE-DCC/encoded/pulls/1818","id":116664634,"html_url":"https://github.com/ENCODE-DCC/encoded/pull/1818","diff_url":"https://github.com/ENCODE-DCC/encoded/pull/1818.diff","patch_url":"https://github.com/ENCODE-DCC/encoded/pull/1818.patch","issue_url":"https://api.github.com/repos/ENCODE-DCC/encoded/issues/1818","number":1818,"state":"open","locked":false,"title":"4755 React 15 — at last!","user":{"login":"forresttanaka","id":1181324,"avatar_url":"https://avatars2.githubusercontent.com/u/1181324?v=3","gravatar_id":"","url":"https://api.github.com/users/forresttanaka","html_url":"https://github.com/forresttanaka","followers_url":"https://api.github.com/users/forresttanaka/followers","following_url":"https://api.github.com/users/forresttanaka/following{/other_user}","gists_url":"https://api.github.com/users/forresttanaka/gists{/gist_id}","starred_url":"https://api.github.com/users/forresttanaka/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/forresttanaka/subscriptions","organizations_url":"https://api.github.com/users/forresttanaka/orgs","repos_url":"https://api.github.com/users/forresttanaka/repos","events_url":"https://api.github.com/users/forresttanaka/events{/privacy}","received_events_url":"https://api.github.com/users/forresttanaka/received_events","type":"User","site_admin":false},"body":"# Crucial Changes\r\n## setProps deprecation and removal\r\nThe React `setProps` method has been removed from React 15. We have used this in various places in mixins.js, largely for changing properties sent to `<App>` when logging in. These properties have been replaced by React states, and the `setProps` commands have been replaced with the eternal setState method. I originally made this change for clincoded when I updated that to React 0.14, and most of the same processes happen for encoded, though with some cleanup of issues that didn’t affect clincoded.\r\n\r\n## Removal (mostly) of mixins\r\nReact mixins have been _practically_ though not _technically_ deprecated, so I have _almost_ removed them from encoded. A conspicuous user of mixins was audits, and I have replaced those with HOCs which act a little like Python decorators. I've renamed past users of the audit mixin to add the word Component to them (e.g. `<Experiment>` becomes `<ExperimentComponent>`) and then `<Experiment>` becomes assigned to `<ExperimentComponent>` wrapped in the new auditDecor HOC (“Decor” short for “decorator” — a nomenclature I might or might not abandon).\r\n\r\nOne minor usage of a mixin still exists just because I didn’t get around to it. A later update to get rid of it shouldn’t be very difficult.\r\n\r\n## Removal of mixins.js\r\nAlong with the eradication of mixins was the removal of mixins.js that housed HistoryAndTriggers and Auth0. I found HOCs wouldn’t cut it partially because only `<App>` used these mixins, and because these mixins called each others methods — a model not fitting in with HOCs (and I’d argue not fitting in with any concept at all). All their functionality has moved into `<App>`.\r\n\r\n# Less Crucial Changes\r\n## ES6 styling\r\nAll new modules now use React ES6 styling, and I’ve converted some of the smaller existing modules to that styling. This also involves converting some components to stateless ones where appropriate. They use a syntax that looks odd at first, but is easy to get used to, and is easier overall. I had thought about converting the entire code base to ES6 styling for this PR, but currently only a small part uses the new styling and it took a long time just to get to that point, so this will have to be a gradual process. Once we're basically there, I’d like to experiment with JSDoc commenting which Visual Studio Code now has direct support for.\r\n\r\n# Problem\r\nI remember David said something about React 15 breaking something, but now I can’t find where he said that.\r\n\r\nNote: I see this branch lags a bit behind the last PR merge, but that seems to have been just a documentation change so this should be fine.","created_at":"2017-04-19T23:47:00Z","updated_at":"2017-05-04T19:09:40Z","closed_at":null,"merged_at":null,"merge_commit_sha":"b89a1970b055d7cf7989f76d25d9d986e4e44ed3","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/ENCODE-DCC/encoded/pulls/1818/commits","review_comments_url":"https://api.github.com/repos/ENCODE-DCC/encoded/pulls/1818/comments","review_comment_url":"https://api.github.com/repos/ENCODE-DCC/encoded/pulls/comments{/number}","comments_url":"https://api.github.com/repos/ENCODE-DCC/encoded/issues/1818/comments","statuses_url":"https://api.github.com/repos/ENCODE-DCC/encoded/statuses/8dab2d248c32854a7ac6c521764fe5ad033db770","head":{"label":"ENCODE-DCC:4755-react-15","ref":"4755-react-15","sha":"8dab2d248c32854a7ac6c521764fe5ad033db770","user":{"login":"ENCODE-DCC","id":1713898,"avatar_url":"https://avatars3.githubusercontent.com/u/1713898?v=3","gravatar_id":"","url":"https://api.github.com/users/ENCODE-DCC","html_url":"https://github.com/ENCODE-DCC","followers_url":"https://api.github.com/users/ENCODE-DCC/followers","following_url":"https://api.github.com/users/ENCODE-DCC/following{/other_user}","gists_url":"https://api.github.com/users/ENCODE-DCC/gists{/gist_id}","starred_url":"https://api.github.com/users/ENCODE-DCC/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ENCODE-DCC/subscriptions","organizations_url":"https://api.github.com/users/ENCODE-DCC/orgs","repos_url":"https://api.github.com/users/ENCODE-DCC/repos","events_url":"https://api.github.com/users/ENCODE-DCC/events{/privacy}","received_events_url":"https://api.github.com/users/ENCODE-DCC/received_events","type":"Organization","site_admin":false},"repo":{"id":7045549,"name":"encoded","full_name":"ENCODE-DCC/encoded","owner":{"login":"ENCODE-DCC","id":1713898,"avatar_url":"https://avatars3.githubusercontent.com/u/1713898?v=3","gravatar_id":"","url":"https://api.github.com/users/ENCODE-DCC","html_url":"https://github.com/ENCODE-DCC","followers_url":"https://api.github.com/users/ENCODE-DCC/followers","following_url":"https://api.github.com/users/ENCODE-DCC/following{/other_user}","gists_url":"https://api.github.com/users/ENCODE-DCC/gists{/gist_id}","starred_url":"https://api.github.com/users/ENCODE-DCC/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ENCODE-DCC/subscriptions","organizations_url":"https://api.github.com/users/ENCODE-DCC/orgs","repos_url":"https://api.github.com/users/ENCODE-DCC/repos","events_url":"https://api.github.com/users/ENCODE-DCC/events{/privacy}","received_events_url":"https://api.github.com/users/ENCODE-DCC/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/ENCODE-DCC/encoded","description":"Metadata database for ENCODE 3","fork":false,"url":"https://api.github.com/repos/ENCODE-DCC/encoded","forks_url":"https://api.github.com/repos/ENCODE-DCC/encoded/forks","keys_url":"https://api.github.com/repos/ENCODE-DCC/encoded/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ENCODE-DCC/encoded/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ENCODE-DCC/encoded/teams","hooks_url":"https://api.github.com/repos/ENCODE-DCC/encoded/hooks","issue_events_url":"https://api.github.com/repos/ENCODE-DCC/encoded/issues/events{/number}","events_url":"https://api.github.com/repos/ENCODE-DCC/encoded/events","assignees_url":"https://api.github.com/repos/ENCODE-DCC/encoded/assignees{/user}","branches_url":"https://api.github.com/repos/ENCODE-DCC/encoded/branches{/branch}","tags_url":"https://api.github.com/repos/ENCODE-DCC/encoded/tags","blobs_url":"https://api.github.com/repos/ENCODE-DCC/encoded/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ENCODE-DCC/encoded/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ENCODE-DCC/encoded/git/refs{/sha}","trees_url":"https://api.github.com/repos/ENCODE-DCC/encoded/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ENCODE-DCC/encoded/statuses/{sha}","languages_url":"https://api.github.com/repos/ENCODE-DCC/encoded/languages","stargazers_url":"https://api.github.com/repos/ENCODE-DCC/encoded/stargazers","contributors_url":"https://api.github.com/repos/ENCODE-DCC/encoded/contributors","subscribers_url":"https://api.github.com/repos/ENCODE-DCC/encoded/subscribers","subscription_url":"https://api.github.com/repos/ENCODE-DCC/encoded/subscription","commits_url":"https://api.github.com/repos/ENCODE-DCC/encoded/commits{/sha}","git_commits_url":"https://api.github.com/repos/ENCODE-DCC/encoded/git/commits{/sha}","comments_url":"https://api.github.com/repos/ENCODE-DCC/encoded/comments{/number}","issue_comment_url":"https://api.github.com/repos/ENCODE-DCC/encoded/issues/comments{/number}","contents_url":"https://api.github.com/repos/ENCODE-DCC/encoded/contents/{+path}","compare_url":"https://api.github.com/repos/ENCODE-DCC/encoded/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ENCODE-DCC/encoded/merges","archive_url":"https://api.github.com/repos/ENCODE-DCC/encoded/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ENCODE-DCC/encoded/downloads","issues_url":"https://api.github.com/repos/ENCODE-DCC/encoded/issues{/number}","pulls_url":"https://api.github.com/repos/ENCODE-DCC/encoded/pulls{/number}","milestones_url":"https://api.github.com/repos/ENCODE-DCC/encoded/milestones{/number}","notifications_url":"https://api.github.com/repos/ENCODE-DCC/encoded/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ENCODE-DCC/encoded/labels{/name}","releases_url":"https://api.github.com/repos/ENCODE-DCC/encoded/releases{/id}","deployments_url":"https://api.github.com/repos/ENCODE-DCC/encoded/deployments","created_at":"2012-12-07T00:52:21Z","updated_at":"2017-05-02T23:36:28Z","pushed_at":"2017-05-04T18:35:05Z","git_url":"git://github.com/ENCODE-DCC/encoded.git","ssh_url":"git@github.com:ENCODE-DCC/encoded.git","clone_url":"https://github.com/ENCODE-DCC/encoded.git","svn_url":"https://github.com/ENCODE-DCC/encoded","homepage":"https://www.encodeproject.org","size":119508,"stargazers_count":39,"watchers_count":39,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":25,"mirror_url":null,"open_issues_count":13,"forks":25,"open_issues":13,"watchers":39,"default_branch":"master"}},"base":{"label":"ENCODE-DCC:master","ref":"master","sha":"e9d8d8ad7bf59afc735caad69688fe6f81842489","user":{"login":"ENCODE-DCC","id":1713898,"avatar_url":"https://avatars3.githubusercontent.com/u/1713898?v=3","gravatar_id":"","url":"https://api.github.com/users/ENCODE-DCC","html_url":"https://github.com/ENCODE-DCC","followers_url":"https://api.github.com/users/ENCODE-DCC/followers","following_url":"https://api.github.com/users/ENCODE-DCC/following{/other_user}","gists_url":"https://api.github.com/users/ENCODE-DCC/gists{/gist_id}","starred_url":"https://api.github.com/users/ENCODE-DCC/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ENCODE-DCC/subscriptions","organizations_url":"https://api.github.com/users/ENCODE-DCC/orgs","repos_url":"https://api.github.com/users/ENCODE-DCC/repos","events_url":"https://api.github.com/users/ENCODE-DCC/events{/privacy}","received_events_url":"https://api.github.com/users/ENCODE-DCC/received_events","type":"Organization","site_admin":false},"repo":{"id":7045549,"name":"encoded","full_name":"ENCODE-DCC/encoded","owner":{"login":"ENCODE-DCC","id":1713898,"avatar_url":"https://avatars3.githubusercontent.com/u/1713898?v=3","gravatar_id":"","url":"https://api.github.com/users/ENCODE-DCC","html_url":"https://github.com/ENCODE-DCC","followers_url":"https://api.github.com/users/ENCODE-DCC/followers","following_url":"https://api.github.com/users/ENCODE-DCC/following{/other_user}","gists_url":"https://api.github.com/users/ENCODE-DCC/gists{/gist_id}","starred_url":"https://api.github.com/users/ENCODE-DCC/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ENCODE-DCC/subscriptions","organizations_url":"https://api.github.com/users/ENCODE-DCC/orgs","repos_url":"https://api.github.com/users/ENCODE-DCC/repos","events_url":"https://api.github.com/users/ENCODE-DCC/events{/privacy}","received_events_url":"https://api.github.com/users/ENCODE-DCC/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/ENCODE-DCC/encoded","description":"Metadata database for ENCODE 3","fork":false,"url":"https://api.github.com/repos/ENCODE-DCC/encoded","forks_url":"https://api.github.com/repos/ENCODE-DCC/encoded/forks","keys_url":"https://api.github.com/repos/ENCODE-DCC/encoded/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ENCODE-DCC/encoded/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ENCODE-DCC/encoded/teams","hooks_url":"https://api.github.com/repos/ENCODE-DCC/encoded/hooks","issue_events_url":"https://api.github.com/repos/ENCODE-DCC/encoded/issues/events{/number}","events_url":"https://api.github.com/repos/ENCODE-DCC/encoded/events","assignees_url":"https://api.github.com/repos/ENCODE-DCC/encoded/assignees{/user}","branches_url":"https://api.github.com/repos/ENCODE-DCC/encoded/branches{/branch}","tags_url":"https://api.github.com/repos/ENCODE-DCC/encoded/tags","blobs_url":"https://api.github.com/repos/ENCODE-DCC/encoded/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ENCODE-DCC/encoded/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ENCODE-DCC/encoded/git/refs{/sha}","trees_url":"https://api.github.com/repos/ENCODE-DCC/encoded/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ENCODE-DCC/encoded/statuses/{sha}","languages_url":"https://api.github.com/repos/ENCODE-DCC/encoded/languages","stargazers_url":"https://api.github.com/repos/ENCODE-DCC/encoded/stargazers","contributors_url":"https://api.github.com/repos/ENCODE-DCC/encoded/contributors","subscribers_url":"https://api.github.com/repos/ENCODE-DCC/encoded/subscribers","subscription_url":"https://api.github.com/repos/ENCODE-DCC/encoded/subscription","commits_url":"https://api.github.com/repos/ENCODE-DCC/encoded/commits{/sha}","git_commits_url":"https://api.github.com/repos/ENCODE-DCC/encoded/git/commits{/sha}","comments_url":"https://api.github.com/repos/ENCODE-DCC/encoded/comments{/number}","issue_comment_url":"https://api.github.com/repos/ENCODE-DCC/encoded/issues/comments{/number}","contents_url":"https://api.github.com/repos/ENCODE-DCC/encoded/contents/{+path}","compare_url":"https://api.github.com/repos/ENCODE-DCC/encoded/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ENCODE-DCC/encoded/merges","archive_url":"https://api.github.com/repos/ENCODE-DCC/encoded/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ENCODE-DCC/encoded/downloads","issues_url":"https://api.github.com/repos/ENCODE-DCC/encoded/issues{/number}","pulls_url":"https://api.github.com/repos/ENCODE-DCC/encoded/pulls{/number}","milestones_url":"https://api.github.com/repos/ENCODE-DCC/encoded/milestones{/number}","notifications_url":"https://api.github.com/repos/ENCODE-DCC/encoded/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ENCODE-DCC/encoded/labels{/name}","releases_url":"https://api.github.com/repos/ENCODE-DCC/encoded/releases{/id}","deployments_url":"https://api.github.com/repos/ENCODE-DCC/encoded/deployments","created_at":"2012-12-07T00:52:21Z","updated_at":"2017-05-02T23:36:28Z","pushed_at":"2017-05-04T18:35:05Z","git_url":"git://github.com/ENCODE-DCC/encoded.git","ssh_url":"git@github.com:ENCODE-DCC/encoded.git","clone_url":"https://github.com/ENCODE-DCC/encoded.git","svn_url":"https://github.com/ENCODE-DCC/encoded","homepage":"https://www.encodeproject.org","size":119508,"stargazers_count":39,"watchers_count":39,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":25,"mirror_url":null,"open_issues_count":13,"forks":25,"open_issues":13,"watchers":39,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/ENCODE-DCC/encoded/pulls/1818"},"html":{"href":"https://github.com/ENCODE-DCC/encoded/pull/1818"},"issue":{"href":"https://api.github.com/repos/ENCODE-DCC/encoded/issues/1818"},"comments":{"href":"https://api.github.com/repos/ENCODE-DCC/encoded/issues/1818/comments"},"review_comments":{"href":"https://api.github.com/repos/ENCODE-DCC/encoded/pulls/1818/comments"},"review_comment":{"href":"https://api.github.com/repos/ENCODE-DCC/encoded/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/ENCODE-DCC/encoded/pulls/1818/commits"},"statuses":{"href":"https://api.github.com/repos/ENCODE-DCC/encoded/statuses/8dab2d248c32854a7ac6c521764fe5ad033db770"}}}}
{"actor":{"display_login":"forresttanaka"}}