stop onebox rapid fire
This commit is contained in:
parent
82132ab48b
commit
3be7bde401
|
@ -13,17 +13,26 @@ Discourse.Onebox = (->
|
|||
null
|
||||
|
||||
lookupCache = (url) ->
|
||||
localCache[url]
|
||||
cached = localCache[url]
|
||||
if cached && cached.then # its a promise
|
||||
null
|
||||
else
|
||||
cached
|
||||
|
||||
lookup = (url, refresh, callback) ->
|
||||
cached = lookupCache(url) unless refresh
|
||||
cached = localCache[url]
|
||||
cached = null if refresh && cached && !cached.then
|
||||
if cached
|
||||
callback(cached)
|
||||
if cached.then
|
||||
cached.then(callback(lookupCache(url)))
|
||||
else
|
||||
callback(cached)
|
||||
return false
|
||||
else
|
||||
$.get "/onebox", url: url, refresh: refresh, (html) ->
|
||||
cache(url, $.get "/onebox", url: url, refresh: refresh, (html) ->
|
||||
cache(url,html)
|
||||
callback(html)
|
||||
)
|
||||
return true
|
||||
|
||||
load = (e, refresh=false) ->
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
describe "Discourse.Onebox", ->
|
||||
|
||||
beforeEach ->
|
||||
spyOn($, 'ajax').andCallThrough()
|
||||
|
||||
it "Stops rapid calls with cache true", ->
|
||||
Discourse.Onebox.lookup('http://bla.com', true, (c) -> c)
|
||||
Discourse.Onebox.lookup('http://bla.com', true, (c) -> c)
|
||||
expect($.ajax.calls.length).toBe(1)
|
||||
|
||||
it "Stops rapid calls with cache false", ->
|
||||
Discourse.Onebox.lookup('http://bla.com/a', false, (c) -> c)
|
||||
Discourse.Onebox.lookup('http://bla.com/a', false, (c) -> c)
|
||||
expect($.ajax.calls.length).toBe(1)
|
Loading…
Reference in New Issue