From f248398b46005baacfee139e388d0deec16e6b7f Mon Sep 17 00:00:00 2001 From: James Campos Date: Sat, 7 May 2011 21:41:09 -0700 Subject: [PATCH] use g.requests, handle !200 --- 4chan_x.js | 24 ++++++++++++++---------- script.coffee | 22 +++++++++++++--------- 2 files changed, 27 insertions(+), 19 deletions(-) diff --git a/4chan_x.js b/4chan_x.js index 96b77b8b1..b52bc1a25 100644 --- a/4chan_x.js +++ b/4chan_x.js @@ -1692,35 +1692,39 @@ return _results; }, mouseover: function(e) { - var el, html, id, qp, threadID; + var el, id, qp, req, threadID; id = this.textContent.replace(">>", ''); qp = $('#qp'); if (el = d.getElementById(id)) { qp.innerHTML = el.innerHTML; } else { threadID = this.pathname.split('/').pop(); - if (html = g.cache[threadID]) { - quotePreview.get(id, threadID, html); + if (req = g.requests[threadID] && req.readyState === 4) { + quotePreview.parse(req, id, threadID); } else { qp.innerHTML = "Loading " + id + "..."; - $.get(this.href, (function() { - html = this.responseText; - g.cache[threadID] = html; - return quotePreview.get(id, threadID, html); - })); + if (!req) { + g.requests[threadID] = $.get(this.href, (function() { + return quotePreview.parse(this, id, threadID); + })); + } } } $.show(qp); return ui.el = qp; }, - get: function(id, threadID, innerHTML) { + parse: function(req, id, threadID) { var body, html, qp, reply, _i, _len, _ref; qp = $('#qp'); if (qp.innerHTML !== ("Loading " + id + "...")) { return; } + if (req.status !== 200) { + qp.innerHTML = "" + req.status + " " + req.statusText; + return; + } body = $.el('body', { - innerHTML: innerHTML + innerHTML: req.responseText }); if (id === threadID) { html = $('blockquote', body).innerHTML; diff --git a/script.coffee b/script.coffee index 59ec8c26f..5b039478e 100644 --- a/script.coffee +++ b/script.coffee @@ -1355,21 +1355,25 @@ quotePreview = qp.innerHTML = el.innerHTML else threadID = @pathname.split('/').pop() - if html = g.cache[threadID] - quotePreview.get id, threadID, html + if req = g.requests[threadID] and req.readyState is 4 + quotePreview.parse req, id, threadID else qp.innerHTML = "Loading #{id}..." - $.get @href, (-> - html = @responseText - g.cache[threadID] = html - quotePreview.get id, threadID, html - ) + if not req + g.requests[threadID] = $.get @href, + (-> quotePreview.parse this, id, threadID) $.show qp ui.el = qp - get: (id, threadID, innerHTML) -> + parse: (req, id, threadID) -> qp = $ '#qp' return unless qp.innerHTML is "Loading #{id}..." - body = $.el 'body', {innerHTML} + + if req.status isnt 200 + qp.innerHTML = "#{req.status} #{req.statusText}" + return + + body = $.el 'body', + innerHTML: req.responseText if id == threadID #OP html = $('blockquote', body).innerHTML else