Abort the post submit when closing the QR. Fix stored captcha timeout checking when submitting. Probably fix some persona checking after post submission. Don't wait for the very slow sys.4chan.org to load to start listening to messages and send XHRs.

This commit is contained in:
Nicolas Stepien 2012-01-23 19:13:05 +01:00
parent ce2cf2891e
commit e357fec7f5
2 changed files with 20 additions and 22 deletions

View File

@ -1233,6 +1233,9 @@
close: function() { close: function() {
var i, spoiler, _i, _len, _ref; var i, spoiler, _i, _len, _ref;
qr.el.hidden = true; qr.el.hidden = true;
qr.message.send({
abort: true
});
d.activeElement.blur(); d.activeElement.blur();
$.removeClass(qr.el, 'dump'); $.removeClass(qr.el, 'dump');
_ref = qr.replies; _ref = qr.replies;
@ -1542,7 +1545,7 @@
return $.add(d.body, qr.el); return $.add(d.body, qr.el);
}, },
submit: function(e) { submit: function(e) {
var captcha, captchas, challenge, err, file, m, now, post, reader, reply, response, threadID; var captcha, captchas, challenge, err, file, m, now, post, reader, reply, response, threadID, time;
if (e != null) e.preventDefault(); if (e != null) e.preventDefault();
qr.message.send({ qr.message.send({
abort: true abort: true
@ -1554,7 +1557,7 @@
captchas = $.get('captchas', []); captchas = $.get('captchas', []);
if (captchas.length) { if (captchas.length) {
now = Date.now(); now = Date.now();
while (captchas[0].time < now) { while ((time = captchas[0].time) && time < now) {
captchas.shift(); captchas.shift();
} }
} }
@ -1621,7 +1624,6 @@
console.dir(b); console.dir(b);
return; return;
} }
if (!(conf['Persistent QR'] || qr.replies.length > 1)) qr.close();
reply = qr.replies[0]; reply = qr.replies[0];
sage = /sage/i.test(reply.email); sage = /sage/i.test(reply.email);
persona = { persona = {
@ -1630,11 +1632,15 @@
sub: conf['Remember Subject'] ? reply.sub : null sub: conf['Remember Subject'] ? reply.sub : null
}; };
$.set('qr.persona', persona); $.set('qr.persona', persona);
return reply.rm(); if (conf['Persistent QR'] || qr.replies.length > 1) {
return reply.rm();
} else {
return qr.close();
}
}, },
message: { message: {
init: function() { init: function() {
var code, script; var code;
code = function(e) { code = function(e) {
var data, host; var data, host;
data = e.data; data = e.data;
@ -1647,13 +1653,7 @@
return parent.postMessage(data, '*'); return parent.postMessage(data, '*');
} }
}; };
script = $.el('script', { return window.location = "javascript:window.addEventListener('message'," + code + ",false)";
textContent: "window.addEventListener('message'," + code + ",false)"
});
return $.ready(function() {
$.add(d.head, script);
return $.rm(script);
});
}, },
send: function(data) { send: function(data) {
data.changeContext = true; data.changeContext = true;

View File

@ -897,6 +897,7 @@ qr =
qr.dialog() qr.dialog()
close: -> close: ->
qr.el.hidden = true qr.el.hidden = true
qr.message.send abort: true
d.activeElement.blur() d.activeElement.blur()
$.removeClass qr.el, 'dump' $.removeClass qr.el, 'dump'
for i in qr.replies for i in qr.replies
@ -1172,7 +1173,7 @@ qr =
if captchas.length if captchas.length
# remove old captchas # remove old captchas
now = Date.now() now = Date.now()
while captchas[0].time < now while (time = captchas[0].time) and time < now
captchas.shift() captchas.shift()
if captcha = captchas.shift() if captcha = captchas.shift()
challenge = captcha.challenge challenge = captcha.challenge
@ -1238,9 +1239,6 @@ qr =
# error handling # error handling
return return
unless conf['Persistent QR'] or qr.replies.length > 1
qr.close()
reply = qr.replies[0] reply = qr.replies[0]
sage = /sage/i.test reply.email sage = /sage/i.test reply.email
# cooldown # cooldown
@ -1251,7 +1249,10 @@ qr =
sub: if conf['Remember Subject'] then reply.sub else null sub: if conf['Remember Subject'] then reply.sub else null
$.set 'qr.persona', persona $.set 'qr.persona', persona
reply.rm() if conf['Persistent QR'] or qr.replies.length > 1
reply.rm()
else
qr.close()
message: message:
init: -> init: ->
@ -1268,11 +1269,8 @@ qr =
document.getElementById('iframe').contentWindow.postMessage data, '*' document.getElementById('iframe').contentWindow.postMessage data, '*'
else if host is 'sys.4chan.org' else if host is 'sys.4chan.org'
parent.postMessage data, '*' parent.postMessage data, '*'
script = $.el 'script', # do not wait for 4chan to load
textContent: "window.addEventListener('message',#{code},false)" window.location = "javascript:window.addEventListener('message',#{code},false)"
$.ready ->
$.add d.head, script
$.rm script
send: (data) -> send: (data) ->
data.changeContext = true data.changeContext = true
data.qr = true data.qr = true