Fix ThreadUpdater timing out due to nodes not existing.

This commit is contained in:
Zixaphir 2013-05-03 14:38:37 -07:00
parent 49585245ea
commit 057c7af8cc
4 changed files with 51 additions and 47 deletions

View File

@ -6848,7 +6848,7 @@
value: Conf['Interval']
}));
$.on(window, 'online offline', ThreadUpdater.cb.online);
$.on(d, 'QRPostSuccessful', ThreadUpdater.cb.post);
$.on(d, 'QRPostSuccessful', ThreadUpdater.cb.checkpost);
$.on(d, 'visibilitychange', ThreadUpdater.cb.visibility);
return ThreadUpdater.cb.online();
},
@ -6881,8 +6881,8 @@
}
},
checkpost: function() {
if (!(g.DEAD || ThreadUpdater.foundPost || ThreadUpdater.checkPostCount >= 10)) {
return setTimeout(ThreadUpdater.update, ++ThreadUpdater.checkPostCount * 500);
if (!(g.DEAD || ThreadUpdater.foundPost || ThreadUpdater.checkPostCount >= 5)) {
return setTimeout(ThreadUpdater.update, ++ThreadUpdater.checkPostCount * $.SECOND);
}
ThreadUpdater.checkPostCount = 0;
delete ThreadUpdater.foundPost;
@ -6960,7 +6960,7 @@
ThreadUpdater.set('status', text, klass);
}
if (ThreadUpdater.postID) {
ThreadUpdater.cb.checkpost(this.status);
ThreadUpdater.cb.checkpost();
}
return delete ThreadUpdater.req;
}
@ -7061,7 +7061,7 @@
return $.after(root, [$.tn(' '), icon]);
},
parse: function(postObjects) {
var ID, OP, count, deletedFiles, deletedPosts, files, index, key, node, num, post, postObject, posts, scroll, _i, _len, _ref;
var ID, OP, count, deletedFiles, deletedPosts, files, index, key, node, num, post, postObject, posts, root, scroll, _i, _len, _ref;
OP = postObjects[0];
Build.spoilerRange[ThreadUpdater.thread.board] = OP.custom_spoiler;
@ -7102,10 +7102,8 @@
post.kill(true);
deletedFiles.push(post);
}
if (ThreadUpdater.postID) {
if (ID === ThreadUpdater.postID) {
ThreadUpdater.foundPost = true;
}
if (ThreadUpdater.postID && ThreadUpdater.postID === ID) {
ThreadUpdater.foundPost = true;
}
}
if (!count) {
@ -7130,19 +7128,22 @@
if (!posts.hasOwnProperty(key)) {
continue;
}
root = post.nodes.root;
if (post.cb) {
if (!post.cb.call(post)) {
$.add(ThreadUpdater.root, post.nodes.root);
$.add(ThreadUpdater.root, root);
}
} else {
$.add(ThreadUpdater.root, post.nodes.root);
$.add(ThreadUpdater.root, root);
}
}
if (scroll) {
if (Conf['Bottom Scroll']) {
doc.scrollTop = d.body.clientHeight;
} else {
Header.scrollToPost(nodes[0]);
if (root) {
Header.scrollToPost(root);
}
}
}
$.queueTask(function() {

View File

@ -6869,7 +6869,7 @@
value: Conf['Interval']
}));
$.on(window, 'online offline', ThreadUpdater.cb.online);
$.on(d, 'QRPostSuccessful', ThreadUpdater.cb.post);
$.on(d, 'QRPostSuccessful', ThreadUpdater.cb.checkpost);
$.on(d, 'visibilitychange', ThreadUpdater.cb.visibility);
return ThreadUpdater.cb.online();
},
@ -6902,8 +6902,8 @@
}
},
checkpost: function() {
if (!(g.DEAD || ThreadUpdater.foundPost || ThreadUpdater.checkPostCount >= 10)) {
return setTimeout(ThreadUpdater.update, ++ThreadUpdater.checkPostCount * 500);
if (!(g.DEAD || ThreadUpdater.foundPost || ThreadUpdater.checkPostCount >= 5)) {
return setTimeout(ThreadUpdater.update, ++ThreadUpdater.checkPostCount * $.SECOND);
}
ThreadUpdater.checkPostCount = 0;
delete ThreadUpdater.foundPost;
@ -6981,7 +6981,7 @@
ThreadUpdater.set('status', text, klass);
}
if (ThreadUpdater.postID) {
ThreadUpdater.cb.checkpost(this.status);
ThreadUpdater.cb.checkpost();
}
return delete ThreadUpdater.req;
}
@ -7082,7 +7082,7 @@
return $.after(root, [$.tn(' '), icon]);
},
parse: function(postObjects) {
var ID, OP, count, deletedFiles, deletedPosts, files, index, key, node, num, post, postObject, posts, scroll, _i, _len, _ref;
var ID, OP, count, deletedFiles, deletedPosts, files, index, key, node, num, post, postObject, posts, root, scroll, _i, _len, _ref;
OP = postObjects[0];
Build.spoilerRange[ThreadUpdater.thread.board] = OP.custom_spoiler;
@ -7123,10 +7123,8 @@
post.kill(true);
deletedFiles.push(post);
}
if (ThreadUpdater.postID) {
if (ID === ThreadUpdater.postID) {
ThreadUpdater.foundPost = true;
}
if (ThreadUpdater.postID && ThreadUpdater.postID === ID) {
ThreadUpdater.foundPost = true;
}
}
if (!count) {
@ -7151,19 +7149,22 @@
if (!posts.hasOwnProperty(key)) {
continue;
}
root = post.nodes.root;
if (post.cb) {
if (!post.cb.call(post)) {
$.add(ThreadUpdater.root, post.nodes.root);
$.add(ThreadUpdater.root, root);
}
} else {
$.add(ThreadUpdater.root, post.nodes.root);
$.add(ThreadUpdater.root, root);
}
}
if (scroll) {
if (Conf['Bottom Scroll']) {
doc.scrollTop = d.body.clientHeight;
} else {
Header.scrollToPost(nodes[0]);
if (root) {
Header.scrollToPost(root);
}
}
}
$.queueTask(function() {

View File

@ -6847,7 +6847,7 @@
value: Conf['Interval']
}));
$.on(window, 'online offline', ThreadUpdater.cb.online);
$.on(d, 'QRPostSuccessful', ThreadUpdater.cb.post);
$.on(d, 'QRPostSuccessful', ThreadUpdater.cb.checkpost);
$.on(d, 'visibilitychange', ThreadUpdater.cb.visibility);
return ThreadUpdater.cb.online();
},
@ -6880,8 +6880,8 @@
}
},
checkpost: function() {
if (!(g.DEAD || ThreadUpdater.foundPost || ThreadUpdater.checkPostCount >= 10)) {
return setTimeout(ThreadUpdater.update, ++ThreadUpdater.checkPostCount * 500);
if (!(g.DEAD || ThreadUpdater.foundPost || ThreadUpdater.checkPostCount >= 5)) {
return setTimeout(ThreadUpdater.update, ++ThreadUpdater.checkPostCount * $.SECOND);
}
ThreadUpdater.checkPostCount = 0;
delete ThreadUpdater.foundPost;
@ -6959,7 +6959,7 @@
ThreadUpdater.set('status', text, klass);
}
if (ThreadUpdater.postID) {
ThreadUpdater.cb.checkpost(this.status);
ThreadUpdater.cb.checkpost();
}
return delete ThreadUpdater.req;
}
@ -7060,7 +7060,7 @@
return $.after(root, [$.tn(' '), icon]);
},
parse: function(postObjects) {
var ID, OP, count, deletedFiles, deletedPosts, files, index, key, node, num, post, postObject, posts, scroll, _i, _len, _ref;
var ID, OP, count, deletedFiles, deletedPosts, files, index, key, node, num, post, postObject, posts, root, scroll, _i, _len, _ref;
OP = postObjects[0];
Build.spoilerRange[ThreadUpdater.thread.board] = OP.custom_spoiler;
@ -7101,10 +7101,8 @@
post.kill(true);
deletedFiles.push(post);
}
if (ThreadUpdater.postID) {
if (ID === ThreadUpdater.postID) {
ThreadUpdater.foundPost = true;
}
if (ThreadUpdater.postID && ThreadUpdater.postID === ID) {
ThreadUpdater.foundPost = true;
}
}
if (!count) {
@ -7129,19 +7127,22 @@
if (!posts.hasOwnProperty(key)) {
continue;
}
root = post.nodes.root;
if (post.cb) {
if (!post.cb.call(post)) {
$.add(ThreadUpdater.root, post.nodes.root);
$.add(ThreadUpdater.root, root);
}
} else {
$.add(ThreadUpdater.root, post.nodes.root);
$.add(ThreadUpdater.root, root);
}
}
if (scroll) {
if (Conf['Bottom Scroll']) {
d.body.scrollTop = d.body.clientHeight;
} else {
Header.scrollToPost(nodes[0]);
if (root) {
Header.scrollToPost(root);
}
}
}
$.queueTask(function() {

View File

@ -68,7 +68,7 @@ ThreadUpdater =
ThreadUpdater.cb.interval.call $.el 'input', value: Conf['Interval']
$.on window, 'online offline', ThreadUpdater.cb.online
$.on d, 'QRPostSuccessful', ThreadUpdater.cb.post
$.on d, 'QRPostSuccessful', ThreadUpdater.cb.checkpost
$.on d, 'visibilitychange', ThreadUpdater.cb.visibility
ThreadUpdater.cb.online()
@ -84,7 +84,7 @@ ThreadUpdater =
if ThreadUpdater.online = navigator.onLine
ThreadUpdater.outdateCount = 0
ThreadUpdater.set 'timer', ThreadUpdater.getInterval()
ThreadUpdater.update()
ThreadUpdater.set 'status', null, null
@ -97,8 +97,8 @@ ThreadUpdater =
ThreadUpdater.outdateCount = 0
setTimeout ThreadUpdater.update, 1000 if ThreadUpdater.seconds > 2
checkpost: ->
unless g.DEAD or ThreadUpdater.foundPost or ThreadUpdater.checkPostCount >= 10
return setTimeout ThreadUpdater.update, ++ThreadUpdater.checkPostCount * 500
unless g.DEAD or ThreadUpdater.foundPost or ThreadUpdater.checkPostCount >= 5
return setTimeout ThreadUpdater.update, ++ThreadUpdater.checkPostCount * $.SECOND
ThreadUpdater.checkPostCount = 0
delete ThreadUpdater.foundPost
delete ThreadUpdater.postID
@ -158,7 +158,7 @@ ThreadUpdater =
ThreadUpdater.set 'status', text, klass
if ThreadUpdater.postID
ThreadUpdater.cb.checkpost @status
ThreadUpdater.cb.checkpost()
delete ThreadUpdater.req
@ -280,9 +280,9 @@ ThreadUpdater =
else if post.file and !post.file.isDead and not files.contains ID
post.kill true
deletedFiles.push post
if ThreadUpdater.postID
if ID is ThreadUpdater.postID
ThreadUpdater.foundPost = true
if ThreadUpdater.postID and ThreadUpdater.postID is ID
ThreadUpdater.foundPost = true
unless count
ThreadUpdater.set 'status', null, null
@ -304,17 +304,18 @@ ThreadUpdater =
for key, post of posts
continue unless posts.hasOwnProperty key
root = post.nodes.root
if post.cb
unless post.cb.call post
$.add ThreadUpdater.root, post.nodes.root
$.add ThreadUpdater.root, root
else
$.add ThreadUpdater.root, post.nodes.root
$.add ThreadUpdater.root, root
if scroll
if Conf['Bottom Scroll']
<% if (type === 'crx') { %>d.body<% } else { %>doc<% } %>.scrollTop = d.body.clientHeight
else
Header.scrollToPost nodes[0]
Header.scrollToPost root if root
$.queueTask ->
# Enable 4chan features.