Merge branch 'bstable'

This commit is contained in:
ccd0 2015-10-24 17:52:27 -07:00
commit bafb7dc734
15 changed files with 87 additions and 33 deletions

View File

@ -4,6 +4,9 @@ Sometimes the changelog has notes (not comprehensive) acknowledging people's wor
### v1.11.13
**v1.11.13.9** *(2015-10-24)* - [[Firefox](https://raw.githubusercontent.com/ccd0/4chan-x/1.11.13.9/builds/4chan-X-noupdate.user.js "Firefox version")] [[Chromium](https://raw.githubusercontent.com/ccd0/4chan-x/1.11.13.9/builds/4chan-X-noupdate.crx "Chromium version")]
- Include /r9k/ mute time in cooldowns.
**v1.11.13.8** *(2015-10-23)* - [[Firefox](https://raw.githubusercontent.com/ccd0/4chan-x/1.11.13.8/builds/4chan-X-noupdate.user.js "Firefox version")] [[Chromium](https://raw.githubusercontent.com/ccd0/4chan-x/1.11.13.8/builds/4chan-X-noupdate.crx "Chromium version")]
- Bugfix: Fix case where LaTeX preview could not be turned off.

Binary file not shown.

View File

@ -1,6 +1,6 @@
// ==UserScript==
// @name 4chan X beta
// @version 1.11.13.8
// @version 1.11.13.9
// @minGMVer 1.14
// @minFFVer 26
// @namespace 4chan-X

View File

@ -1,7 +1,7 @@
// Generated by CoffeeScript
// ==UserScript==
// @name 4chan X beta
// @version 1.11.13.8
// @version 1.11.13.9
// @minGMVer 1.14
// @minFFVer 26
// @namespace 4chan-X
@ -413,7 +413,7 @@
doc = d.documentElement;
g = {
VERSION: '1.11.13.8',
VERSION: '1.11.13.9',
NAMESPACE: '4chan X.',
boards: {}
};
@ -7709,7 +7709,7 @@
return QR.status();
},
response: function() {
var URL, _, ban, err, h1, isReply, lastPostToThread, m, open, post, postID, postsCount, ref, ref1, req, resDoc, threadID;
var URL, _, ban, err, h1, isReply, lastPostToThread, m, open, post, postID, postsCount, ref, ref1, req, resDoc, seconds, threadID;
req = QR.req;
delete QR.req;
post = QR.posts[0];
@ -7741,9 +7741,14 @@
}
QR.cooldown.auto = QR.captcha.isEnabled ? !!QR.captcha.captchas.length : err === 'Connection error with sys.4chan.org.' ? true : false;
QR.cooldown.addDelay(post, 2);
} else if (err.textContent && (m = err.textContent.match(/wait\s+(\d+)\s+second/i)) && !/duplicate/i.test(err.textContent)) {
QR.cooldown.auto = QR.captcha.isEnabled ? !!QR.captcha.captchas.length : true;
QR.cooldown.addDelay(post, +m[1]);
} else if (err.textContent && (m = err.textContent.match(/(?:(\d+)\s+minutes?\s+)?(\d+)\s+second/i)) && !/duplicate|hour/i.test(err.textContent)) {
QR.cooldown.auto = (!QR.captcha.isEnabled || !!QR.captcha.captchas.length) && !/have\s+been\s+muted/i.test(err.textContent);
seconds = 60 * (+(m[1] || 0)) + (+m[2]);
if (/muted/i.test(err.textContent)) {
QR.cooldown.addMute(seconds);
} else {
QR.cooldown.addDelay(post, seconds);
}
QR.captcha.setup(d.activeElement === QR.nodes.status);
} else {
QR.cooldown.auto = false;
@ -8769,6 +8774,16 @@
QR.cooldown.set(g.BOARD.ID, Date.now(), cooldown);
return QR.cooldown.start();
},
addMute: function(delay) {
if (!Conf['Cooldown']) {
return;
}
QR.cooldown.set(g.BOARD.ID, Date.now(), {
type: 'mute',
delay: delay
});
return QR.cooldown.start();
},
"delete": function(post) {
var base1, cooldown, cooldowns, id, name1;
if (!Conf['Cooldown']) {
@ -8854,7 +8869,7 @@
if (cooldown.delay <= elapsed) {
delete cooldowns[start];
save.push(scope);
} else if (cooldown.type === type && cooldown.threadID === threadID) {
} else if ((cooldown.type === type && cooldown.threadID === threadID) || cooldown.type === 'mute') {
seconds = Math.max(seconds, cooldown.delay - elapsed);
}
continue;

Binary file not shown.

View File

@ -1,7 +1,7 @@
// Generated by CoffeeScript
// ==UserScript==
// @name 4chan X
// @version 1.11.13.8
// @version 1.11.13.9
// @minGMVer 1.14
// @minFFVer 26
// @namespace 4chan-X
@ -413,7 +413,7 @@
doc = d.documentElement;
g = {
VERSION: '1.11.13.8',
VERSION: '1.11.13.9',
NAMESPACE: '4chan X.',
boards: {}
};
@ -7709,7 +7709,7 @@
return QR.status();
},
response: function() {
var URL, _, ban, err, h1, isReply, lastPostToThread, m, open, post, postID, postsCount, ref, ref1, req, resDoc, threadID;
var URL, _, ban, err, h1, isReply, lastPostToThread, m, open, post, postID, postsCount, ref, ref1, req, resDoc, seconds, threadID;
req = QR.req;
delete QR.req;
post = QR.posts[0];
@ -7741,9 +7741,14 @@
}
QR.cooldown.auto = QR.captcha.isEnabled ? !!QR.captcha.captchas.length : err === 'Connection error with sys.4chan.org.' ? true : false;
QR.cooldown.addDelay(post, 2);
} else if (err.textContent && (m = err.textContent.match(/wait\s+(\d+)\s+second/i)) && !/duplicate/i.test(err.textContent)) {
QR.cooldown.auto = QR.captcha.isEnabled ? !!QR.captcha.captchas.length : true;
QR.cooldown.addDelay(post, +m[1]);
} else if (err.textContent && (m = err.textContent.match(/(?:(\d+)\s+minutes?\s+)?(\d+)\s+second/i)) && !/duplicate|hour/i.test(err.textContent)) {
QR.cooldown.auto = (!QR.captcha.isEnabled || !!QR.captcha.captchas.length) && !/have\s+been\s+muted/i.test(err.textContent);
seconds = 60 * (+(m[1] || 0)) + (+m[2]);
if (/muted/i.test(err.textContent)) {
QR.cooldown.addMute(seconds);
} else {
QR.cooldown.addDelay(post, seconds);
}
QR.captcha.setup(d.activeElement === QR.nodes.status);
} else {
QR.cooldown.auto = false;
@ -8769,6 +8774,16 @@
QR.cooldown.set(g.BOARD.ID, Date.now(), cooldown);
return QR.cooldown.start();
},
addMute: function(delay) {
if (!Conf['Cooldown']) {
return;
}
QR.cooldown.set(g.BOARD.ID, Date.now(), {
type: 'mute',
delay: delay
});
return QR.cooldown.start();
},
"delete": function(post) {
var base1, cooldown, cooldowns, id, name1;
if (!Conf['Cooldown']) {
@ -8854,7 +8869,7 @@
if (cooldown.delay <= elapsed) {
delete cooldowns[start];
save.push(scope);
} else if (cooldown.type === type && cooldown.threadID === threadID) {
} else if ((cooldown.type === type && cooldown.threadID === threadID) || cooldown.type === 'mute') {
seconds = Math.max(seconds, cooldown.delay - elapsed);
}
continue;

Binary file not shown.

View File

@ -1,6 +1,6 @@
// ==UserScript==
// @name 4chan X
// @version 1.11.13.8
// @version 1.11.13.9
// @minGMVer 1.14
// @minFFVer 26
// @namespace 4chan-X

View File

@ -1,7 +1,7 @@
// Generated by CoffeeScript
// ==UserScript==
// @name 4chan X
// @version 1.11.13.8
// @version 1.11.13.9
// @minGMVer 1.14
// @minFFVer 26
// @namespace 4chan-X
@ -413,7 +413,7 @@
doc = d.documentElement;
g = {
VERSION: '1.11.13.8',
VERSION: '1.11.13.9',
NAMESPACE: '4chan X.',
boards: {}
};
@ -7709,7 +7709,7 @@
return QR.status();
},
response: function() {
var URL, _, ban, err, h1, isReply, lastPostToThread, m, open, post, postID, postsCount, ref, ref1, req, resDoc, threadID;
var URL, _, ban, err, h1, isReply, lastPostToThread, m, open, post, postID, postsCount, ref, ref1, req, resDoc, seconds, threadID;
req = QR.req;
delete QR.req;
post = QR.posts[0];
@ -7741,9 +7741,14 @@
}
QR.cooldown.auto = QR.captcha.isEnabled ? !!QR.captcha.captchas.length : err === 'Connection error with sys.4chan.org.' ? true : false;
QR.cooldown.addDelay(post, 2);
} else if (err.textContent && (m = err.textContent.match(/wait\s+(\d+)\s+second/i)) && !/duplicate/i.test(err.textContent)) {
QR.cooldown.auto = QR.captcha.isEnabled ? !!QR.captcha.captchas.length : true;
QR.cooldown.addDelay(post, +m[1]);
} else if (err.textContent && (m = err.textContent.match(/(?:(\d+)\s+minutes?\s+)?(\d+)\s+second/i)) && !/duplicate|hour/i.test(err.textContent)) {
QR.cooldown.auto = (!QR.captcha.isEnabled || !!QR.captcha.captchas.length) && !/have\s+been\s+muted/i.test(err.textContent);
seconds = 60 * (+(m[1] || 0)) + (+m[2]);
if (/muted/i.test(err.textContent)) {
QR.cooldown.addMute(seconds);
} else {
QR.cooldown.addDelay(post, seconds);
}
QR.captcha.setup(d.activeElement === QR.nodes.status);
} else {
QR.cooldown.auto = false;
@ -8769,6 +8774,16 @@
QR.cooldown.set(g.BOARD.ID, Date.now(), cooldown);
return QR.cooldown.start();
},
addMute: function(delay) {
if (!Conf['Cooldown']) {
return;
}
QR.cooldown.set(g.BOARD.ID, Date.now(), {
type: 'mute',
delay: delay
});
return QR.cooldown.start();
},
"delete": function(post) {
var base1, cooldown, cooldowns, id, name1;
if (!Conf['Cooldown']) {
@ -8854,7 +8869,7 @@
if (cooldown.delay <= elapsed) {
delete cooldowns[start];
save.push(scope);
} else if (cooldown.type === type && cooldown.threadID === threadID) {
} else if ((cooldown.type === type && cooldown.threadID === threadID) || cooldown.type === 'mute') {
seconds = Math.max(seconds, cooldown.delay - elapsed);
}
continue;

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.11.13.8' />
<updatecheck codebase='https://www.4chan-x.net/builds/4chan-X-beta.crx' version='1.11.13.9' />
</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.11.13.8' />
<updatecheck codebase='https://www.4chan-x.net/builds/4chan-X.crx' version='1.11.13.9' />
</app>
</gupdate>

View File

@ -4,8 +4,8 @@
"meta": {
"name": "4chan X",
"fork": "ccd0",
"version": "1.11.13.8",
"date": "2015-10-24T02:39:06.584Z",
"version": "1.11.13.9",
"date": "2015-10-25T00:38:31.311Z",
"page": "https://www.4chan-x.net/",
"downloads": "https://www.4chan-x.net/builds/",
"oldVersions": "https://raw.githubusercontent.com/ccd0/4chan-x/",

View File

@ -773,12 +773,13 @@ QR =
# Too many frequent mistyped captchas will auto-ban you!
# On connection error, the post most likely didn't go through.
QR.cooldown.addDelay post, 2
else if err.textContent and (m = err.textContent.match /wait\s+(\d+)\s+second/i) and !/duplicate/i.test err.textContent
QR.cooldown.auto = if QR.captcha.isEnabled
!!QR.captcha.captchas.length
else if err.textContent and (m = err.textContent.match /(?:(\d+)\s+minutes?\s+)?(\d+)\s+second/i) and !/duplicate|hour/i.test(err.textContent)
QR.cooldown.auto = (!QR.captcha.isEnabled or !!QR.captcha.captchas.length) and !/have\s+been\s+muted/i.test(err.textContent)
seconds = 60 * (+(m[1]||0)) + (+m[2])
if /muted/i.test err.textContent
QR.cooldown.addMute seconds
else
true
QR.cooldown.addDelay post, +m[1]
QR.cooldown.addDelay post, seconds
QR.captcha.setup (d.activeElement is QR.nodes.status)
else # stop auto-posting
QR.cooldown.auto = false

View File

@ -60,6 +60,11 @@ QR.cooldown =
QR.cooldown.set g.BOARD.ID, Date.now(), cooldown
QR.cooldown.start()
addMute: (delay) ->
return unless Conf['Cooldown']
QR.cooldown.set g.BOARD.ID, Date.now(), {type: 'mute', delay}
QR.cooldown.start()
delete: (post) ->
return unless Conf['Cooldown']
$.forceSync 'cooldowns'
@ -121,7 +126,7 @@ QR.cooldown =
if cooldown.delay <= elapsed
delete cooldowns[start]
save.push scope
else if cooldown.type is type and cooldown.threadID is threadID
else if (cooldown.type is type and cooldown.threadID is threadID) or cooldown.type is 'mute'
# Delays only apply to the given post type and thread.
seconds = Math.max seconds, cooldown.delay - elapsed
continue