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