diff --git a/index.html b/index.html index 0c675d64e..77fce4dff 100644 --- a/index.html +++ b/index.html @@ -33,6 +33,7 @@ + diff --git a/js/id/connection.js b/js/id/connection.js index 629122f86..e06260810 100644 --- a/js/id/connection.js +++ b/js/id/connection.js @@ -91,9 +91,9 @@ iD.Connection = function() { } function authenticate(callback) { - return oauth.authenticate(function() { + return oauth.authenticate(function(err, res) { event.auth(); - if (callback) callback(); + if (callback) callback(err, res); }); } diff --git a/js/id/id.js b/js/id/id.js index 9c1f8196a..a58dfafb2 100644 --- a/js/id/id.js +++ b/js/id/id.js @@ -96,7 +96,7 @@ window.iD = function(container) { })) > 0; if (has_changes) { - connection.authenticate(function() { + connection.authenticate(function(err) { var modal = iD.modal(); modal.select('.content') .classed('commit-modal', true) @@ -108,17 +108,8 @@ window.iD = function(container) { .on('save', save)); }); } else { - var modal = iD.modal(); - modal.select('.modal').classed('modal-alert', true); - modal.select('.content') - .append('p') + iD.confirm().select('.description') .text('You don\'t have any changes to save.'); - modal.select('.content') - .append('button') - .text('OK') - .on('click', function() { - modal.remove(); - }); } }); diff --git a/js/id/oauth.js b/js/id/oauth.js index 874800a9f..366b4e12f 100644 --- a/js/id/oauth.js +++ b/js/id/oauth.js @@ -57,8 +57,8 @@ iD.OAuth = function() { oauth.authenticate = function(callback) { if (oauth.authenticated()) return callback(); - oauth.logout(); + oauth.logout(); o = timenonce(o); var url = baseurl + '/oauth/request_token'; @@ -66,9 +66,14 @@ iD.OAuth = function() { ohauth.baseString('POST', url, o)); var l = iD.loading('contacting openstreetmap...'); + ohauth.xhr('POST', url, o, null, {}, function(err, xhr) { + if (err) callback(err); l.remove(); - var resp = ohauth.stringQs(xhr.response); + authorize(ohauth.stringQs(xhr.response)); + }); + + function authorize(resp) { token('oauth_request_token_secret', resp.oauth_token_secret); var modal = iD.modal(); modal @@ -82,26 +87,32 @@ iD.OAuth = function() { .on('load', function() { if (this.contentWindow.location.search) { var search = this.contentWindow.location.search, - oauth_token = ohauth.stringQs(search.slice(1)), - url = baseurl + '/oauth/access_token'; - o = timenonce(o); + oauth_token = ohauth.stringQs(search.slice(1)); modal.remove(); - - o.oauth_token = oauth_token.oauth_token; - var request_token_secret = token('oauth_request_token_secret'); - o.oauth_signature = ohauth.signature(oauth_secret, request_token_secret, - ohauth.baseString('POST', url, o)); - var l = iD.loading('contacting openstreetmap...'); - ohauth.xhr('POST', url, o, null, {}, function(err, xhr) { - l.remove(); - var access_token = ohauth.stringQs(xhr.response); - token('oauth_token', access_token.oauth_token); - token('oauth_token_secret', access_token.oauth_token_secret); - callback(); - }); + get_access_token(oauth_token); } }); - }); + } + + function get_access_token(oauth_token) { + var url = baseurl + '/oauth/access_token'; + o = timenonce(o); + + o.oauth_token = oauth_token.oauth_token; + var request_token_secret = token('oauth_request_token_secret'); + o.oauth_signature = ohauth.signature(oauth_secret, request_token_secret, + ohauth.baseString('POST', url, o)); + var l = iD.loading('contacting openstreetmap...'); + ohauth.xhr('POST', url, o, null, {}, function(err, xhr) { + if (err) callback(err); + l.remove(); + var access_token = ohauth.stringQs(xhr.response); + token('oauth_token', access_token.oauth_token); + token('oauth_token_secret', access_token.oauth_token_secret); + callback(); + }); + } + }; oauth.api = function(_) {