diff --git a/4chan_x.user.js b/4chan_x.user.js index 761368544..5b0863808 100644 --- a/4chan_x.user.js +++ b/4chan_x.user.js @@ -1312,12 +1312,10 @@ reply: (function() { function _Class(file) { - var name, _ref; + var previous, _ref; this.file = file; + _ref = (previous = qr.replies[qr.replies.length - 1]) ? [previous.name, /^sage$/.test(previous.email) ? null : previous.email, conf['Remember Subject'] ? previous.sub : null] : [$.get("qr_name", null), $.get("qr_email", null), conf['Remember Subject'] ? $.get("qr_sub", null) : null], this.name = _ref[0], this.email = _ref[1], this.sub = _ref[2]; this.com = null; - for (name in qr.inputs) { - this[name] = ((_ref = qr.replies[qr.replies.length - 1]) != null ? _ref[name] : void 0) || $.get("qr_" + name, null); - } qr.replies.push(this); } @@ -1325,6 +1323,8 @@ return log(this); }; + _Class.prototype.rm = function() {}; + return _Class; })(), @@ -1350,7 +1350,7 @@ } }); qr.mimeTypes = mimeTypes.split(', '); - qr.el = ui.dialog('qr', 'top:0;right:0;', "
Quick Reply " + (g.REPLY ? '' : threads) + "
"); + qr.el = ui.dialog('qr', 'top:0;right:0;', "
Quick Reply " + (g.REPLY ? '' : threads) + "
"); if (!g.REPLY) { $.on($('select', qr.el), 'mousedown', function(e) { return e.stopPropagation(); @@ -1363,11 +1363,6 @@ }); $.on($('form', qr.el), 'submit', qr.submit); $.on($('[type=file]', qr.el), 'change', qr.fileInput); - qr.inputs = { - name: $('[name=name]', qr.el), - email: $('[name=email]', qr.el) - }; - if (conf['Remember Subject']) qr.inputs.subject = $('[name=subject]', qr.el); new qr.reply().load(); return $.add(d.body, qr.el); }, @@ -1381,21 +1376,16 @@ return qr.cleanError(); }, response: function(e) { - var input, name, _ref, _results; + var reply, sage; log(e); - if (!conf['Persistent QR']) qr.close(); - if (/sage/i.test(qr.inputs.email.value)) { - qr.sage = true; - qr.inputs.email.value = null; - } - if (!conf['Remember Subject']) $('[name=subject]', qr.el).value = null; - _ref = qr.inputs; - _results = []; - for (name in _ref) { - input = _ref[name]; - _results.push($.set("qr_" + name, input.value)); - } - return _results; + if (!(conf['Persistent QR'] || qr.replies.length > 1)) qr.close(); + sage = /sage/i.test(reply.email); + reply = qr.replies[0]; + $.set("qr_name", reply.name); + $.set("qr_email", /^sage$/.test(reply.email) ? null : reply.email); + if (conf['Remember Subject']) $.set("qr_sub", reply.sub); + if (qr.replies.length === 1) new qr.reply().load(); + return reply.rm(); } }; diff --git a/script.coffee b/script.coffee index b6d775d86..fe1f8ce64 100644 --- a/script.coffee +++ b/script.coffee @@ -971,13 +971,28 @@ qr = replies: [] reply: class constructor: (@file) -> + [@name, @email, @sub] = + if previous = qr.replies[qr.replies.length-1] + [ + previous.name, + if /^sage$/.test(previous.email) then null else previous.email, + if conf['Remember Subject'] then previous.sub else null + ] + else + [ + $.get("qr_name", null), + $.get("qr_email", null), + if conf['Remember Subject'] then $.get("qr_sub", null) else null + ] @com = null - for name of qr.inputs - @[name] = qr.replies[qr.replies.length-1]?[name] or $.get "qr_#{name}", null qr.replies.push @ load: -> # load reply's data in the QR dialog + # visual feedback in the list log @ + rm: -> + # rm reply from qr.replies and the UI + dialog: -> # create a new thread or select thread to reply to @@ -1089,9 +1104,9 @@ textarea.field { #{if g.REPLY then '' else threads}
-
+
-
+
@@ -1105,12 +1120,8 @@ textarea.field { $.on $('form', qr.el), 'submit', qr.submit $.on $('[type=file]', qr.el), 'change', qr.fileInput - # save & load inputs' value with localStorage - qr.inputs = - name: $ '[name=name]', qr.el - email: $ '[name=email]', qr.el - qr.inputs.subject = $ '[name=subject]', qr.el if conf['Remember Subject'] new qr.reply().load() + #onchange this reply = # sync between tabs # $.on window, 'storage', (e) -> # if match = e.key.match /qr_(.+)$/ @@ -1131,16 +1142,19 @@ textarea.field { log e # successful posting/error handling - unless conf['Persistent QR'] # or more replies to post + unless conf['Persistent QR'] or qr.replies.length > 1 qr.close() - if /sage/i.test qr.inputs.email.value - qr.sage = true - qr.inputs.email.value = null - unless conf['Remember Subject'] - $('[name=subject]', qr.el).value = null - for name, input of qr.inputs - $.set "qr_#{name}", input.value + sage = /sage/i.test reply.email + # cooldown + + reply = qr.replies[0] + $.set "qr_name", reply.name + $.set "qr_email", if /^sage$/.test reply.email then null else reply.email + $.set "qr_sub", reply.sub if conf['Remember Subject'] + + new qr.reply().load() if qr.replies.length is 1 + reply.rm() options = init: ->