diff --git a/src/components/Account.react.js b/src/components/Account.react.js index 872555ff84..bf5c486d4c 100644 --- a/src/components/Account.react.js +++ b/src/components/Account.react.js @@ -24,8 +24,12 @@ module.exports = React.createClass({ }, componentWillUpdate: function (nextProps, nextState) { - if (nextState.username) { - this.goBack(); + if (!this.state.username && nextState.username) { + if (nextState.prompted) { + this.goBack(); + } else { + this.transitionTo('search'); + } } }, diff --git a/src/components/AccountLogin.react.js b/src/components/AccountLogin.react.js index c27e94bc09..d189f1c7a6 100644 --- a/src/components/AccountLogin.react.js +++ b/src/components/AccountLogin.react.js @@ -16,9 +16,11 @@ module.exports = React.createClass({ errors: {} }; }, + componentDidMount: function () { React.findDOMNode(this.refs.usernameInput).focus(); }, + componentWillReceiveProps: function (nextProps) { this.setState({errors: nextProps.errors}); }, diff --git a/src/utils/HubUtil.js b/src/utils/HubUtil.js index 87a21a4094..a4db7131f7 100644 --- a/src/utils/HubUtil.js +++ b/src/utils/HubUtil.js @@ -12,6 +12,10 @@ module.exports = { } }, + username: function () { + return localStorage.getItem('auth.username') || null; + }, + // Returns the base64 encoded index token or null if no token exists config: function () { let config = localStorage.getItem('auth.config'); @@ -107,6 +111,7 @@ module.exports = { localStorage.setItem('auth.verified', true); localStorage.setItem('auth.config', new Buffer(username + ':' + password).toString('base64')); accountServerActions.loggedin({username, verified: true}); + accountServerActions.prompted({prompted: true}); require('./RegHubUtil').repos(); } else { accountServerActions.errors({errors: {detail: 'Did not receive login token.'}}); @@ -114,6 +119,7 @@ module.exports = { } else if (response.statusCode === 401) { if (data && data.detail && data.detail.indexOf('Account not active yet') !== -1) { accountServerActions.loggedin({username, verified: false}); + accountServerActions.prompted({prompted: true}); localStorage.setItem('auth.username', username); localStorage.setItem('auth.verified', false); localStorage.setItem('auth.config', new Buffer(username + ':' + password).toString('base64')); @@ -158,6 +164,7 @@ module.exports = { // TODO: save username to localstorage if (response.statusCode === 204) { accountServerActions.signedup({username, verified: false}); + accountServerActions.prompted({prompted: true}); localStorage.setItem('auth.username', username); localStorage.setItem('auth.verified', false); localStorage.setItem('auth.config', new Buffer(username + ':' + password).toString('base64')); diff --git a/src/utils/RegHubUtil.js b/src/utils/RegHubUtil.js index 3975ce96aa..115a04743a 100644 --- a/src/utils/RegHubUtil.js +++ b/src/utils/RegHubUtil.js @@ -88,7 +88,7 @@ module.exports = { tags: function (repo) { hubUtil.request({ - url: `https://registry.hub.docker.com/v2/repositories/${repo}/tags` + url: `https://registry.hub.docker.com/v2/repositories/v/tags` }, (error, response, body) => { if (response.statusCode === 200) { let data = JSON.parse(body); @@ -104,7 +104,7 @@ module.exports = { repositoryServerActions.reposLoading({repos: []}); hubUtil.request({ - url: 'https://registry.hub.docker.com/v2/namespaces/', + url: 'https://hub.docker.com/v2/user/orgs/', }, (error, response, body) => { if (error) { repositoryServerActions.reposError({error}); @@ -112,7 +112,8 @@ module.exports = { } let data = JSON.parse(body); - let namespaces = data.namespaces; + let namespaces = data.results.map(r => r.orgname); + namespaces.push(hubUtil.username()); async.map(namespaces, (namespace, cb) => { hubUtil.request({ url: `https://registry.hub.docker.com/v2/repositories/${namespace}`