diff --git a/CHANGELOG.md b/CHANGELOG.md index 1c160c311..7bcba0d0c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,9 @@ ## v1.13.0 +**v1.13.0.18** *(2016-10-31)* - [[Userscript](https://raw.githubusercontent.com/ccd0/4chan-x/1.13.0.18/builds/4chan-X-noupdate.user.js)] [[Chrome extension](https://raw.githubusercontent.com/ccd0/4chan-x/1.13.0.18/builds/4chan-X-noupdate.crx)] +- Improve robustness against invalid settings data, including thread watcher timestamps from future. + **v1.13.0.17** *(2016-10-30)* - [[Userscript](https://raw.githubusercontent.com/ccd0/4chan-x/1.13.0.17/builds/4chan-X-noupdate.user.js)] [[Chrome extension](https://raw.githubusercontent.com/ccd0/4chan-x/1.13.0.17/builds/4chan-X-noupdate.crx)] - Various regression and bug fixes. diff --git a/builds/4chan-X-beta.crx b/builds/4chan-X-beta.crx index 1c7590353..830d3c115 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 1ca3c2b35..6df20c1cf 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.13.0.17 +// @version 1.13.0.18 // @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 208cd7491..13337e2a0 100644 --- a/builds/4chan-X-beta.user.js +++ b/builds/4chan-X-beta.user.js @@ -1,6 +1,6 @@ // ==UserScript== // @name 4chan X beta -// @version 1.13.0.17 +// @version 1.13.0.18 // @minGMVer 1.14 // @minFFVer 26 // @namespace 4chan-X @@ -147,7 +147,7 @@ docSet = function() { }; g = { - VERSION: '1.13.0.17', + VERSION: '1.13.0.18', NAMESPACE: '4chan X.', boards: {} }; @@ -5321,7 +5321,7 @@ DataBoard = (function() { }; DataBoard.prototype.clean = function() { - var boardID, now, ref, val; + var boardID, now, ref, ref1, val; $.forceSync(this.key); ref = this.data.boards; for (boardID in ref) { @@ -5331,7 +5331,7 @@ DataBoard = (function() { }); } now = Date.now(); - if ((this.data.lastChecked || 0) < now - 2 * $.HOUR) { + if (!((now - 2 * $.HOUR < (ref1 = this.data.lastChecked || 0) && ref1 <= now))) { this.data.lastChecked = now; for (boardID in this.data.boards) { this.ajaxClean(boardID); @@ -6617,9 +6617,13 @@ Redirect = (function() { { "uid": 31, "name": "Archive Of Sins", "domain": "archiveofsins.com", "http": true, "https": false, "software": "foolfuuka", "boards": [ "h", "hc", "hm", "r", "s", "soc" ], "files": [ "h", "hc", "hm", "r", "s", "soc" ] } ], init: function() { + var now, ref; this.selectArchives(); - if (Conf['archiveAutoUpdate'] && Conf['lastarchivecheck'] < Date.now() - 2 * $.DAY) { - return this.update(); + if (Conf['archiveAutoUpdate']) { + now = Date.now(); + if (!((now - 2 * $.DAY < (ref = Conf['lastarchivecheck']) && ref <= now))) { + return this.update(); + } } }, selectArchives: function() { @@ -7891,7 +7895,9 @@ BoardConfig = (function() { BoardConfig = { cbs: [], init: function() { - if ((Conf['boardConfig'].lastChecked || 0) < Date.now() - 2 * $.HOUR) { + var now, ref; + now = Date.now(); + if (!((now - 2 * $.HOUR < (ref = Conf['boardConfig'].lastChecked || 0) && ref <= now))) { return $.ajax('//a.4cdn.org/boards.json', { onloadend: this.load }); @@ -10068,6 +10074,8 @@ Index = (function() { }).map(function(post) { return post.no; }); + default: + return liveThreadIDs; } })(); if (Index.search && (threadIDs = Index.querySearch(Index.search))) { @@ -18172,7 +18180,7 @@ ThreadWatcher = (function() { return ThreadWatcher.clearRequests(); }, fetchAuto: function() { - var db, interval, now; + var db, interval, now, ref; clearTimeout(ThreadWatcher.timeout); if (!Conf['Auto Update Thread Watcher']) { return; @@ -18180,7 +18188,7 @@ ThreadWatcher = (function() { db = ThreadWatcher.db; interval = ThreadWatcher.unreadEnabled && Conf['Show Unread Count'] ? 5 * $.MINUTE : 2 * $.HOUR; now = Date.now(); - if (now >= (db.data.lastChecked || 0) + interval) { + if (!((now - interval < (ref = db.data.lastChecked || 0) && ref <= now))) { ThreadWatcher.fetchAllStatus(); db.data.lastChecked = now; db.save(); diff --git a/builds/4chan-X-noupdate.crx b/builds/4chan-X-noupdate.crx index 2e4e8120d..ae5b5ec53 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 c06ecc7c7..0f02249a4 100644 --- a/builds/4chan-X-noupdate.user.js +++ b/builds/4chan-X-noupdate.user.js @@ -1,6 +1,6 @@ // ==UserScript== // @name 4chan X -// @version 1.13.0.17 +// @version 1.13.0.18 // @minGMVer 1.14 // @minFFVer 26 // @namespace 4chan-X @@ -147,7 +147,7 @@ docSet = function() { }; g = { - VERSION: '1.13.0.17', + VERSION: '1.13.0.18', NAMESPACE: '4chan X.', boards: {} }; @@ -5321,7 +5321,7 @@ DataBoard = (function() { }; DataBoard.prototype.clean = function() { - var boardID, now, ref, val; + var boardID, now, ref, ref1, val; $.forceSync(this.key); ref = this.data.boards; for (boardID in ref) { @@ -5331,7 +5331,7 @@ DataBoard = (function() { }); } now = Date.now(); - if ((this.data.lastChecked || 0) < now - 2 * $.HOUR) { + if (!((now - 2 * $.HOUR < (ref1 = this.data.lastChecked || 0) && ref1 <= now))) { this.data.lastChecked = now; for (boardID in this.data.boards) { this.ajaxClean(boardID); @@ -6617,9 +6617,13 @@ Redirect = (function() { { "uid": 31, "name": "Archive Of Sins", "domain": "archiveofsins.com", "http": true, "https": false, "software": "foolfuuka", "boards": [ "h", "hc", "hm", "r", "s", "soc" ], "files": [ "h", "hc", "hm", "r", "s", "soc" ] } ], init: function() { + var now, ref; this.selectArchives(); - if (Conf['archiveAutoUpdate'] && Conf['lastarchivecheck'] < Date.now() - 2 * $.DAY) { - return this.update(); + if (Conf['archiveAutoUpdate']) { + now = Date.now(); + if (!((now - 2 * $.DAY < (ref = Conf['lastarchivecheck']) && ref <= now))) { + return this.update(); + } } }, selectArchives: function() { @@ -7891,7 +7895,9 @@ BoardConfig = (function() { BoardConfig = { cbs: [], init: function() { - if ((Conf['boardConfig'].lastChecked || 0) < Date.now() - 2 * $.HOUR) { + var now, ref; + now = Date.now(); + if (!((now - 2 * $.HOUR < (ref = Conf['boardConfig'].lastChecked || 0) && ref <= now))) { return $.ajax('//a.4cdn.org/boards.json', { onloadend: this.load }); @@ -10068,6 +10074,8 @@ Index = (function() { }).map(function(post) { return post.no; }); + default: + return liveThreadIDs; } })(); if (Index.search && (threadIDs = Index.querySearch(Index.search))) { @@ -18172,7 +18180,7 @@ ThreadWatcher = (function() { return ThreadWatcher.clearRequests(); }, fetchAuto: function() { - var db, interval, now; + var db, interval, now, ref; clearTimeout(ThreadWatcher.timeout); if (!Conf['Auto Update Thread Watcher']) { return; @@ -18180,7 +18188,7 @@ ThreadWatcher = (function() { db = ThreadWatcher.db; interval = ThreadWatcher.unreadEnabled && Conf['Show Unread Count'] ? 5 * $.MINUTE : 2 * $.HOUR; now = Date.now(); - if (now >= (db.data.lastChecked || 0) + interval) { + if (!((now - interval < (ref = db.data.lastChecked || 0) && ref <= now))) { ThreadWatcher.fetchAllStatus(); db.data.lastChecked = now; db.save(); diff --git a/builds/4chan-X.crx b/builds/4chan-X.crx index 09ebb78fd..8b6461861 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 f94c9d2a1..74a191934 100644 --- a/builds/4chan-X.meta.js +++ b/builds/4chan-X.meta.js @@ -1,6 +1,6 @@ // ==UserScript== // @name 4chan X -// @version 1.13.0.17 +// @version 1.13.0.18 // @minGMVer 1.14 // @minFFVer 26 // @namespace 4chan-X diff --git a/builds/4chan-X.user.js b/builds/4chan-X.user.js index 0bfd0ed3d..e6a706f52 100644 --- a/builds/4chan-X.user.js +++ b/builds/4chan-X.user.js @@ -1,6 +1,6 @@ // ==UserScript== // @name 4chan X -// @version 1.13.0.17 +// @version 1.13.0.18 // @minGMVer 1.14 // @minFFVer 26 // @namespace 4chan-X @@ -147,7 +147,7 @@ docSet = function() { }; g = { - VERSION: '1.13.0.17', + VERSION: '1.13.0.18', NAMESPACE: '4chan X.', boards: {} }; @@ -5321,7 +5321,7 @@ DataBoard = (function() { }; DataBoard.prototype.clean = function() { - var boardID, now, ref, val; + var boardID, now, ref, ref1, val; $.forceSync(this.key); ref = this.data.boards; for (boardID in ref) { @@ -5331,7 +5331,7 @@ DataBoard = (function() { }); } now = Date.now(); - if ((this.data.lastChecked || 0) < now - 2 * $.HOUR) { + if (!((now - 2 * $.HOUR < (ref1 = this.data.lastChecked || 0) && ref1 <= now))) { this.data.lastChecked = now; for (boardID in this.data.boards) { this.ajaxClean(boardID); @@ -6617,9 +6617,13 @@ Redirect = (function() { { "uid": 31, "name": "Archive Of Sins", "domain": "archiveofsins.com", "http": true, "https": false, "software": "foolfuuka", "boards": [ "h", "hc", "hm", "r", "s", "soc" ], "files": [ "h", "hc", "hm", "r", "s", "soc" ] } ], init: function() { + var now, ref; this.selectArchives(); - if (Conf['archiveAutoUpdate'] && Conf['lastarchivecheck'] < Date.now() - 2 * $.DAY) { - return this.update(); + if (Conf['archiveAutoUpdate']) { + now = Date.now(); + if (!((now - 2 * $.DAY < (ref = Conf['lastarchivecheck']) && ref <= now))) { + return this.update(); + } } }, selectArchives: function() { @@ -7891,7 +7895,9 @@ BoardConfig = (function() { BoardConfig = { cbs: [], init: function() { - if ((Conf['boardConfig'].lastChecked || 0) < Date.now() - 2 * $.HOUR) { + var now, ref; + now = Date.now(); + if (!((now - 2 * $.HOUR < (ref = Conf['boardConfig'].lastChecked || 0) && ref <= now))) { return $.ajax('//a.4cdn.org/boards.json', { onloadend: this.load }); @@ -10068,6 +10074,8 @@ Index = (function() { }).map(function(post) { return post.no; }); + default: + return liveThreadIDs; } })(); if (Index.search && (threadIDs = Index.querySearch(Index.search))) { @@ -18172,7 +18180,7 @@ ThreadWatcher = (function() { return ThreadWatcher.clearRequests(); }, fetchAuto: function() { - var db, interval, now; + var db, interval, now, ref; clearTimeout(ThreadWatcher.timeout); if (!Conf['Auto Update Thread Watcher']) { return; @@ -18180,7 +18188,7 @@ ThreadWatcher = (function() { db = ThreadWatcher.db; interval = ThreadWatcher.unreadEnabled && Conf['Show Unread Count'] ? 5 * $.MINUTE : 2 * $.HOUR; now = Date.now(); - if (now >= (db.data.lastChecked || 0) + interval) { + if (!((now - interval < (ref = db.data.lastChecked || 0) && ref <= now))) { ThreadWatcher.fetchAllStatus(); db.data.lastChecked = now; db.save(); diff --git a/builds/4chan-X.zip b/builds/4chan-X.zip index a6c41352e..e01ecfaa1 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 47991ee2f..806732ec1 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 7160ceab2..6cb5fae3f 100644 --- a/builds/updates.xml +++ b/builds/updates.xml @@ -1,7 +1,7 @@ - + diff --git a/version.json b/version.json index 987bdce14..2e5258e73 100644 --- a/version.json +++ b/version.json @@ -1,4 +1,4 @@ { - "version": "1.13.0.17", - "date": "2016-10-30T05:07:56.889Z" + "version": "1.13.0.18", + "date": "2016-10-31T02:53:57.311Z" } \ No newline at end of file