From f32f0bb77deace26a5fb4d9491f1d62788b7c74b Mon Sep 17 00:00:00 2001 From: ccd0 Date: Sat, 23 Jan 2016 22:47:17 -0800 Subject: [PATCH] Queue callbacks from $.cache so any errors don't break setting req.evt / calling other callbacks. --- src/General/$.coffee | 6 +++--- src/classes/Fetcher.coffee | 10 +++++----- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/General/$.coffee b/src/General/$.coffee index 0e697ca76..a0b68d7ec 100644 --- a/src/General/$.coffee +++ b/src/General/$.coffee @@ -86,7 +86,7 @@ do -> $.cache = (url, cb, options) -> if req = reqs[url] if req.readyState is 4 - $.queueTask -> cb.call req, req.evt + $.queueTask -> cb.call req, req.evt, true else req.callbacks.push cb return req @@ -96,9 +96,9 @@ do -> catch err return $.on req, 'load', (e) -> - cb.call @, e for cb in @callbacks @evt = e - @cached = true + for cb in @callbacks + $.queueTask => cb.call @, e, false delete @callbacks $.on req, 'abort error', rm req.callbacks = [cb] diff --git a/src/classes/Fetcher.coffee b/src/classes/Fetcher.coffee index a2c1c15c6..297dcbb24 100644 --- a/src/classes/Fetcher.coffee +++ b/src/classes/Fetcher.coffee @@ -6,8 +6,8 @@ class Fetcher @root.textContent = "Loading post No.#{@postID}..." if @threadID - $.cache "//a.4cdn.org/#{@boardID}/thread/#{@threadID}.json", (e) => - @fetchedPost e.target + $.cache "//a.4cdn.org/#{@boardID}/thread/#{@threadID}.json", (e, isCached) => + @fetchedPost e.target, isCached else @archivedPost() @@ -32,7 +32,7 @@ class Fetcher $.add @root, nodes.root $.event 'PostsInserted' - fetchedPost: (req) -> + fetchedPost: (req, isCached) -> # In case of multiple callbacks for the same request, # don't parse the same original post more than once. if post = g.posts["#{@boardID}.#{@postID}"] @@ -59,11 +59,11 @@ class Fetcher if post.no isnt @postID # Cached requests can be stale and must be rechecked. - if req.cached + if isCached api = "//a.4cdn.org/#{@boardID}/thread/#{@threadID}.json" $.cleanCache (url) -> url is api $.cache api, (e) => - @fetchedPost e.target + @fetchedPost e.target, false return # The post can be deleted by the time we check a quote.