Fix updating the context of threads and index

This commit is contained in:
Zixaphir 2014-01-18 14:07:56 -07:00
parent 7d4825dce0
commit e7b1c52dbf
4 changed files with 43 additions and 35 deletions

View File

@ -2715,19 +2715,20 @@
Main.callbackNodes(Post, posts); Main.callbackNodes(Post, posts);
return $.event('IndexRefresh'); return $.event('IndexRefresh');
}, },
buildReplies: function(threadRoots) { buildReplies: function(threads) {
var data, err, errors, i, lastReplies, node, nodes, post, posts, thread, threadRoot, _i, _j, _len, _len1; var errors, posts;
posts = []; posts = [];
for (_i = 0, _len = threadRoots.length; _i < _len; _i++) { errors = null;
threadRoot = threadRoots[_i]; threads.forEach(function(thread) {
thread = Get.threadFromRoot(threadRoot); var data, err, i, lastReplies, node, nodes, post, threadRoot, _i, _len;
threadRoot = thread.OP.nodes.root.parentElement;
i = Index.liveThreadIDs.indexOf(thread.ID); i = Index.liveThreadIDs.indexOf(thread.ID);
if (!(lastReplies = Index.liveThreadData[i].last_replies)) { if (!(lastReplies = Index.liveThreadData[i].last_replies)) {
continue; return;
} }
nodes = []; nodes = [];
for (_j = 0, _len1 = lastReplies.length; _j < _len1; _j++) { for (_i = 0, _len = lastReplies.length; _i < _len; _i++) {
data = lastReplies[_j]; data = lastReplies[_i];
if (post = thread.posts[data.no]) { if (post = thread.posts[data.no]) {
nodes.push(post.nodes.root); nodes.push(post.nodes.root);
continue; continue;
@ -2746,8 +2747,8 @@
}); });
} }
} }
$.add(threadRoot, nodes); return $.add(threadRoot, nodes);
} });
if (errors) { if (errors) {
Main.handleErrors(errors); Main.handleErrors(errors);
} }
@ -2852,7 +2853,7 @@
$.rmAll(Index.root); $.rmAll(Index.root);
$.rmAll(Header.hover); $.rmAll(Header.hover);
if (Conf['Show Replies']) { if (Conf['Show Replies']) {
Index.buildReplies(nodes); Index.buildReplies(g.BOARD.threads);
} }
return Index.buildStructure(nodes); return Index.buildStructure(nodes);
}, },
@ -12293,9 +12294,11 @@
pageNum = view; pageNum = view;
view = 'index'; view = 'index';
} }
Navigate.updateContext(view); if (view === g.VIEW && boardID === g.BOARD.ID) {
if (!(view === g.VIEW && boardID === g.BOARD.ID)) { Navigate.updateContext(view);
} else {
Navigate.disconnect(); Navigate.disconnect();
Navigate.updateContext(view);
Navigate.clean(); Navigate.clean();
Navigate.reconnect(); Navigate.reconnect();
} }

View File

@ -2725,19 +2725,20 @@
Main.callbackNodes(Post, posts); Main.callbackNodes(Post, posts);
return $.event('IndexRefresh'); return $.event('IndexRefresh');
}, },
buildReplies: function(threadRoots) { buildReplies: function(threads) {
var data, err, errors, i, lastReplies, node, nodes, post, posts, thread, threadRoot, _i, _j, _len, _len1; var errors, posts;
posts = []; posts = [];
for (_i = 0, _len = threadRoots.length; _i < _len; _i++) { errors = null;
threadRoot = threadRoots[_i]; threads.forEach(function(thread) {
thread = Get.threadFromRoot(threadRoot); var data, err, i, lastReplies, node, nodes, post, threadRoot, _i, _len;
threadRoot = thread.OP.nodes.root.parentElement;
i = Index.liveThreadIDs.indexOf(thread.ID); i = Index.liveThreadIDs.indexOf(thread.ID);
if (!(lastReplies = Index.liveThreadData[i].last_replies)) { if (!(lastReplies = Index.liveThreadData[i].last_replies)) {
continue; return;
} }
nodes = []; nodes = [];
for (_j = 0, _len1 = lastReplies.length; _j < _len1; _j++) { for (_i = 0, _len = lastReplies.length; _i < _len; _i++) {
data = lastReplies[_j]; data = lastReplies[_i];
if (post = thread.posts[data.no]) { if (post = thread.posts[data.no]) {
nodes.push(post.nodes.root); nodes.push(post.nodes.root);
continue; continue;
@ -2756,8 +2757,8 @@
}); });
} }
} }
$.add(threadRoot, nodes); return $.add(threadRoot, nodes);
} });
if (errors) { if (errors) {
Main.handleErrors(errors); Main.handleErrors(errors);
} }
@ -2862,7 +2863,7 @@
$.rmAll(Index.root); $.rmAll(Index.root);
$.rmAll(Header.hover); $.rmAll(Header.hover);
if (Conf['Show Replies']) { if (Conf['Show Replies']) {
Index.buildReplies(nodes); Index.buildReplies(g.BOARD.threads);
} }
return Index.buildStructure(nodes); return Index.buildStructure(nodes);
}, },
@ -12282,9 +12283,11 @@
pageNum = view; pageNum = view;
view = 'index'; view = 'index';
} }
Navigate.updateContext(view); if (view === g.VIEW && boardID === g.BOARD.ID) {
if (!(view === g.VIEW && boardID === g.BOARD.ID)) { Navigate.updateContext(view);
} else {
Navigate.disconnect(); Navigate.disconnect();
Navigate.updateContext(view);
Navigate.clean(); Navigate.clean();
Navigate.reconnect(); Navigate.reconnect();
} }

View File

@ -349,12 +349,13 @@ Index =
Main.callbackNodes Post, posts Main.callbackNodes Post, posts
$.event 'IndexRefresh' $.event 'IndexRefresh'
buildReplies: (threadRoots) -> buildReplies: (threads) ->
posts = [] posts = []
for threadRoot in threadRoots errors = null
thread = Get.threadFromRoot threadRoot threads.forEach (thread) ->
threadRoot = thread.OP.nodes.root.parentElement
i = Index.liveThreadIDs.indexOf thread.ID i = Index.liveThreadIDs.indexOf thread.ID
continue unless lastReplies = Index.liveThreadData[i].last_replies return unless lastReplies = Index.liveThreadData[i].last_replies
nodes = [] nodes = []
for data in lastReplies for data in lastReplies
if post = thread.posts[data.no] if post = thread.posts[data.no]
@ -436,7 +437,7 @@ Index =
nodes.push target.data nodes.push target.data
$.rmAll Index.root $.rmAll Index.root
$.rmAll Header.hover $.rmAll Header.hover
Index.buildReplies nodes if Conf['Show Replies'] Index.buildReplies g.BOARD.threads if Conf['Show Replies']
Index.buildStructure nodes Index.buildStructure nodes
buildSinglePage: (pageNum) -> buildSinglePage: (pageNum) ->

View File

@ -204,10 +204,11 @@ Navigate =
pageNum = view pageNum = view
view = 'index' # path is "/boardID/". See the problem? view = 'index' # path is "/boardID/". See the problem?
Navigate.updateContext view if view is g.VIEW and boardID is g.BOARD.ID
Navigate.updateContext view
unless view is g.VIEW and boardID is g.BOARD.ID # We've navigated somewhere we weren't before! else # We've navigated somewhere we weren't before!
Navigate.disconnect() Navigate.disconnect()
Navigate.updateContext view
Navigate.clean() Navigate.clean()
Navigate.reconnect() Navigate.reconnect()