From 3bb9cba3eef1ab820785324ce70d0c91f2e6a8c9 Mon Sep 17 00:00:00 2001 From: Nicolas Stepien Date: Mon, 23 Jan 2012 00:54:18 +0100 Subject: [PATCH] Send HTML response to the parent window; save and load poster identity. --- 4chan_x.user.js | 37 +++++++++++++++++++++++-------------- script.coffee | 32 ++++++++++++++++++-------------- 2 files changed, 41 insertions(+), 28 deletions(-) diff --git a/4chan_x.user.js b/4chan_x.user.js index 947b129da..81bcd8693 100644 --- a/4chan_x.user.js +++ b/4chan_x.user.js @@ -1339,10 +1339,10 @@ reply: (function() { function _Class(file) { - var previous, _ref, + var persona, previous, _ref, _this = this; this.com = null; - _ref = (previous = qr.replies[qr.replies.length - 1]) ? [previous.name, /^sage$/.test(previous.email) ? null : previous.email, conf['Remember Subject'] ? previous.sub : null, conf['Remember Spoiler'] ? previous.spoiler : false] : [$.get("qr_name", null), $.get("qr_email", null), conf['Remember Subject'] ? $.get("qr_sub", null) : null, false], this.name = _ref[0], this.email = _ref[1], this.sub = _ref[2], this.spoiler = _ref[3]; + _ref = (previous = qr.replies[qr.replies.length - 1]) ? [previous.name, /^sage$/.test(previous.email) ? null : previous.email, conf['Remember Subject'] ? previous.sub : null, conf['Remember Spoiler'] ? previous.spoiler : false] : (persona = $.get('qr.persona', {}), [persona.name || null, persona.email || null, conf['Remember Subject'] ? persona.sub || null : null, false]), this.name = _ref[0], this.email = _ref[1], this.sub = _ref[2], this.spoiler = _ref[3]; this.el = $.el('a', { className: 'preview', href: 'javascript:;', @@ -1607,18 +1607,18 @@ } return qr.message.send(post); }, - response: function(e) { - var reply, sage; - log(e); - return; - if (!(conf['Persistent QR'] || qr.replies.length > 1)) qr.close(); - sage = /sage/i.test(reply.email); + response: function(html) { + var persona, reply, sage; + log(html); + if (!(conf['Persistent QR'] || qr.replies.length > 1)) {} 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().select(); - return reply.rm(); + sage = /sage/i.test(reply.email); + persona = { + name: reply.name, + email: /^sage$/.test(reply.email) ? null : reply.email, + sub: conf['Remember Subject'] ? reply.sub : null + }; + return $.set('qr.persona', persona); }, message: { init: function() { @@ -1654,6 +1654,10 @@ if ((_ref = qr.ajax) != null) _ref.abort(); return; } + if (data.response) { + qr.response(data.html); + return; + } delete data.qr; if (data.mode === 'regist') { url = "http://sys.4chan.org/" + data.board + "/post?" + (Date.now()); @@ -1674,7 +1678,12 @@ val = data[name]; if (val) form.append(name, val); } - return qr.ajax = $.ajax(url, qr.response, { + return qr.ajax = $.ajax(url, (function() { + return qr.message.send({ + response: true, + html: this.response + }); + }), { type: 'post' }, form); } diff --git a/script.coffee b/script.coffee index b58c338c6..6bd205ede 100644 --- a/script.coffee +++ b/script.coffee @@ -998,10 +998,11 @@ qr = if conf['Remember Spoiler'] then previous.spoiler else false ] else + persona = $.get 'qr.persona', {} [ - $.get("qr_name", null), - $.get("qr_email", null), - if conf['Remember Subject'] then $.get("qr_sub", null) else null, + persona.name or null, + persona.email or null, + if conf['Remember Subject'] then persona.sub or null else null, false ] @@ -1226,24 +1227,24 @@ qr = qr.message.send post - response: (e) -> - log e - return + response: (html) -> + log html # successful posting/error handling unless conf['Persistent QR'] or qr.replies.length > 1 - qr.close() + ;# qr.close() + reply = qr.replies[0] 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'] + persona = + name: reply.name + email: if /^sage$/.test reply.email then null else reply.email + sub: if conf['Remember Subject'] then reply.sub else null + $.set 'qr.persona', persona - new qr.reply().select() if qr.replies.length is 1 - reply.rm() + # reply.rm() message: init: -> @@ -1273,6 +1274,9 @@ qr = if data.abort qr.ajax?.abort() return + if data.response # xhr response + qr.response data.html + return delete data.qr if data.mode is 'regist' # reply object: we're posting # fool CloudFlare's cache to hopefully avoid connection errors @@ -1293,7 +1297,7 @@ qr = delete data.upfile for name, val of data form.append name, val if val - qr.ajax = $.ajax url, qr.response, type: 'post', form + qr.ajax = $.ajax url, (-> qr.message.send response: true, html: @response), type: 'post', form options = init: ->