Merge branch 'master' into next

This commit is contained in:
ccd0 2016-10-30 21:32:11 -07:00
commit a4cb3ce5f7
19 changed files with 72 additions and 41 deletions

View File

@ -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.

View File

@ -1,7 +1,8 @@
![screenshot](https://ccd0.github.io/4chan-x/img/screenshot.png)
# 4chan X
Adds various features to 4chan.
Previously developed by [aeosynth](https://github.com/aeosynth/4chan-x), [Mayhem](https://github.com/MayhemYDG/4chan-x), [ihavenoface](https://github.com/ihavenoface/4chan-x), [Zixaphir](https://github.com/zixaphir/appchan-x), [Seaweed](https://github.com/seaweedchan/4chan-x), and [Spittie](https://github.com/Spittie/4chan-x), with contributions from many others.
4chan X is an unofficial script written by users of 4chan to add various features to the site.
It was previously developed by [aeosynth](https://github.com/aeosynth/4chan-x), [Mayhem](https://github.com/MayhemYDG/4chan-x), [ihavenoface](https://github.com/ihavenoface/4chan-x), [Zixaphir](https://github.com/zixaphir/appchan-x), [Seaweed](https://github.com/seaweedchan/4chan-x), and [Spittie](https://github.com/Spittie/4chan-x), with contributions from many others.
If you're looking for a maintained fork of OneeChan (a style script used in addition to 4chan X), try
https://github.com/Nebukazar/OneeChan.

Binary file not shown.

View File

@ -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

View File

@ -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();

Binary file not shown.

View File

@ -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();

Binary file not shown.

View File

@ -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

View File

@ -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();

Binary file not shown.

View File

@ -1,7 +1,7 @@
<?xml version='1.0' encoding='UTF-8'?>
<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>
<app appid='lacclbnghgdicfifcamcmcnilckjamag'>
<updatecheck codebase='https://www.4chan-x.net/builds/4chan-X-beta.crx' version='1.13.0.17' />
<updatecheck codebase='https://www.4chan-x.net/builds/4chan-X-beta.crx' version='1.13.0.18' />
</app>
</gupdate>

View File

@ -1,7 +1,7 @@
<?xml version='1.0' encoding='UTF-8'?>
<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>
<app appid='lacclbnghgdicfifcamcmcnilckjamag'>
<updatecheck codebase='https://www.4chan-x.net/builds/4chan-X.crx' version='1.13.0.17' />
<updatecheck codebase='https://www.4chan-x.net/builds/4chan-X.crx' version='1.13.0.18' />
</app>
</gupdate>

View File

@ -17,8 +17,8 @@
</div>
<a class="screenshot" href="img/screenshot.png"><img src="img/screenshot.png" alt="Screenshot"></a>
<p>Adds various features to 4chan.
Previously developed by <a href="https://github.com/aeosynth/4chan-x">aeosynth</a>, <a href="https://github.com/MayhemYDG/4chan-x">Mayhem</a>, <a href="https://github.com/ihavenoface/4chan-x">ihavenoface</a>, <a href="https://github.com/zixaphir/appchan-x">Zixaphir</a>, <a href="https://github.com/seaweedchan/4chan-x">Seaweed</a>, and <a href="https://github.com/Spittie/4chan-x">Spittie</a>, with contributions from many others.</p>
<p>4chan X is an unofficial script written by users of 4chan to add various features to the site.</p>
<p>It was previously developed by <a href="https://github.com/aeosynth/4chan-x">aeosynth</a>, <a href="https://github.com/MayhemYDG/4chan-x">Mayhem</a>, <a href="https://github.com/ihavenoface/4chan-x">ihavenoface</a>, <a href="https://github.com/zixaphir/appchan-x">Zixaphir</a>, <a href="https://github.com/seaweedchan/4chan-x">Seaweed</a>, and <a href="https://github.com/Spittie/4chan-x">Spittie</a>, with contributions from many others.</p>
<p>If you're looking for a maintained fork of OneeChan (a style script used in addition to 4chan X), try
<a href="https://github.com/Nebukazar/OneeChan">https://github.com/Nebukazar/OneeChan</a>.</p>
<h2 id="please-note">Please note</h2>

View File

@ -9,7 +9,9 @@ Redirect =
init: ->
@selectArchives()
@update() if Conf['archiveAutoUpdate'] and Conf['lastarchivecheck'] < Date.now() - 2 * $.DAY
if Conf['archiveAutoUpdate']
now = Date.now()
@update() unless now - 2 * $.DAY < Conf['lastarchivecheck'] <= now
selectArchives: ->
o =

View File

@ -2,7 +2,8 @@ BoardConfig =
cbs: []
init: ->
if (Conf['boardConfig'].lastChecked or 0) < Date.now() - 2 * $.HOUR
now = Date.now()
unless now - 2 * $.HOUR < (Conf['boardConfig'].lastChecked or 0) <= now
$.ajax '//a.4cdn.org/boards.json',
onloadend: @load
else

View File

@ -178,7 +178,7 @@ ThreadWatcher =
{db} = ThreadWatcher
interval = if ThreadWatcher.unreadEnabled and Conf['Show Unread Count'] then 5 * $.MINUTE else 2 * $.HOUR
now = Date.now()
if now >= (db.data.lastChecked or 0) + interval
unless now - interval < (db.data.lastChecked or 0) <= now
ThreadWatcher.fetchAllStatus() # calls forceSync
db.data.lastChecked = now
db.save()

View File

@ -84,7 +84,7 @@ class DataBoard
@deleteIfEmpty {boardID}
now = Date.now()
if (@data.lastChecked or 0) < now - 2 * $.HOUR
unless now - 2 * $.HOUR < (@data.lastChecked or 0) <= now
@data.lastChecked = now
for boardID of @data.boards
@ajaxClean boardID

View File

@ -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"
}