Fixing intro and friend's twitter/facebook connect once and for all.

This commit is contained in:
Samuel Clay 2012-08-10 19:20:08 -07:00
parent 335ccfa504
commit 1283092c5f
3 changed files with 64 additions and 16 deletions

View file

@ -89,9 +89,8 @@ _.extend(NEWSBLUR.ReaderFriends.prototype, {
this.profile = NEWSBLUR.assets.user_profile;
this.services = data.services;
if (!this.services['twitter'].syncing && !this.services['facebook'].syncing) {
clearInterval(this.sync_interval);
this.make_find_friends_and_services();
} else {
_.delay(_.bind(this.check_services_sync_status, this), 3000);
}
}, this));
},
@ -155,7 +154,10 @@ _.extend(NEWSBLUR.ReaderFriends.prototype, {
}
if (service_syncing) {
_.delay(_.bind(this.check_services_sync_status, this), 3000);
clearInterval(this.sync_interval);
this.sync_interval = setInterval(_.bind(function() {
this.check_services_sync_status();
}, this), 3000);
}
},
@ -278,6 +280,18 @@ _.extend(NEWSBLUR.ReaderFriends.prototype, {
var options = "location=0,status=0,width=800,height=500";
var url = "/oauth/" + service + "_connect";
this.connect_window = window.open(url, '_blank', options);
this.connect_window_timer = setInterval(_.bind(function() {
console.log(["post connect window?", this.connect_window, this.connect_window.closed, this.connect_window.location]);
try {
if (!this.connect_window ||
!this.connect_window.location ||
this.connect_window.closed) {
this.post_connect({});
}
} catch (err) {
this.post_connect({});
}
}, this), 1000);
},
disconnect: function(service) {
@ -291,6 +305,7 @@ _.extend(NEWSBLUR.ReaderFriends.prototype, {
},
post_connect: function(data) {
clearInterval(this.connect_window_timer);
$('.NB-error', this.$modal).remove();
if (data.error) {
var $error = $.make('div', { className: 'NB-error' }, [

View file

@ -243,7 +243,10 @@ _.extend(NEWSBLUR.ReaderIntro.prototype, {
}
if (service_syncing) {
_.delay(_.bind(this.fetch_friends, this), 3000);
clearInterval(this.sync_interval);
this.sync_interval = setInterval(_.bind(function() {
this.fetch_friends();
}, this), 3000);
}
},
@ -251,6 +254,18 @@ _.extend(NEWSBLUR.ReaderIntro.prototype, {
var options = "location=0,status=0,width=800,height=500";
var url = "/oauth/" + service + "_connect";
this.connect_window = window.open(url, '_blank', options);
this.connect_window_timer = setInterval(_.bind(function() {
console.log(["post connect window?", this.connect_window, this.connect_window.closed, this.connect_window.location]);
try {
if (!this.connect_window ||
!this.connect_window.location ||
this.connect_window.closed) {
this.post_connect({});
}
} catch (err) {
this.post_connect({});
}
}, this), 1000);
_gaq.push(['_trackEvent', 'reader_intro', 'Connect to ' + service.name + ' attempt']);
},
@ -268,6 +283,7 @@ _.extend(NEWSBLUR.ReaderIntro.prototype, {
post_connect: function(data) {
console.log(["Intro post_connect", data]);
clearInterval(this.connect_window_timer);
$('.NB-error', this.$modal).remove();
if (data.error) {
var $error = $.make('div', { className: 'NB-error' }, [
@ -342,6 +358,7 @@ _.extend(NEWSBLUR.ReaderIntro.prototype, {
this.show_twitter_follow_buttons();
}
clearInterval(this.sync_interval);
NEWSBLUR.assets.preference('intro_page', page_number);
_gaq.push(['_trackEvent', 'reader_intro', 'Page ' + this.page_number]);
},
@ -425,10 +442,24 @@ _.extend(NEWSBLUR.ReaderIntro.prototype, {
var options = "location=0,status=0,width=800,height=500";
var url = "/import/authorize?modal=true";
this.connect_window = window.open(url, '_blank', options);
this.connect_window_timer = setInterval(_.bind(function() {
console.log(["post connect window?", this.connect_window, this.connect_window.closed, this.connect_window.location]);
try {
if (!this.connect_window ||
!this.connect_window.location ||
this.connect_window.closed) {
this.start_import_from_google_reader({});
}
} catch (err) {
this.start_import_from_google_reader({});
}
}, this), 1000);
NEWSBLUR.reader.flags.importing_from_google_reader = true;
},
start_import_from_google_reader: function(data) {
clearInterval(this.connect_window_timer);
var $error = $('.NB-intro-gitgoogle .NB-error', this.$modal);
var $loading = $('.NB-intro-imports-progress .NB-loading', this.$modal);
if (data && data.error) {

View file

@ -37,41 +37,42 @@
window.console = {};
window.console.log = function() {};
}
var opener = parent && parent.window.opener || window.opener;
var next = "{{ next|safe }}";
if (next) {
console.log(["Forwarding to next", next]);
setTimeout(function() {
window.location.href = next;
}, 1000);
} else if (window.opener && window.opener.NEWSBLUR) {
console.log(["Found opener", window.opener.NEWSBLUR]);
if (window.opener.NEWSBLUR.reader.flags.importing_from_google_reader) {
} else if (opener && opener.NEWSBLUR) {
console.log(["Found opener", opener.NEWSBLUR]);
if (opener.NEWSBLUR.reader.flags.importing_from_google_reader) {
console.log(['Importing from Reader']);
if (window.opener.NEWSBLUR.intro) {
if (opener.NEWSBLUR.intro) {
console.log(['Using Intro dialog']);
window.opener.NEWSBLUR.intro.start_import_from_google_reader({
opener.NEWSBLUR.intro.start_import_from_google_reader({
{% if error %}
'error': "{{ error }}",
{% endif %}
});
} else {
console.log(['Using some other dialog']);
window.opener.NEWSBLUR.reader.post_google_reader_connect({
opener.NEWSBLUR.reader.post_google_reader_connect({
{% if error %}
'error': "{{ error }}",
{% endif %}
});
}
} else if (window.opener.NEWSBLUR.intro) {
} else if (opener.NEWSBLUR.intro) {
console.log(['Connecting through intro']);
window.opener.NEWSBLUR.intro.post_connect({
opener.NEWSBLUR.intro.post_connect({
{% if error %}
'error': "{{ error }}",
{% endif %}
});
} else if (window.opener.NEWSBLUR.reader_friends) {
} else if (opener.NEWSBLUR.reader_friends) {
console.log(["Connecting through friends dialog"]);
window.opener.NEWSBLUR.reader_friends.post_connect({
opener.NEWSBLUR.reader_friends.post_connect({
{% if error %}
'error': "{{ error }}",
{% endif %}
@ -79,8 +80,9 @@
}
window.close();
} else {
console.log(["No opener, directing to /", window.opener]);
window.location.href = "/";
console.log(["No opener, directing to /", opener]);
window.close();
// window.location.href = "/";
}
</script>
</head>