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