Make use of xhr.timeout.
This commit is contained in:
parent
44bde8781f
commit
a1efe855e2
@ -56,7 +56,7 @@ ThreadUpdater =
|
|||||||
online: ->
|
online: ->
|
||||||
if ThreadUpdater.online = navigator.onLine
|
if ThreadUpdater.online = navigator.onLine
|
||||||
ThreadUpdater.outdateCount = 0
|
ThreadUpdater.outdateCount = 0
|
||||||
ThreadUpdater.set 'timer', ThreadUpdater.getInterval()
|
ThreadUpdater.setInterval()
|
||||||
ThreadUpdater.update() if ThreadUpdater.isUpdating
|
ThreadUpdater.update() if ThreadUpdater.isUpdating
|
||||||
ThreadUpdater.set 'status', null, null
|
ThreadUpdater.set 'status', null, null
|
||||||
else
|
else
|
||||||
@ -72,7 +72,7 @@ ThreadUpdater =
|
|||||||
# Reset the counter when we focus this tab.
|
# Reset the counter when we focus this tab.
|
||||||
ThreadUpdater.outdateCount = 0
|
ThreadUpdater.outdateCount = 0
|
||||||
if ThreadUpdater.seconds > ThreadUpdater.interval
|
if ThreadUpdater.seconds > ThreadUpdater.interval
|
||||||
ThreadUpdater.set 'timer', ThreadUpdater.getInterval()
|
ThreadUpdater.setInterval()
|
||||||
scrollBG: ->
|
scrollBG: ->
|
||||||
ThreadUpdater.scrollBG = if Conf['Scroll BG']
|
ThreadUpdater.scrollBG = if Conf['Scroll BG']
|
||||||
-> true
|
-> true
|
||||||
@ -81,32 +81,38 @@ ThreadUpdater =
|
|||||||
autoUpdate: (e) ->
|
autoUpdate: (e) ->
|
||||||
ThreadUpdater.isUpdating = @checked if e
|
ThreadUpdater.isUpdating = @checked if e
|
||||||
if ThreadUpdater.isUpdating and ThreadUpdater.online
|
if ThreadUpdater.isUpdating and ThreadUpdater.online
|
||||||
ThreadUpdater.timeoutID = setTimeout ThreadUpdater.timeout, 1000
|
ThreadUpdater.timeout()
|
||||||
else
|
else
|
||||||
clearTimeout ThreadUpdater.timeoutID
|
clearTimeout ThreadUpdater.timeoutID
|
||||||
interval: (e) ->
|
interval: (e) ->
|
||||||
val = Math.max 5, parseInt @value, 10
|
val = Math.max 5, parseInt @value, 10
|
||||||
ThreadUpdater.interval = @value = val
|
ThreadUpdater.interval = @value = val
|
||||||
$.cb.value.call @ if e
|
$.cb.value.call @ if e
|
||||||
load: ->
|
load: (e) ->
|
||||||
{req} = ThreadUpdater
|
{req} = ThreadUpdater
|
||||||
|
if e.type isnt 'loadend' # timeout or abort
|
||||||
|
req.onloadend = null
|
||||||
|
delete ThreadUpdater.req
|
||||||
|
if e.type is 'timeout'
|
||||||
|
ThreadUpdater.set 'status', 'Retrying', null
|
||||||
|
ThreadUpdater.update()
|
||||||
|
return
|
||||||
switch req.status
|
switch req.status
|
||||||
when 200
|
when 200
|
||||||
g.DEAD = false
|
g.DEAD = false
|
||||||
ThreadUpdater.parse JSON.parse(req.response).posts
|
ThreadUpdater.parse JSON.parse(req.response).posts
|
||||||
ThreadUpdater.set 'timer', ThreadUpdater.getInterval()
|
ThreadUpdater.setInterval()
|
||||||
when 404
|
when 404
|
||||||
g.DEAD = true
|
g.DEAD = true
|
||||||
ThreadUpdater.set 'timer', null
|
ThreadUpdater.set 'timer', null
|
||||||
ThreadUpdater.set 'status', '404', 'warning'
|
ThreadUpdater.set 'status', '404', 'warning'
|
||||||
clearTimeout ThreadUpdater.timeoutID
|
|
||||||
ThreadUpdater.thread.kill()
|
ThreadUpdater.thread.kill()
|
||||||
$.event 'ThreadUpdate',
|
$.event 'ThreadUpdate',
|
||||||
404: true
|
404: true
|
||||||
thread: ThreadUpdater.thread
|
thread: ThreadUpdater.thread
|
||||||
else
|
else
|
||||||
ThreadUpdater.outdateCount++
|
ThreadUpdater.outdateCount++
|
||||||
ThreadUpdater.set 'timer', ThreadUpdater.getInterval()
|
ThreadUpdater.setInterval()
|
||||||
[text, klass] = if req.status is 304
|
[text, klass] = if req.status is 304
|
||||||
[null, null]
|
[null, null]
|
||||||
else
|
else
|
||||||
@ -114,13 +120,16 @@ ThreadUpdater =
|
|||||||
ThreadUpdater.set 'status', text, klass
|
ThreadUpdater.set 'status', text, klass
|
||||||
delete ThreadUpdater.req
|
delete ThreadUpdater.req
|
||||||
|
|
||||||
getInterval: ->
|
setInterval: ->
|
||||||
i = ThreadUpdater.interval
|
i = ThreadUpdater.interval
|
||||||
j = Math.min ThreadUpdater.outdateCount, 10
|
j = Math.min ThreadUpdater.outdateCount, 10
|
||||||
unless d.hidden
|
unless d.hidden
|
||||||
# Lower the max refresh rate limit on visible tabs.
|
# Lower the max refresh rate limit on visible tabs.
|
||||||
j = Math.min j, 7
|
j = Math.min j, 7
|
||||||
ThreadUpdater.seconds = Math.max i, [0, 5, 10, 15, 20, 30, 60, 90, 120, 240, 300][j]
|
ThreadUpdater.seconds = Math.max i, [0, 5, 10, 15, 20, 30, 60, 90, 120, 240, 300][j]
|
||||||
|
ThreadUpdater.set 'timer', ThreadUpdater.seconds
|
||||||
|
clearTimeout ThreadUpdater.timeoutID
|
||||||
|
ThreadUpdater.timeout()
|
||||||
|
|
||||||
set: (name, text, klass) ->
|
set: (name, text, klass) ->
|
||||||
el = ThreadUpdater[name]
|
el = ThreadUpdater[name]
|
||||||
@ -134,24 +143,21 @@ ThreadUpdater =
|
|||||||
|
|
||||||
timeout: ->
|
timeout: ->
|
||||||
ThreadUpdater.timeoutID = setTimeout ThreadUpdater.timeout, 1000
|
ThreadUpdater.timeoutID = setTimeout ThreadUpdater.timeout, 1000
|
||||||
unless n = --ThreadUpdater.seconds
|
ThreadUpdater.set 'timer', --ThreadUpdater.seconds
|
||||||
ThreadUpdater.update()
|
ThreadUpdater.update() if ThreadUpdater.seconds <= 0
|
||||||
else if n <= -60
|
|
||||||
ThreadUpdater.set 'status', 'Retrying', null
|
|
||||||
ThreadUpdater.update()
|
|
||||||
else if n > 0
|
|
||||||
ThreadUpdater.set 'timer', n
|
|
||||||
|
|
||||||
update: ->
|
update: ->
|
||||||
return unless ThreadUpdater.online
|
return unless ThreadUpdater.online
|
||||||
ThreadUpdater.seconds = 0
|
clearTimeout ThreadUpdater.timeoutID
|
||||||
ThreadUpdater.set 'timer', '...'
|
ThreadUpdater.set 'timer', '...'
|
||||||
if ThreadUpdater.req
|
ThreadUpdater.req.abort() if ThreadUpdater.req
|
||||||
# abort() triggers onloadend, we don't want that.
|
|
||||||
ThreadUpdater.req.onloadend = null
|
|
||||||
ThreadUpdater.req.abort()
|
|
||||||
url = "//api.4chan.org/#{ThreadUpdater.thread.board}/res/#{ThreadUpdater.thread}.json"
|
url = "//api.4chan.org/#{ThreadUpdater.thread.board}/res/#{ThreadUpdater.thread}.json"
|
||||||
ThreadUpdater.req = $.ajax url, onloadend: ThreadUpdater.cb.load,
|
ThreadUpdater.req = $.ajax url,
|
||||||
|
onabort: ThreadUpdater.cb.load
|
||||||
|
onloadend: ThreadUpdater.cb.load
|
||||||
|
ontimeout: ThreadUpdater.cb.load
|
||||||
|
timeout: $.MINUTE
|
||||||
|
,
|
||||||
whenModified: true
|
whenModified: true
|
||||||
|
|
||||||
updateThreadStatus: (title, OP) ->
|
updateThreadStatus: (title, OP) ->
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user