diff --git a/CHANGELOG.md b/CHANGELOG.md index 1f200d24f..f649ba5b0 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,9 @@ The links to individual versions below are to copies of the script with the upda ### v1.10.4 +**v1.10.4.3** *(2015-03-10)* - [[Firefox](https://raw.githubusercontent.com/ccd0/4chan-x/1.10.4.3/builds/4chan-X-noupdate.user.js "Firefox version")] [[Chromium](https://raw.githubusercontent.com/ccd0/4chan-x/1.10.4.3/builds/4chan-X-noupdate.crx "Chromium version")] +- Fix false-positive deleted posts again. + **v1.10.4.2** *(2015-03-09)* - [[Firefox](https://raw.githubusercontent.com/ccd0/4chan-x/1.10.4.2/builds/4chan-X-noupdate.user.js "Firefox version")] [[Chromium](https://raw.githubusercontent.com/ccd0/4chan-x/1.10.4.2/builds/4chan-X-noupdate.crx "Chromium version")] - Fix bugs when posts are previewed before they appear in the index (by links to future posts). diff --git a/builds/4chan-X-beta.crx b/builds/4chan-X-beta.crx index 23a1440ed..4d24d829b 100644 Binary files a/builds/4chan-X-beta.crx and b/builds/4chan-X-beta.crx differ diff --git a/builds/4chan-X-beta.meta.js b/builds/4chan-X-beta.meta.js index a377b6de8..f4d69c1a4 100644 --- a/builds/4chan-X-beta.meta.js +++ b/builds/4chan-X-beta.meta.js @@ -1,6 +1,6 @@ // ==UserScript== // @name 4chan X beta -// @version 1.10.4.2 +// @version 1.10.4.3 // @minGMVer 1.14 // @minFFVer 26 // @namespace 4chan-X diff --git a/builds/4chan-X-beta.user.js b/builds/4chan-X-beta.user.js index 5b095428b..fe98e6ac5 100644 --- a/builds/4chan-X-beta.user.js +++ b/builds/4chan-X-beta.user.js @@ -1,7 +1,7 @@ // Generated by CoffeeScript // ==UserScript== // @name 4chan X beta -// @version 1.10.4.2 +// @version 1.10.4.3 // @minGMVer 1.14 // @minFFVer 26 // @namespace 4chan-X @@ -395,7 +395,7 @@ doc = d.documentElement; g = { - VERSION: '1.10.4.2', + VERSION: '1.10.4.3', NAMESPACE: '4chan X.', NAME: '4chan X', FAQ: 'https://github.com/ccd0/4chan-x/wiki/Frequently-Asked-Questions', @@ -1419,6 +1419,35 @@ } }; + Post.prototype.resurrect = function() { + var clone, k, len1, len2, q, quotelink, ref, ref1, strong; + delete this.isDead; + $.rmClass(this.nodes.root, 'deleted-post'); + strong = $('strong.warning', this.nodes.info); + if (this.file && this.file.isDead) { + strong.textContent = '[File deleted]'; + } else { + $.rm(strong); + } + if (this.isClone) { + return; + } + ref = this.clones; + for (k = 0, len1 = ref.length; k < len1; k++) { + clone = ref[k]; + clone.resurrect(); + } + ref1 = Get.allQuotelinksLinkingTo(this); + for (q = 0, len2 = ref1.length; q < len2; q++) { + quotelink = ref1[q]; + if (!($.hasClass(quotelink, 'deadlink'))) { + continue; + } + quotelink.textContent = quotelink.textContent.replace('\u00A0(Dead)', ''); + $.rmClass(quotelink, 'deadlink'); + } + }; + Post.prototype.collect = function() { this.kill(); g.posts.rm(this.fullID); @@ -11894,6 +11923,9 @@ var fileCount, postCount; postCount = 0; fileCount = 0; + if (this.board.ID === 'f') { + fileCount++; + } this.posts.forEach(function(post) { postCount++; if (post.file) { @@ -12056,13 +12088,15 @@ node: function() { ThreadUpdater.thread = this; ThreadUpdater.root = this.OP.nodes.root.parentNode; - ThreadUpdater.lastPost = +this.posts.keys[this.posts.keys.length - 1]; ThreadUpdater.outdateCount = 0; ThreadUpdater.postIDs = []; ThreadUpdater.fileIDs = []; + if (this.board.ID === 'f') { + ThreadUpdater.fileIDs.push(this.ID); + } this.posts.forEach(function(post) { ThreadUpdater.postIDs.push(post.ID); - if (post.file && !post.file.isDead) { + if (post.file) { return ThreadUpdater.fileIDs.push(post.ID); } }); @@ -12283,18 +12317,17 @@ return new Notice('info', "The thread is " + change + ".", 30); }, parse: function(req) { - var ID, OP, board, count, deletedFiles, deletedPosts, files, firstPost, index, ipCountEl, k, lastModified, len1, len2, len3, len4, node, num, post, postObject, postObjects, posts, q, ref, ref1, ref2, scroll, thread, u, w; - lastModified = new Date(req.getResponseHeader('Last-Modified')); - if (ThreadUpdater.lastModified && lastModified < ThreadUpdater.lastModified) { - return; - } - ThreadUpdater.lastModified = lastModified; + var ID, OP, board, deletedFiles, deletedPosts, files, firstPost, index, ipCountEl, k, lastPost, len1, len2, len3, len4, newPosts, node, post, postObject, postObjects, posts, q, ref, ref1, ref2, ref3, scroll, thread, u, w; postObjects = req.response.posts; OP = postObjects[0]; thread = ThreadUpdater.thread; board = thread.board; + ref = ThreadUpdater.postIDs, lastPost = ref[ref.length - 1]; + if (postObjects[postObjects.length - 1].no < lastPost && new Date(req.getResponseHeader('Last-Modified')) - thread.posts[lastPost].info.date < 30 * $.SECOND) { + return; + } Build.spoilerRange[board] = OP.custom_spoiler; - thread.setStatus('Archived', !!+OP.archived); + thread.setStatus('Archived', !!OP.archived); ThreadUpdater.updateThreadStatus('Sticky', !!OP.sticky); ThreadUpdater.updateThreadStatus('Closed', !!OP.closed); thread.postLimit = !!OP.bumplimit; @@ -12305,28 +12338,32 @@ posts = []; index = []; files = []; - count = 0; + newPosts = []; for (k = 0, len1 = postObjects.length; k < len1; k++) { postObject = postObjects[k]; - num = postObject.no; - index.push(num); + ID = postObject.no; + index.push(ID); if (postObject.fsize) { - files.push(num); + files.push(ID); } - if (num <= ThreadUpdater.lastPost) { + if (ID <= lastPost) { + continue; + } + newPosts.push(board + "." + ID); + if ((post = thread.posts[ID]) && !post.isFetchedQuote) { + post.resurrect(); continue; } - count++; node = Build.postFromObject(postObject, board.ID); posts.push(new Post(node, thread, board)); - if (ThreadUpdater.postID === num) { + if (ThreadUpdater.postID === ID) { delete ThreadUpdater.postID; } } deletedPosts = []; - ref = ThreadUpdater.postIDs; - for (q = 0, len2 = ref.length; q < len2; q++) { - ID = ref[q]; + ref1 = ThreadUpdater.postIDs; + for (q = 0, len2 = ref1.length; q < len2; q++) { + ID = ref1[q]; if (!(indexOf.call(index, ID) < 0)) { continue; } @@ -12335,20 +12372,20 @@ } ThreadUpdater.postIDs = index; deletedFiles = []; - ref1 = ThreadUpdater.fileIDs; - for (u = 0, len3 = ref1.length; u < len3; u++) { - ID = ref1[u]; - if (!(!(indexOf.call(files, ID) >= 0 || (ref2 = board + "." + ID, indexOf.call(deletedPosts, ref2) >= 0)))) { + ref2 = ThreadUpdater.fileIDs; + for (u = 0, len3 = ref2.length; u < len3; u++) { + ID = ref2[u]; + if (!(!(indexOf.call(files, ID) >= 0 || (ref3 = board + "." + ID, indexOf.call(deletedPosts, ref3) >= 0)))) { continue; } thread.posts[ID].kill(true); deletedFiles.push(board + "." + ID); } ThreadUpdater.fileIDs = files; - if (!count) { + if (!posts.length) { ThreadUpdater.set('status', ''); } else { - ThreadUpdater.set('status', "+" + count, 'new'); + ThreadUpdater.set('status', "+" + posts.length, 'new'); ThreadUpdater.outdateCount = 0; if (Conf['Beep'] && d.hidden && Unread.posts && !Unread.posts.size) { if (!ThreadUpdater.audio) { @@ -12358,7 +12395,6 @@ } ThreadUpdater.audio.play(); } - ThreadUpdater.lastPost = posts[count - 1].ID; Main.callbackNodes(Post, posts); scroll = Conf['Auto Scroll'] && ThreadUpdater.scrollBG() && ThreadUpdater.root.getBoundingClientRect().bottom - doc.clientHeight < 25; firstPost = null; @@ -12388,19 +12424,11 @@ return $.event('ThreadUpdate', { 404: false, threadID: thread.fullID, - newPosts: (function() { - var len5, results, y; - results = []; - for (y = 0, len5 = posts.length; y < len5; y++) { - post = posts[y]; - results.push(post.fullID); - } - return results; - })(), + newPosts: newPosts, deletedPosts: deletedPosts, deletedFiles: deletedFiles, postCount: OP.replies + 1, - fileCount: OP.images + (!!thread.OP.file && !thread.OP.file.isDead), + fileCount: OP.images + !!OP.fsize, ipCount: OP.unique_ips }); } diff --git a/builds/4chan-X-noupdate.crx b/builds/4chan-X-noupdate.crx index 38f9e7650..1726380a3 100644 Binary files a/builds/4chan-X-noupdate.crx and b/builds/4chan-X-noupdate.crx differ diff --git a/builds/4chan-X-noupdate.user.js b/builds/4chan-X-noupdate.user.js index 42cdcea47..0cab7c29f 100644 --- a/builds/4chan-X-noupdate.user.js +++ b/builds/4chan-X-noupdate.user.js @@ -1,7 +1,7 @@ // Generated by CoffeeScript // ==UserScript== // @name 4chan X -// @version 1.10.4.2 +// @version 1.10.4.3 // @minGMVer 1.14 // @minFFVer 26 // @namespace 4chan-X @@ -394,7 +394,7 @@ doc = d.documentElement; g = { - VERSION: '1.10.4.2', + VERSION: '1.10.4.3', NAMESPACE: '4chan X.', NAME: '4chan X', FAQ: 'https://github.com/ccd0/4chan-x/wiki/Frequently-Asked-Questions', @@ -1418,6 +1418,35 @@ } }; + Post.prototype.resurrect = function() { + var clone, k, len1, len2, q, quotelink, ref, ref1, strong; + delete this.isDead; + $.rmClass(this.nodes.root, 'deleted-post'); + strong = $('strong.warning', this.nodes.info); + if (this.file && this.file.isDead) { + strong.textContent = '[File deleted]'; + } else { + $.rm(strong); + } + if (this.isClone) { + return; + } + ref = this.clones; + for (k = 0, len1 = ref.length; k < len1; k++) { + clone = ref[k]; + clone.resurrect(); + } + ref1 = Get.allQuotelinksLinkingTo(this); + for (q = 0, len2 = ref1.length; q < len2; q++) { + quotelink = ref1[q]; + if (!($.hasClass(quotelink, 'deadlink'))) { + continue; + } + quotelink.textContent = quotelink.textContent.replace('\u00A0(Dead)', ''); + $.rmClass(quotelink, 'deadlink'); + } + }; + Post.prototype.collect = function() { this.kill(); g.posts.rm(this.fullID); @@ -11893,6 +11922,9 @@ var fileCount, postCount; postCount = 0; fileCount = 0; + if (this.board.ID === 'f') { + fileCount++; + } this.posts.forEach(function(post) { postCount++; if (post.file) { @@ -12055,13 +12087,15 @@ node: function() { ThreadUpdater.thread = this; ThreadUpdater.root = this.OP.nodes.root.parentNode; - ThreadUpdater.lastPost = +this.posts.keys[this.posts.keys.length - 1]; ThreadUpdater.outdateCount = 0; ThreadUpdater.postIDs = []; ThreadUpdater.fileIDs = []; + if (this.board.ID === 'f') { + ThreadUpdater.fileIDs.push(this.ID); + } this.posts.forEach(function(post) { ThreadUpdater.postIDs.push(post.ID); - if (post.file && !post.file.isDead) { + if (post.file) { return ThreadUpdater.fileIDs.push(post.ID); } }); @@ -12282,18 +12316,17 @@ return new Notice('info', "The thread is " + change + ".", 30); }, parse: function(req) { - var ID, OP, board, count, deletedFiles, deletedPosts, files, firstPost, index, ipCountEl, k, lastModified, len1, len2, len3, len4, node, num, post, postObject, postObjects, posts, q, ref, ref1, ref2, scroll, thread, u, w; - lastModified = new Date(req.getResponseHeader('Last-Modified')); - if (ThreadUpdater.lastModified && lastModified < ThreadUpdater.lastModified) { - return; - } - ThreadUpdater.lastModified = lastModified; + var ID, OP, board, deletedFiles, deletedPosts, files, firstPost, index, ipCountEl, k, lastPost, len1, len2, len3, len4, newPosts, node, post, postObject, postObjects, posts, q, ref, ref1, ref2, ref3, scroll, thread, u, w; postObjects = req.response.posts; OP = postObjects[0]; thread = ThreadUpdater.thread; board = thread.board; + ref = ThreadUpdater.postIDs, lastPost = ref[ref.length - 1]; + if (postObjects[postObjects.length - 1].no < lastPost && new Date(req.getResponseHeader('Last-Modified')) - thread.posts[lastPost].info.date < 30 * $.SECOND) { + return; + } Build.spoilerRange[board] = OP.custom_spoiler; - thread.setStatus('Archived', !!+OP.archived); + thread.setStatus('Archived', !!OP.archived); ThreadUpdater.updateThreadStatus('Sticky', !!OP.sticky); ThreadUpdater.updateThreadStatus('Closed', !!OP.closed); thread.postLimit = !!OP.bumplimit; @@ -12304,28 +12337,32 @@ posts = []; index = []; files = []; - count = 0; + newPosts = []; for (k = 0, len1 = postObjects.length; k < len1; k++) { postObject = postObjects[k]; - num = postObject.no; - index.push(num); + ID = postObject.no; + index.push(ID); if (postObject.fsize) { - files.push(num); + files.push(ID); } - if (num <= ThreadUpdater.lastPost) { + if (ID <= lastPost) { + continue; + } + newPosts.push(board + "." + ID); + if ((post = thread.posts[ID]) && !post.isFetchedQuote) { + post.resurrect(); continue; } - count++; node = Build.postFromObject(postObject, board.ID); posts.push(new Post(node, thread, board)); - if (ThreadUpdater.postID === num) { + if (ThreadUpdater.postID === ID) { delete ThreadUpdater.postID; } } deletedPosts = []; - ref = ThreadUpdater.postIDs; - for (q = 0, len2 = ref.length; q < len2; q++) { - ID = ref[q]; + ref1 = ThreadUpdater.postIDs; + for (q = 0, len2 = ref1.length; q < len2; q++) { + ID = ref1[q]; if (!(indexOf.call(index, ID) < 0)) { continue; } @@ -12334,20 +12371,20 @@ } ThreadUpdater.postIDs = index; deletedFiles = []; - ref1 = ThreadUpdater.fileIDs; - for (u = 0, len3 = ref1.length; u < len3; u++) { - ID = ref1[u]; - if (!(!(indexOf.call(files, ID) >= 0 || (ref2 = board + "." + ID, indexOf.call(deletedPosts, ref2) >= 0)))) { + ref2 = ThreadUpdater.fileIDs; + for (u = 0, len3 = ref2.length; u < len3; u++) { + ID = ref2[u]; + if (!(!(indexOf.call(files, ID) >= 0 || (ref3 = board + "." + ID, indexOf.call(deletedPosts, ref3) >= 0)))) { continue; } thread.posts[ID].kill(true); deletedFiles.push(board + "." + ID); } ThreadUpdater.fileIDs = files; - if (!count) { + if (!posts.length) { ThreadUpdater.set('status', ''); } else { - ThreadUpdater.set('status', "+" + count, 'new'); + ThreadUpdater.set('status', "+" + posts.length, 'new'); ThreadUpdater.outdateCount = 0; if (Conf['Beep'] && d.hidden && Unread.posts && !Unread.posts.size) { if (!ThreadUpdater.audio) { @@ -12357,7 +12394,6 @@ } ThreadUpdater.audio.play(); } - ThreadUpdater.lastPost = posts[count - 1].ID; Main.callbackNodes(Post, posts); scroll = Conf['Auto Scroll'] && ThreadUpdater.scrollBG() && ThreadUpdater.root.getBoundingClientRect().bottom - doc.clientHeight < 25; firstPost = null; @@ -12387,19 +12423,11 @@ return $.event('ThreadUpdate', { 404: false, threadID: thread.fullID, - newPosts: (function() { - var len5, results, y; - results = []; - for (y = 0, len5 = posts.length; y < len5; y++) { - post = posts[y]; - results.push(post.fullID); - } - return results; - })(), + newPosts: newPosts, deletedPosts: deletedPosts, deletedFiles: deletedFiles, postCount: OP.replies + 1, - fileCount: OP.images + (!!thread.OP.file && !thread.OP.file.isDead), + fileCount: OP.images + !!OP.fsize, ipCount: OP.unique_ips }); } diff --git a/builds/4chan-X.crx b/builds/4chan-X.crx index fa5c6c64d..322597915 100644 Binary files a/builds/4chan-X.crx and b/builds/4chan-X.crx differ diff --git a/builds/4chan-X.meta.js b/builds/4chan-X.meta.js index db0936797..ada454a7a 100644 --- a/builds/4chan-X.meta.js +++ b/builds/4chan-X.meta.js @@ -1,6 +1,6 @@ // ==UserScript== // @name 4chan X -// @version 1.10.4.2 +// @version 1.10.4.3 // @minGMVer 1.14 // @minFFVer 26 // @namespace 4chan-X diff --git a/builds/4chan-X.user.js b/builds/4chan-X.user.js index 2c3f942f8..950bb52f4 100644 --- a/builds/4chan-X.user.js +++ b/builds/4chan-X.user.js @@ -1,7 +1,7 @@ // Generated by CoffeeScript // ==UserScript== // @name 4chan X -// @version 1.10.4.2 +// @version 1.10.4.3 // @minGMVer 1.14 // @minFFVer 26 // @namespace 4chan-X @@ -395,7 +395,7 @@ doc = d.documentElement; g = { - VERSION: '1.10.4.2', + VERSION: '1.10.4.3', NAMESPACE: '4chan X.', NAME: '4chan X', FAQ: 'https://github.com/ccd0/4chan-x/wiki/Frequently-Asked-Questions', @@ -1419,6 +1419,35 @@ } }; + Post.prototype.resurrect = function() { + var clone, k, len1, len2, q, quotelink, ref, ref1, strong; + delete this.isDead; + $.rmClass(this.nodes.root, 'deleted-post'); + strong = $('strong.warning', this.nodes.info); + if (this.file && this.file.isDead) { + strong.textContent = '[File deleted]'; + } else { + $.rm(strong); + } + if (this.isClone) { + return; + } + ref = this.clones; + for (k = 0, len1 = ref.length; k < len1; k++) { + clone = ref[k]; + clone.resurrect(); + } + ref1 = Get.allQuotelinksLinkingTo(this); + for (q = 0, len2 = ref1.length; q < len2; q++) { + quotelink = ref1[q]; + if (!($.hasClass(quotelink, 'deadlink'))) { + continue; + } + quotelink.textContent = quotelink.textContent.replace('\u00A0(Dead)', ''); + $.rmClass(quotelink, 'deadlink'); + } + }; + Post.prototype.collect = function() { this.kill(); g.posts.rm(this.fullID); @@ -11894,6 +11923,9 @@ var fileCount, postCount; postCount = 0; fileCount = 0; + if (this.board.ID === 'f') { + fileCount++; + } this.posts.forEach(function(post) { postCount++; if (post.file) { @@ -12056,13 +12088,15 @@ node: function() { ThreadUpdater.thread = this; ThreadUpdater.root = this.OP.nodes.root.parentNode; - ThreadUpdater.lastPost = +this.posts.keys[this.posts.keys.length - 1]; ThreadUpdater.outdateCount = 0; ThreadUpdater.postIDs = []; ThreadUpdater.fileIDs = []; + if (this.board.ID === 'f') { + ThreadUpdater.fileIDs.push(this.ID); + } this.posts.forEach(function(post) { ThreadUpdater.postIDs.push(post.ID); - if (post.file && !post.file.isDead) { + if (post.file) { return ThreadUpdater.fileIDs.push(post.ID); } }); @@ -12283,18 +12317,17 @@ return new Notice('info', "The thread is " + change + ".", 30); }, parse: function(req) { - var ID, OP, board, count, deletedFiles, deletedPosts, files, firstPost, index, ipCountEl, k, lastModified, len1, len2, len3, len4, node, num, post, postObject, postObjects, posts, q, ref, ref1, ref2, scroll, thread, u, w; - lastModified = new Date(req.getResponseHeader('Last-Modified')); - if (ThreadUpdater.lastModified && lastModified < ThreadUpdater.lastModified) { - return; - } - ThreadUpdater.lastModified = lastModified; + var ID, OP, board, deletedFiles, deletedPosts, files, firstPost, index, ipCountEl, k, lastPost, len1, len2, len3, len4, newPosts, node, post, postObject, postObjects, posts, q, ref, ref1, ref2, ref3, scroll, thread, u, w; postObjects = req.response.posts; OP = postObjects[0]; thread = ThreadUpdater.thread; board = thread.board; + ref = ThreadUpdater.postIDs, lastPost = ref[ref.length - 1]; + if (postObjects[postObjects.length - 1].no < lastPost && new Date(req.getResponseHeader('Last-Modified')) - thread.posts[lastPost].info.date < 30 * $.SECOND) { + return; + } Build.spoilerRange[board] = OP.custom_spoiler; - thread.setStatus('Archived', !!+OP.archived); + thread.setStatus('Archived', !!OP.archived); ThreadUpdater.updateThreadStatus('Sticky', !!OP.sticky); ThreadUpdater.updateThreadStatus('Closed', !!OP.closed); thread.postLimit = !!OP.bumplimit; @@ -12305,28 +12338,32 @@ posts = []; index = []; files = []; - count = 0; + newPosts = []; for (k = 0, len1 = postObjects.length; k < len1; k++) { postObject = postObjects[k]; - num = postObject.no; - index.push(num); + ID = postObject.no; + index.push(ID); if (postObject.fsize) { - files.push(num); + files.push(ID); } - if (num <= ThreadUpdater.lastPost) { + if (ID <= lastPost) { + continue; + } + newPosts.push(board + "." + ID); + if ((post = thread.posts[ID]) && !post.isFetchedQuote) { + post.resurrect(); continue; } - count++; node = Build.postFromObject(postObject, board.ID); posts.push(new Post(node, thread, board)); - if (ThreadUpdater.postID === num) { + if (ThreadUpdater.postID === ID) { delete ThreadUpdater.postID; } } deletedPosts = []; - ref = ThreadUpdater.postIDs; - for (q = 0, len2 = ref.length; q < len2; q++) { - ID = ref[q]; + ref1 = ThreadUpdater.postIDs; + for (q = 0, len2 = ref1.length; q < len2; q++) { + ID = ref1[q]; if (!(indexOf.call(index, ID) < 0)) { continue; } @@ -12335,20 +12372,20 @@ } ThreadUpdater.postIDs = index; deletedFiles = []; - ref1 = ThreadUpdater.fileIDs; - for (u = 0, len3 = ref1.length; u < len3; u++) { - ID = ref1[u]; - if (!(!(indexOf.call(files, ID) >= 0 || (ref2 = board + "." + ID, indexOf.call(deletedPosts, ref2) >= 0)))) { + ref2 = ThreadUpdater.fileIDs; + for (u = 0, len3 = ref2.length; u < len3; u++) { + ID = ref2[u]; + if (!(!(indexOf.call(files, ID) >= 0 || (ref3 = board + "." + ID, indexOf.call(deletedPosts, ref3) >= 0)))) { continue; } thread.posts[ID].kill(true); deletedFiles.push(board + "." + ID); } ThreadUpdater.fileIDs = files; - if (!count) { + if (!posts.length) { ThreadUpdater.set('status', ''); } else { - ThreadUpdater.set('status', "+" + count, 'new'); + ThreadUpdater.set('status', "+" + posts.length, 'new'); ThreadUpdater.outdateCount = 0; if (Conf['Beep'] && d.hidden && Unread.posts && !Unread.posts.size) { if (!ThreadUpdater.audio) { @@ -12358,7 +12395,6 @@ } ThreadUpdater.audio.play(); } - ThreadUpdater.lastPost = posts[count - 1].ID; Main.callbackNodes(Post, posts); scroll = Conf['Auto Scroll'] && ThreadUpdater.scrollBG() && ThreadUpdater.root.getBoundingClientRect().bottom - doc.clientHeight < 25; firstPost = null; @@ -12388,19 +12424,11 @@ return $.event('ThreadUpdate', { 404: false, threadID: thread.fullID, - newPosts: (function() { - var len5, results, y; - results = []; - for (y = 0, len5 = posts.length; y < len5; y++) { - post = posts[y]; - results.push(post.fullID); - } - return results; - })(), + newPosts: newPosts, deletedPosts: deletedPosts, deletedFiles: deletedFiles, postCount: OP.replies + 1, - fileCount: OP.images + (!!thread.OP.file && !thread.OP.file.isDead), + fileCount: OP.images + !!OP.fsize, ipCount: OP.unique_ips }); } diff --git a/builds/4chan-X.zip b/builds/4chan-X.zip index ce37006b7..2d53c188f 100644 Binary files a/builds/4chan-X.zip and b/builds/4chan-X.zip differ diff --git a/builds/updates-beta.xml b/builds/updates-beta.xml index e35b1bafc..4bcf9ff12 100644 --- a/builds/updates-beta.xml +++ b/builds/updates-beta.xml @@ -1,7 +1,7 @@ - + diff --git a/builds/updates.xml b/builds/updates.xml index b64b8db4e..b2dc71f08 100644 --- a/builds/updates.xml +++ b/builds/updates.xml @@ -1,7 +1,7 @@ - + diff --git a/package.json b/package.json index 3c575f1c9..c9fcacd61 100755 --- a/package.json +++ b/package.json @@ -3,8 +3,8 @@ "description": "Cross-browser userscript for maximum lurking on 4chan.", "meta": { "name": "4chan X", - "version": "1.10.4.2", - "date": "2015-03-10T03:18:00.112Z", + "version": "1.10.4.3", + "date": "2015-03-11T06:53:35.481Z", "repo": "https://github.com/ccd0/4chan-x/", "page": "https://github.com/ccd0/4chan-x", "downloads": "https://ccd0.github.io/4chan-x/builds/",