diff --git a/CHANGELOG.md b/CHANGELOG.md
index ed142c3c6..b81b88eca 100755
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,9 @@
+### v1.9.0.7
+*2014-09-01*
+
+**ccd0**
+- Work around false 404s from 4chan's JSON API by checking the catalog to confirm thread death.
+
### v1.9.0.6
*2014-08-31*
diff --git a/LICENSE b/LICENSE
index 8b714cf34..6ee72866c 100755
--- a/LICENSE
+++ b/LICENSE
@@ -1,5 +1,5 @@
/*
-* 4chan X - Version 1.9.0.6
+* 4chan X - Version 1.9.0.7
*
* Licensed under the MIT license.
* https://github.com/ccd0/4chan-x/blob/master/LICENSE
diff --git a/builds/4chan-X-beta.crx b/builds/4chan-X-beta.crx
index 1e5c12451..9933c38d0 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 4edcfef84..a801b2b6f 100644
--- a/builds/4chan-X-beta.meta.js
+++ b/builds/4chan-X-beta.meta.js
@@ -1,6 +1,6 @@
// ==UserScript==
// @name 4chan X
-// @version 1.9.0.6
+// @version 1.9.0.7
// @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 951fd4420..7476986b6 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
-// @version 1.9.0.6
+// @version 1.9.0.7
// @minGMVer 1.14
// @minFFVer 26
// @namespace 4chan-X
@@ -24,7 +24,7 @@
// ==/UserScript==
/*
-* 4chan X - Version 1.9.0.6
+* 4chan X - Version 1.9.0.7
*
* Licensed under the MIT license.
* https://github.com/ccd0/4chan-x/blob/master/LICENSE
@@ -374,7 +374,7 @@
doc = d.documentElement;
g = {
- VERSION: '1.9.0.6',
+ VERSION: '1.9.0.7',
NAMESPACE: '4chan X.',
NAME: '4chan X',
FAQ: 'https://github.com/ccd0/4chan-x/wiki/Frequently-Asked-Questions',
@@ -10141,7 +10141,7 @@
return $.cb.value.call(this);
},
load: function(e) {
- var klass, req, text, _ref;
+ var req;
req = ThreadUpdater.req;
switch (req.status) {
case 200:
@@ -10155,15 +10155,38 @@
}
break;
case 404:
- g.DEAD = true;
- ThreadUpdater.set('status', '404', 'warning');
- ThreadUpdater.kill();
+ $.ajax("//a.4cdn.org/" + ThreadUpdater.thread.board + "/catalog.json", {
+ onloadend: function() {
+ var confirmed, page, thread, _i, _j, _len, _len1, _ref, _ref1;
+ if (this.status === 200) {
+ confirmed = true;
+ _ref = this.response;
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+ page = _ref[_i];
+ _ref1 = page.threads;
+ for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {
+ thread = _ref1[_j];
+ if (thread.no === ThreadUpdater.thread.ID) {
+ confirmed = false;
+ break;
+ }
+ }
+ }
+ } else {
+ confirmed = false;
+ }
+ if (confirmed) {
+ g.DEAD = true;
+ ThreadUpdater.set('status', '404', 'warning');
+ return ThreadUpdater.kill();
+ } else {
+ return ThreadUpdater.error(req);
+ }
+ }
+ });
break;
default:
- ThreadUpdater.outdateCount++;
- ThreadUpdater.setInterval();
- _ref = req.status === 304 ? [null, null] : ["" + req.statusText + " (" + req.status + ")", 'warning'], text = _ref[0], klass = _ref[1];
- ThreadUpdater.set('status', text, klass);
+ ThreadUpdater.error(req);
}
if (ThreadUpdater.postID) {
return ThreadUpdater.cb.checkpost();
@@ -10179,6 +10202,13 @@
threadID: ThreadUpdater.thread.fullID
});
},
+ error: function(req) {
+ var klass, text, _ref;
+ ThreadUpdater.outdateCount++;
+ ThreadUpdater.setInterval();
+ _ref = req.status === 304 ? [null, null] : ["" + req.statusText + " (" + req.status + ")", 'warning'], text = _ref[0], klass = _ref[1];
+ return ThreadUpdater.set('status', text, klass);
+ },
setInterval: function() {
var cur, i, j, limit;
i = ThreadUpdater.interval + 1;
@@ -12786,7 +12816,7 @@
className: 'dialog'
});
$.extend(dialog, {
- innerHTML: "
"
+ innerHTML: ""
});
$.on($('.export', Settings.dialog), 'click', Settings["export"]);
$.on($('.import', Settings.dialog), 'click', Settings["import"]);
diff --git a/builds/4chan-X-noupdate.crx b/builds/4chan-X-noupdate.crx
index 855f83dd5..556e07b09 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 b61ed1964..351137d70 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.9.0.6
+// @version 1.9.0.7
// @minGMVer 1.14
// @minFFVer 26
// @namespace 4chan-X
@@ -23,7 +23,7 @@
// ==/UserScript==
/*
-* 4chan X - Version 1.9.0.6
+* 4chan X - Version 1.9.0.7
*
* Licensed under the MIT license.
* https://github.com/ccd0/4chan-x/blob/master/LICENSE
@@ -373,7 +373,7 @@
doc = d.documentElement;
g = {
- VERSION: '1.9.0.6',
+ VERSION: '1.9.0.7',
NAMESPACE: '4chan X.',
NAME: '4chan X',
FAQ: 'https://github.com/ccd0/4chan-x/wiki/Frequently-Asked-Questions',
@@ -10140,7 +10140,7 @@
return $.cb.value.call(this);
},
load: function(e) {
- var klass, req, text, _ref;
+ var req;
req = ThreadUpdater.req;
switch (req.status) {
case 200:
@@ -10154,15 +10154,38 @@
}
break;
case 404:
- g.DEAD = true;
- ThreadUpdater.set('status', '404', 'warning');
- ThreadUpdater.kill();
+ $.ajax("//a.4cdn.org/" + ThreadUpdater.thread.board + "/catalog.json", {
+ onloadend: function() {
+ var confirmed, page, thread, _i, _j, _len, _len1, _ref, _ref1;
+ if (this.status === 200) {
+ confirmed = true;
+ _ref = this.response;
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+ page = _ref[_i];
+ _ref1 = page.threads;
+ for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {
+ thread = _ref1[_j];
+ if (thread.no === ThreadUpdater.thread.ID) {
+ confirmed = false;
+ break;
+ }
+ }
+ }
+ } else {
+ confirmed = false;
+ }
+ if (confirmed) {
+ g.DEAD = true;
+ ThreadUpdater.set('status', '404', 'warning');
+ return ThreadUpdater.kill();
+ } else {
+ return ThreadUpdater.error(req);
+ }
+ }
+ });
break;
default:
- ThreadUpdater.outdateCount++;
- ThreadUpdater.setInterval();
- _ref = req.status === 304 ? [null, null] : ["" + req.statusText + " (" + req.status + ")", 'warning'], text = _ref[0], klass = _ref[1];
- ThreadUpdater.set('status', text, klass);
+ ThreadUpdater.error(req);
}
if (ThreadUpdater.postID) {
return ThreadUpdater.cb.checkpost();
@@ -10178,6 +10201,13 @@
threadID: ThreadUpdater.thread.fullID
});
},
+ error: function(req) {
+ var klass, text, _ref;
+ ThreadUpdater.outdateCount++;
+ ThreadUpdater.setInterval();
+ _ref = req.status === 304 ? [null, null] : ["" + req.statusText + " (" + req.status + ")", 'warning'], text = _ref[0], klass = _ref[1];
+ return ThreadUpdater.set('status', text, klass);
+ },
setInterval: function() {
var cur, i, j, limit;
i = ThreadUpdater.interval + 1;
@@ -12785,7 +12815,7 @@
className: 'dialog'
});
$.extend(dialog, {
- innerHTML: ""
+ innerHTML: ""
});
$.on($('.export', Settings.dialog), 'click', Settings["export"]);
$.on($('.import', Settings.dialog), 'click', Settings["import"]);
diff --git a/builds/4chan-X.crx b/builds/4chan-X.crx
index 51067bdd9..02cc063cb 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 e31aef298..dbf42f1a1 100644
--- a/builds/4chan-X.meta.js
+++ b/builds/4chan-X.meta.js
@@ -1,6 +1,6 @@
// ==UserScript==
// @name 4chan X
-// @version 1.9.0.6
+// @version 1.9.0.7
// @minGMVer 1.14
// @minFFVer 26
// @namespace 4chan-X
diff --git a/builds/4chan-X.user.js b/builds/4chan-X.user.js
index ee70f34bd..4b30b016f 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.9.0.6
+// @version 1.9.0.7
// @minGMVer 1.14
// @minFFVer 26
// @namespace 4chan-X
@@ -24,7 +24,7 @@
// ==/UserScript==
/*
-* 4chan X - Version 1.9.0.6
+* 4chan X - Version 1.9.0.7
*
* Licensed under the MIT license.
* https://github.com/ccd0/4chan-x/blob/master/LICENSE
@@ -374,7 +374,7 @@
doc = d.documentElement;
g = {
- VERSION: '1.9.0.6',
+ VERSION: '1.9.0.7',
NAMESPACE: '4chan X.',
NAME: '4chan X',
FAQ: 'https://github.com/ccd0/4chan-x/wiki/Frequently-Asked-Questions',
@@ -10141,7 +10141,7 @@
return $.cb.value.call(this);
},
load: function(e) {
- var klass, req, text, _ref;
+ var req;
req = ThreadUpdater.req;
switch (req.status) {
case 200:
@@ -10155,15 +10155,38 @@
}
break;
case 404:
- g.DEAD = true;
- ThreadUpdater.set('status', '404', 'warning');
- ThreadUpdater.kill();
+ $.ajax("//a.4cdn.org/" + ThreadUpdater.thread.board + "/catalog.json", {
+ onloadend: function() {
+ var confirmed, page, thread, _i, _j, _len, _len1, _ref, _ref1;
+ if (this.status === 200) {
+ confirmed = true;
+ _ref = this.response;
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+ page = _ref[_i];
+ _ref1 = page.threads;
+ for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {
+ thread = _ref1[_j];
+ if (thread.no === ThreadUpdater.thread.ID) {
+ confirmed = false;
+ break;
+ }
+ }
+ }
+ } else {
+ confirmed = false;
+ }
+ if (confirmed) {
+ g.DEAD = true;
+ ThreadUpdater.set('status', '404', 'warning');
+ return ThreadUpdater.kill();
+ } else {
+ return ThreadUpdater.error(req);
+ }
+ }
+ });
break;
default:
- ThreadUpdater.outdateCount++;
- ThreadUpdater.setInterval();
- _ref = req.status === 304 ? [null, null] : ["" + req.statusText + " (" + req.status + ")", 'warning'], text = _ref[0], klass = _ref[1];
- ThreadUpdater.set('status', text, klass);
+ ThreadUpdater.error(req);
}
if (ThreadUpdater.postID) {
return ThreadUpdater.cb.checkpost();
@@ -10179,6 +10202,13 @@
threadID: ThreadUpdater.thread.fullID
});
},
+ error: function(req) {
+ var klass, text, _ref;
+ ThreadUpdater.outdateCount++;
+ ThreadUpdater.setInterval();
+ _ref = req.status === 304 ? [null, null] : ["" + req.statusText + " (" + req.status + ")", 'warning'], text = _ref[0], klass = _ref[1];
+ return ThreadUpdater.set('status', text, klass);
+ },
setInterval: function() {
var cur, i, j, limit;
i = ThreadUpdater.interval + 1;
@@ -12786,7 +12816,7 @@
className: 'dialog'
});
$.extend(dialog, {
- innerHTML: ""
+ innerHTML: ""
});
$.on($('.export', Settings.dialog), 'click', Settings["export"]);
$.on($('.import', Settings.dialog), 'click', Settings["import"]);
diff --git a/builds/4chan-X.zip b/builds/4chan-X.zip
index cd827312f..e07eca148 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 26c3d589f..abe48d20a 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 42b0d8df9..f1a56a2fa 100644
--- a/builds/updates.xml
+++ b/builds/updates.xml
@@ -1,7 +1,7 @@
-
+
diff --git a/package.json b/package.json
index d07959ea2..5b7f8b06e 100755
--- a/package.json
+++ b/package.json
@@ -3,7 +3,7 @@
"description": "Cross-browser userscript for maximum lurking on 4chan.",
"meta": {
"name": "4chan X",
- "version": "1.9.0.6",
+ "version": "1.9.0.7",
"repo": "https://github.com/ccd0/4chan-x/",
"page": "https://github.com/ccd0/4chan-x",
"downloads": "https://ccd0.github.io/4chan-x/builds/",