Tiny refactor in ThreadUpdater.

This commit is contained in:
Mayhem 2013-09-06 02:43:29 +02:00
parent fff4de5fa4
commit 15309e7968

View File

@ -24,7 +24,6 @@ ThreadUpdater =
ThreadUpdater.thread = @
ThreadUpdater.root = @OP.nodes.root.parentNode
ThreadUpdater.lastPost = +ThreadUpdater.root.lastElementChild.id.match(/\d+/)[0]
ThreadUpdater.outdateCount = 0
for input in $$ 'input', ThreadUpdater.dialog
if input.type is 'checkbox'
@ -36,7 +35,6 @@ ThreadUpdater =
when 'Auto Update This'
$.off input, 'change', $.cb.checked
$.on input, 'change', ThreadUpdater.cb.autoUpdate
$.event 'change', null, input
when 'Interval'
$.on input, 'change', ThreadUpdater.cb.interval
ThreadUpdater.cb.interval.call input
@ -54,15 +52,14 @@ ThreadUpdater =
cb:
online: ->
if ThreadUpdater.online = navigator.onLine
if navigator.onLine
ThreadUpdater.outdateCount = 0
ThreadUpdater.setInterval()
ThreadUpdater.update() if ThreadUpdater.isUpdating
ThreadUpdater.set 'status', null, null
else
ThreadUpdater.set 'timer', null
ThreadUpdater.set 'status', 'Offline', 'warning'
ThreadUpdater.cb.autoUpdate()
ThreadUpdater.count true
post: (e) ->
return unless ThreadUpdater.isUpdating and e.detail.threadID is ThreadUpdater.thread.ID
ThreadUpdater.outdateCount = 0
@ -71,28 +68,23 @@ ThreadUpdater =
return if d.hidden
# Reset the counter when we focus this tab.
ThreadUpdater.outdateCount = 0
if ThreadUpdater.seconds > ThreadUpdater.interval
ThreadUpdater.setInterval()
ThreadUpdater.seconds = Math.min ThreadUpdater.seconds, ThreadUpdater.interval
scrollBG: ->
ThreadUpdater.scrollBG = if Conf['Scroll BG']
-> true
else
-> not d.hidden
autoUpdate: (e) ->
ThreadUpdater.isUpdating = @checked if e
if ThreadUpdater.isUpdating and ThreadUpdater.online
ThreadUpdater.timeout()
else
clearTimeout ThreadUpdater.timeoutID
ThreadUpdater.count ThreadUpdater.isUpdating = @checked
interval: (e) ->
val = Math.max 5, parseInt @value, 10
ThreadUpdater.interval = @value = val
$.cb.value.call @ if e
load: (e) ->
{req} = ThreadUpdater
delete ThreadUpdater.req
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()
@ -118,7 +110,6 @@ ThreadUpdater =
else
["#{req.statusText} (#{req.status})", 'warning']
ThreadUpdater.set 'status', text, klass
delete ThreadUpdater.req
setInterval: ->
i = ThreadUpdater.interval
@ -128,8 +119,7 @@ ThreadUpdater =
j = Math.min j, 7
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()
ThreadUpdater.count true
set: (name, text, klass) ->
el = ThreadUpdater[name]
@ -141,14 +131,19 @@ ThreadUpdater =
el.textContent = text
el.className = klass if klass isnt undefined
count: (start) ->
clearTimeout ThreadUpdater.timeoutID
ThreadUpdater.timeout() if start and ThreadUpdater.isUpdating and navigator.onLine
timeout: ->
ThreadUpdater.timeoutID = setTimeout ThreadUpdater.timeout, 1000
ThreadUpdater.set 'timer', --ThreadUpdater.seconds
ThreadUpdater.update() if ThreadUpdater.seconds <= 0
sec = ThreadUpdater.seconds--
ThreadUpdater.set 'timer', sec
ThreadUpdater.update() if sec <= 0
update: ->
return unless ThreadUpdater.online
clearTimeout ThreadUpdater.timeoutID
return unless navigator.onLine
ThreadUpdater.count()
ThreadUpdater.set 'timer', '...'
ThreadUpdater.req.abort() if ThreadUpdater.req
url = "//api.4chan.org/#{ThreadUpdater.thread.board}/res/#{ThreadUpdater.thread}.json"