More accurate QR/post deletion cooldown. Close #774.

This commit is contained in:
Nicolas Stepien 2012-09-28 00:47:39 +02:00
parent 3ef78f8461
commit c64bb3c361
2 changed files with 48 additions and 29 deletions

View File

@ -1836,29 +1836,36 @@
}, },
cooldown: { cooldown: {
init: function() { init: function() {
var length, timeout, _ref;
if (!Conf['Cooldown']) { if (!Conf['Cooldown']) {
return; return;
} }
QR.cooldown.start($.get("/" + g.BOARD + "/cooldown", 0)); _ref = $.get("/" + g.BOARD + "/cooldown", {}), timeout = _ref.timeout, length = _ref.length;
if (timeout) {
QR.cooldown.start(timeout, length);
}
return $.sync("/" + g.BOARD + "/cooldown", QR.cooldown.start); return $.sync("/" + g.BOARD + "/cooldown", QR.cooldown.start);
}, },
start: function(timeout) { start: function(timeout, length) {
var seconds; var seconds;
seconds = Math.floor((timeout - Date.now()) / 1000); seconds = Math.floor((timeout - Date.now()) / 1000);
return QR.cooldown.count(seconds); return QR.cooldown.count(seconds, length);
}, },
set: function(seconds) { set: function(seconds) {
if (!Conf['Cooldown']) { if (!Conf['Cooldown']) {
return; return;
} }
QR.cooldown.count(seconds); QR.cooldown.count(seconds, seconds);
return $.set("/" + g.BOARD + "/cooldown", Date.now() + seconds * $.SECOND); return $.set("/" + g.BOARD + "/cooldown", {
timeout: Date.now() + seconds * $.SECOND,
length: seconds
});
}, },
count: function(seconds) { count: function(seconds, length) {
if (!((0 <= seconds && seconds <= 60))) { if (!((0 <= seconds && seconds <= length))) {
return; return;
} }
setTimeout(QR.cooldown.count, 1000, seconds - 1); setTimeout(QR.cooldown.count, 1000, seconds - 1, length);
QR.cooldown.seconds = seconds; QR.cooldown.seconds = seconds;
if (seconds === 0) { if (seconds === 0) {
$["delete"]("/" + g.BOARD + "/cooldown"); $["delete"]("/" + g.BOARD + "/cooldown");
@ -2548,7 +2555,7 @@
} else { } else {
QR.cooldown.auto = QR.replies.length > 1; QR.cooldown.auto = QR.replies.length > 1;
sage = /sage/i.test(reply.email); sage = /sage/i.test(reply.email);
seconds = g.BOARD === 'q' ? reply.file ? 300 : sage ? 600 : 60 : sage ? 60 : 30; seconds = g.BOARD === 'q' ? sage ? 600 : reply.file ? 300 : 60 : sage ? 60 : 30;
QR.cooldown.set(seconds); QR.cooldown.set(seconds);
if (Conf['Open Reply in New Tab'] && !g.REPLY && !QR.cooldown.auto) { if (Conf['Open Reply in New Tab'] && !g.REPLY && !QR.cooldown.auto) {
$.open("//boards.4chan.org/" + g.BOARD + "/res/" + threadID + "#p" + postID); $.open("//boards.4chan.org/" + g.BOARD + "/res/" + threadID + "#p" + postID);
@ -4331,14 +4338,16 @@
}, },
cooldown: { cooldown: {
start: function(e) { start: function(e) {
return DeleteLink.cooldown.count(e.detail.postID, 30); var seconds;
seconds = g.BOARD === 'q' ? 600 : 30;
return DeleteLink.cooldown.count(e.detail.postID, seconds, seconds);
}, },
count: function(postID, seconds) { count: function(postID, seconds, length) {
var el; var el;
if (!((0 <= seconds && seconds <= 30))) { if (!((0 <= seconds && seconds <= length))) {
return; return;
} }
setTimeout(DeleteLink.cooldown.count, 1000, postID, seconds - 1); setTimeout(DeleteLink.cooldown.count, 1000, postID, seconds - 1, length);
el = DeleteLink.cooldown.el; el = DeleteLink.cooldown.el;
if (seconds === 0) { if (seconds === 0) {
if (el != null) { if (el != null) {

View File

@ -1418,18 +1418,21 @@ QR =
cooldown: cooldown:
init: -> init: ->
return unless Conf['Cooldown'] return unless Conf['Cooldown']
QR.cooldown.start $.get "/#{g.BOARD}/cooldown", 0 {timeout, length} = $.get "/#{g.BOARD}/cooldown", {}
QR.cooldown.start timeout, length if timeout
$.sync "/#{g.BOARD}/cooldown", QR.cooldown.start $.sync "/#{g.BOARD}/cooldown", QR.cooldown.start
start: (timeout) -> start: (timeout, length) ->
seconds = Math.floor (timeout - Date.now()) / 1000 seconds = Math.floor (timeout - Date.now()) / 1000
QR.cooldown.count seconds QR.cooldown.count seconds, length
set: (seconds) -> set: (seconds) ->
return unless Conf['Cooldown'] return unless Conf['Cooldown']
QR.cooldown.count seconds QR.cooldown.count seconds, seconds
$.set "/#{g.BOARD}/cooldown", Date.now() + seconds*$.SECOND $.set "/#{g.BOARD}/cooldown",
count: (seconds) -> timeout: Date.now() + seconds * $.SECOND
return unless 0 <= seconds <= 60 length: seconds
setTimeout QR.cooldown.count, 1000, seconds-1 count: (seconds, length) ->
return unless 0 <= seconds <= length
setTimeout QR.cooldown.count, 1000, seconds-1, length
QR.cooldown.seconds = seconds QR.cooldown.seconds = seconds
if seconds is 0 if seconds is 0
$.delete "/#{g.BOARD}/cooldown" $.delete "/#{g.BOARD}/cooldown"
@ -2001,12 +2004,14 @@ QR =
QR.cooldown.auto = QR.replies.length > 1 QR.cooldown.auto = QR.replies.length > 1
sage = /sage/i.test reply.email sage = /sage/i.test reply.email
seconds = seconds =
# 300 seconds cooldown for new threads
# q: 86400 seconds
# b soc r9k: 600 seconds
if g.BOARD is 'q' if g.BOARD is 'q'
# that makes no sense.png if sage
if reply.file
300
else if sage
600 600
else if reply.file
300
else else
60 60
else if sage else if sage
@ -3566,10 +3571,15 @@ DeleteLink =
cooldown: cooldown:
start: (e) -> start: (e) ->
DeleteLink.cooldown.count e.detail.postID, 30 seconds =
count: (postID, seconds) -> if g.BOARD is 'q'
return unless 0 <= seconds <= 30 600
setTimeout DeleteLink.cooldown.count, 1000, postID, seconds-1 else
30
DeleteLink.cooldown.count e.detail.postID, seconds, seconds
count: (postID, seconds, length) ->
return unless 0 <= seconds <= length
setTimeout DeleteLink.cooldown.count, 1000, postID, seconds-1, length
{el} = DeleteLink.cooldown {el} = DeleteLink.cooldown
if seconds is 0 if seconds is 0
el?.textContent = 'Delete' el?.textContent = 'Delete'