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/",