{"action":"created","comment":{"url":"https://api.github.com/repos/polkadot-js/apps/pulls/comments/209559456","pull_request_review_id":145591300,"id":209559456,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIwOTU1OTQ1Ng==","diff_hunk":"@@ -98,21 +100,39 @@ class Editor extends React.PureComponent<Props, State> {\n     const { currentPair, defaultValue, editedName } = this.state;\n \n     if (!currentPair) {\n-      return t('editor.none', {\n-        defaultValue: 'There are no saved accounts. Add some first.'\n-      });\n+      return (\n+        <div>\n+          <div>{t('editor.nosaved', { defaultValue: 'There are no saved accounts. Create an account or upload a JSON file of a saved account.' })}</div>\n+          <div className={'accounts--Address-wrapper'}>\n+            <div className={'accounts--Address-file'}>\n+              <UploadButton\n+                size='big'\n+                onChangeAccount={this.onChangeAccount}\n+              />\n+            </div>\n+          </div>\n+        </div>\n+      );\n     }\n \n     const address = currentPair.address();\n \n     return (\n-      <div className='ui--grid'>\n-        <AddressSummary\n-          className='shrink'\n-          value={address}\n-        />\n-        <div className='grow'>\n-          <div className='ui--row'>\n+      <div className={'accounts--flex-group-row'}>\n+        <div className={'accounts--flex-container-col-summary'}>\n+          <div className={'accounts--flex-item'}>\n+            <AddressSummary\n+              className='shrink'\n+              value={address}\n+            />\n+          </div>\n+          <div className={'accounts--flex-item-file'}>\n+            <DownloadButton address={address} />\n+          </div>\n+          <UploadButton onChangeAccount={this.onChangeAccount} />\n+        </div>\n+        <div className={'accounts--flex-container-col-inputs'}>\n+          <div className={'accounts--flex-item'}>","path":"packages/app-accounts/src/Editor.tsx","position":64,"original_position":64,"commit_id":"8014e47a1fa57229addbd7bc1964f8d7dfbe4e47","original_commit_id":"8014e47a1fa57229addbd7bc1964f8d7dfbe4e47","user":{"login":"jacogr","id":1424473,"node_id":"MDQ6VXNlcjE0MjQ0NzM=","avatar_url":"https://avatars2.githubusercontent.com/u/1424473?v=4","gravatar_id":"","url":"https://api.github.com/users/jacogr","html_url":"https://github.com/jacogr","followers_url":"https://api.github.com/users/jacogr/followers","following_url":"https://api.github.com/users/jacogr/following{/other_user}","gists_url":"https://api.github.com/users/jacogr/gists{/gist_id}","starred_url":"https://api.github.com/users/jacogr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jacogr/subscriptions","organizations_url":"https://api.github.com/users/jacogr/orgs","repos_url":"https://api.github.com/users/jacogr/repos","events_url":"https://api.github.com/users/jacogr/events{/privacy}","received_events_url":"https://api.github.com/users/jacogr/received_events","type":"User","site_admin":false},"body":"No need for wrapping {}'s","created_at":"2018-08-13T10:24:04Z","updated_at":"2018-08-13T10:36:35Z","html_url":"https://github.com/polkadot-js/apps/pull/202#discussion_r209559456","pull_request_url":"https://api.github.com/repos/polkadot-js/apps/pulls/202","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/polkadot-js/apps/pulls/comments/209559456"},"html":{"href":"https://github.com/polkadot-js/apps/pull/202#discussion_r209559456"},"pull_request":{"href":"https://api.github.com/repos/polkadot-js/apps/pulls/202"}}},"pull_request":{"url":"https://api.github.com/repos/polkadot-js/apps/pulls/202","id":206557055,"node_id":"MDExOlB1bGxSZXF1ZXN0MjA2NTU3MDU1","html_url":"https://github.com/polkadot-js/apps/pull/202","diff_url":"https://github.com/polkadot-js/apps/pull/202.diff","patch_url":"https://github.com/polkadot-js/apps/pull/202.patch","issue_url":"https://api.github.com/repos/polkadot-js/apps/issues/202","number":202,"state":"open","locked":false,"title":"feat: Fixes #74. Allow upload/download JSON/private key from accounts","user":{"login":"ltfschoen","id":6226175,"node_id":"MDQ6VXNlcjYyMjYxNzU=","avatar_url":"https://avatars0.githubusercontent.com/u/6226175?v=4","gravatar_id":"","url":"https://api.github.com/users/ltfschoen","html_url":"https://github.com/ltfschoen","followers_url":"https://api.github.com/users/ltfschoen/followers","following_url":"https://api.github.com/users/ltfschoen/following{/other_user}","gists_url":"https://api.github.com/users/ltfschoen/gists{/gist_id}","starred_url":"https://api.github.com/users/ltfschoen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ltfschoen/subscriptions","organizations_url":"https://api.github.com/users/ltfschoen/orgs","repos_url":"https://api.github.com/users/ltfschoen/repos","events_url":"https://api.github.com/users/ltfschoen/events{/privacy}","received_events_url":"https://api.github.com/users/ltfschoen/received_events","type":"User","site_admin":false},"body":"* Upload JSON/private keys. Decrypt in modal by entered password to unlock secret key and store in memory and local storage. Error notifications on password input field when empty or incorrect.\r\n* Download JSON/private keys. Decrypt in modal by entered password to unlock secret key then download encrypted copy. Error notifications on password input field when empty or incorrect.\r\n![screen shot 2018-08-07 at 3 33 09 am](https://user-images.githubusercontent.com/6226175/43749055-cd9688b0-99f2-11e8-97c0-b004f0cd67b2.png)\r\n* Requires `pair.lock()` https://github.com/polkadot-js/apps/pull/198 functionality to be incorporated at the following FIXME locations in the code so that the secret key is locked again immediately after each individual download or upload, otherwise another user could repeat the process and download or upload with the incorrect password.\r\n  * https://github.com/polkadot-js/apps/compare/luke-74-download-upload-with-password?expand=1#diff-fdef2d47f48cbd87a974f75935042996R37\r\n  * https://github.com/polkadot-js/apps/compare/luke-74-download-upload-with-password?expand=1#diff-fdef2d47f48cbd87a974f75935042996R50\r\n  * https://github.com/polkadot-js/apps/compare/luke-74-download-upload-with-password?expand=1#diff-4460fae0eb0b78fa6efa8b092a9a0991R32\r\n  * https://github.com/polkadot-js/apps/compare/luke-74-download-upload-with-password?expand=1#diff-fcf70b0c98d01219eab7a943d0de67a6R52\r\n* All tests pass and tslint errors resolved","created_at":"2018-08-07T01:32:18Z","updated_at":"2018-08-13T10:36:35Z","closed_at":null,"merged_at":null,"merge_commit_sha":"e149d2b871565d73a84c14dde937498d8d8127d3","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/polkadot-js/apps/pulls/202/commits","review_comments_url":"https://api.github.com/repos/polkadot-js/apps/pulls/202/comments","review_comment_url":"https://api.github.com/repos/polkadot-js/apps/pulls/comments{/number}","comments_url":"https://api.github.com/repos/polkadot-js/apps/issues/202/comments","statuses_url":"https://api.github.com/repos/polkadot-js/apps/statuses/8014e47a1fa57229addbd7bc1964f8d7dfbe4e47","head":{"label":"polkadot-js:luke-74-download-upload-with-password","ref":"luke-74-download-upload-with-password","sha":"8014e47a1fa57229addbd7bc1964f8d7dfbe4e47","user":{"login":"polkadot-js","id":33775474,"node_id":"MDEyOk9yZ2FuaXphdGlvbjMzNzc1NDc0","avatar_url":"https://avatars2.githubusercontent.com/u/33775474?v=4","gravatar_id":"","url":"https://api.github.com/users/polkadot-js","html_url":"https://github.com/polkadot-js","followers_url":"https://api.github.com/users/polkadot-js/followers","following_url":"https://api.github.com/users/polkadot-js/following{/other_user}","gists_url":"https://api.github.com/users/polkadot-js/gists{/gist_id}","starred_url":"https://api.github.com/users/polkadot-js/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/polkadot-js/subscriptions","organizations_url":"https://api.github.com/users/polkadot-js/orgs","repos_url":"https://api.github.com/users/polkadot-js/repos","events_url":"https://api.github.com/users/polkadot-js/events{/privacy}","received_events_url":"https://api.github.com/users/polkadot-js/received_events","type":"Organization","site_admin":false},"repo":{"id":128733562,"node_id":"MDEwOlJlcG9zaXRvcnkxMjg3MzM1NjI=","name":"apps","full_name":"polkadot-js/apps","owner":{"login":"polkadot-js","id":33775474,"node_id":"MDEyOk9yZ2FuaXphdGlvbjMzNzc1NDc0","avatar_url":"https://avatars2.githubusercontent.com/u/33775474?v=4","gravatar_id":"","url":"https://api.github.com/users/polkadot-js","html_url":"https://github.com/polkadot-js","followers_url":"https://api.github.com/users/polkadot-js/followers","following_url":"https://api.github.com/users/polkadot-js/following{/other_user}","gists_url":"https://api.github.com/users/polkadot-js/gists{/gist_id}","starred_url":"https://api.github.com/users/polkadot-js/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/polkadot-js/subscriptions","organizations_url":"https://api.github.com/users/polkadot-js/orgs","repos_url":"https://api.github.com/users/polkadot-js/repos","events_url":"https://api.github.com/users/polkadot-js/events{/privacy}","received_events_url":"https://api.github.com/users/polkadot-js/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/polkadot-js/apps","description":"Basic Polkadot/Substrate UI for interacting with a node","fork":false,"url":"https://api.github.com/repos/polkadot-js/apps","forks_url":"https://api.github.com/repos/polkadot-js/apps/forks","keys_url":"https://api.github.com/repos/polkadot-js/apps/keys{/key_id}","collaborators_url":"https://api.github.com/repos/polkadot-js/apps/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/polkadot-js/apps/teams","hooks_url":"https://api.github.com/repos/polkadot-js/apps/hooks","issue_events_url":"https://api.github.com/repos/polkadot-js/apps/issues/events{/number}","events_url":"https://api.github.com/repos/polkadot-js/apps/events","assignees_url":"https://api.github.com/repos/polkadot-js/apps/assignees{/user}","branches_url":"https://api.github.com/repos/polkadot-js/apps/branches{/branch}","tags_url":"https://api.github.com/repos/polkadot-js/apps/tags","blobs_url":"https://api.github.com/repos/polkadot-js/apps/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/polkadot-js/apps/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/polkadot-js/apps/git/refs{/sha}","trees_url":"https://api.github.com/repos/polkadot-js/apps/git/trees{/sha}","statuses_url":"https://api.github.com/repos/polkadot-js/apps/statuses/{sha}","languages_url":"https://api.github.com/repos/polkadot-js/apps/languages","stargazers_url":"https://api.github.com/repos/polkadot-js/apps/stargazers","contributors_url":"https://api.github.com/repos/polkadot-js/apps/contributors","subscribers_url":"https://api.github.com/repos/polkadot-js/apps/subscribers","subscription_url":"https://api.github.com/repos/polkadot-js/apps/subscription","commits_url":"https://api.github.com/repos/polkadot-js/apps/commits{/sha}","git_commits_url":"https://api.github.com/repos/polkadot-js/apps/git/commits{/sha}","comments_url":"https://api.github.com/repos/polkadot-js/apps/comments{/number}","issue_comment_url":"https://api.github.com/repos/polkadot-js/apps/issues/comments{/number}","contents_url":"https://api.github.com/repos/polkadot-js/apps/contents/{+path}","compare_url":"https://api.github.com/repos/polkadot-js/apps/compare/{base}...{head}","merges_url":"https://api.github.com/repos/polkadot-js/apps/merges","archive_url":"https://api.github.com/repos/polkadot-js/apps/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/polkadot-js/apps/downloads","issues_url":"https://api.github.com/repos/polkadot-js/apps/issues{/number}","pulls_url":"https://api.github.com/repos/polkadot-js/apps/pulls{/number}","milestones_url":"https://api.github.com/repos/polkadot-js/apps/milestones{/number}","notifications_url":"https://api.github.com/repos/polkadot-js/apps/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/polkadot-js/apps/labels{/name}","releases_url":"https://api.github.com/repos/polkadot-js/apps/releases{/id}","deployments_url":"https://api.github.com/repos/polkadot-js/apps/deployments","created_at":"2018-04-09T07:41:34Z","updated_at":"2018-08-13T10:12:18Z","pushed_at":"2018-08-13T10:13:59Z","git_url":"git://github.com/polkadot-js/apps.git","ssh_url":"git@github.com:polkadot-js/apps.git","clone_url":"https://github.com/polkadot-js/apps.git","svn_url":"https://github.com/polkadot-js/apps","homepage":"https://polkadot.js.org/apps/","size":35801,"stargazers_count":19,"watchers_count":19,"language":"TypeScript","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":8,"mirror_url":null,"archived":false,"open_issues_count":36,"license":{"key":"isc","name":"ISC License","spdx_id":"ISC","url":"https://api.github.com/licenses/isc","node_id":"MDc6TGljZW5zZTEw"},"forks":8,"open_issues":36,"watchers":19,"default_branch":"master"}},"base":{"label":"polkadot-js:master","ref":"master","sha":"46a48539b77587fdeec521731b2fe4ab6c7cf521","user":{"login":"polkadot-js","id":33775474,"node_id":"MDEyOk9yZ2FuaXphdGlvbjMzNzc1NDc0","avatar_url":"https://avatars2.githubusercontent.com/u/33775474?v=4","gravatar_id":"","url":"https://api.github.com/users/polkadot-js","html_url":"https://github.com/polkadot-js","followers_url":"https://api.github.com/users/polkadot-js/followers","following_url":"https://api.github.com/users/polkadot-js/following{/other_user}","gists_url":"https://api.github.com/users/polkadot-js/gists{/gist_id}","starred_url":"https://api.github.com/users/polkadot-js/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/polkadot-js/subscriptions","organizations_url":"https://api.github.com/users/polkadot-js/orgs","repos_url":"https://api.github.com/users/polkadot-js/repos","events_url":"https://api.github.com/users/polkadot-js/events{/privacy}","received_events_url":"https://api.github.com/users/polkadot-js/received_events","type":"Organization","site_admin":false},"repo":{"id":128733562,"node_id":"MDEwOlJlcG9zaXRvcnkxMjg3MzM1NjI=","name":"apps","full_name":"polkadot-js/apps","owner":{"login":"polkadot-js","id":33775474,"node_id":"MDEyOk9yZ2FuaXphdGlvbjMzNzc1NDc0","avatar_url":"https://avatars2.githubusercontent.com/u/33775474?v=4","gravatar_id":"","url":"https://api.github.com/users/polkadot-js","html_url":"https://github.com/polkadot-js","followers_url":"https://api.github.com/users/polkadot-js/followers","following_url":"https://api.github.com/users/polkadot-js/following{/other_user}","gists_url":"https://api.github.com/users/polkadot-js/gists{/gist_id}","starred_url":"https://api.github.com/users/polkadot-js/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/polkadot-js/subscriptions","organizations_url":"https://api.github.com/users/polkadot-js/orgs","repos_url":"https://api.github.com/users/polkadot-js/repos","events_url":"https://api.github.com/users/polkadot-js/events{/privacy}","received_events_url":"https://api.github.com/users/polkadot-js/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/polkadot-js/apps","description":"Basic Polkadot/Substrate UI for interacting with a node","fork":false,"url":"https://api.github.com/repos/polkadot-js/apps","forks_url":"https://api.github.com/repos/polkadot-js/apps/forks","keys_url":"https://api.github.com/repos/polkadot-js/apps/keys{/key_id}","collaborators_url":"https://api.github.com/repos/polkadot-js/apps/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/polkadot-js/apps/teams","hooks_url":"https://api.github.com/repos/polkadot-js/apps/hooks","issue_events_url":"https://api.github.com/repos/polkadot-js/apps/issues/events{/number}","events_url":"https://api.github.com/repos/polkadot-js/apps/events","assignees_url":"https://api.github.com/repos/polkadot-js/apps/assignees{/user}","branches_url":"https://api.github.com/repos/polkadot-js/apps/branches{/branch}","tags_url":"https://api.github.com/repos/polkadot-js/apps/tags","blobs_url":"https://api.github.com/repos/polkadot-js/apps/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/polkadot-js/apps/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/polkadot-js/apps/git/refs{/sha}","trees_url":"https://api.github.com/repos/polkadot-js/apps/git/trees{/sha}","statuses_url":"https://api.github.com/repos/polkadot-js/apps/statuses/{sha}","languages_url":"https://api.github.com/repos/polkadot-js/apps/languages","stargazers_url":"https://api.github.com/repos/polkadot-js/apps/stargazers","contributors_url":"https://api.github.com/repos/polkadot-js/apps/contributors","subscribers_url":"https://api.github.com/repos/polkadot-js/apps/subscribers","subscription_url":"https://api.github.com/repos/polkadot-js/apps/subscription","commits_url":"https://api.github.com/repos/polkadot-js/apps/commits{/sha}","git_commits_url":"https://api.github.com/repos/polkadot-js/apps/git/commits{/sha}","comments_url":"https://api.github.com/repos/polkadot-js/apps/comments{/number}","issue_comment_url":"https://api.github.com/repos/polkadot-js/apps/issues/comments{/number}","contents_url":"https://api.github.com/repos/polkadot-js/apps/contents/{+path}","compare_url":"https://api.github.com/repos/polkadot-js/apps/compare/{base}...{head}","merges_url":"https://api.github.com/repos/polkadot-js/apps/merges","archive_url":"https://api.github.com/repos/polkadot-js/apps/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/polkadot-js/apps/downloads","issues_url":"https://api.github.com/repos/polkadot-js/apps/issues{/number}","pulls_url":"https://api.github.com/repos/polkadot-js/apps/pulls{/number}","milestones_url":"https://api.github.com/repos/polkadot-js/apps/milestones{/number}","notifications_url":"https://api.github.com/repos/polkadot-js/apps/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/polkadot-js/apps/labels{/name}","releases_url":"https://api.github.com/repos/polkadot-js/apps/releases{/id}","deployments_url":"https://api.github.com/repos/polkadot-js/apps/deployments","created_at":"2018-04-09T07:41:34Z","updated_at":"2018-08-13T10:12:18Z","pushed_at":"2018-08-13T10:13:59Z","git_url":"git://github.com/polkadot-js/apps.git","ssh_url":"git@github.com:polkadot-js/apps.git","clone_url":"https://github.com/polkadot-js/apps.git","svn_url":"https://github.com/polkadot-js/apps","homepage":"https://polkadot.js.org/apps/","size":35801,"stargazers_count":19,"watchers_count":19,"language":"TypeScript","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":8,"mirror_url":null,"archived":false,"open_issues_count":36,"license":{"key":"isc","name":"ISC License","spdx_id":"ISC","url":"https://api.github.com/licenses/isc","node_id":"MDc6TGljZW5zZTEw"},"forks":8,"open_issues":36,"watchers":19,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/polkadot-js/apps/pulls/202"},"html":{"href":"https://github.com/polkadot-js/apps/pull/202"},"issue":{"href":"https://api.github.com/repos/polkadot-js/apps/issues/202"},"comments":{"href":"https://api.github.com/repos/polkadot-js/apps/issues/202/comments"},"review_comments":{"href":"https://api.github.com/repos/polkadot-js/apps/pulls/202/comments"},"review_comment":{"href":"https://api.github.com/repos/polkadot-js/apps/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/polkadot-js/apps/pulls/202/commits"},"statuses":{"href":"https://api.github.com/repos/polkadot-js/apps/statuses/8014e47a1fa57229addbd7bc1964f8d7dfbe4e47"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"jacogr"}}