Fix loophole in Thread Watcher aborting.
This commit is contained in:
parent
695e995dce
commit
3da684a08c
@ -202,6 +202,7 @@ ThreadWatcher =
|
|||||||
$.rmClass ThreadWatcher.refreshButton, 'fa-spin'
|
$.rmClass ThreadWatcher.refreshButton, 'fa-spin'
|
||||||
|
|
||||||
abort: ->
|
abort: ->
|
||||||
|
delete ThreadWatcher.syncing
|
||||||
for req in ThreadWatcher.requests when !req.finished
|
for req in ThreadWatcher.requests when !req.finished
|
||||||
req.finished = true
|
req.finished = true
|
||||||
req.abort()
|
req.abort()
|
||||||
@ -229,17 +230,22 @@ ThreadWatcher =
|
|||||||
ThreadWatcher.timeout = setTimeout ThreadWatcher.fetchAuto, interval
|
ThreadWatcher.timeout = setTimeout ThreadWatcher.fetchAuto, interval
|
||||||
|
|
||||||
buttonFetchAll: ->
|
buttonFetchAll: ->
|
||||||
if ThreadWatcher.requests.length
|
if ThreadWatcher.syncing or ThreadWatcher.requests.length
|
||||||
ThreadWatcher.abort()
|
ThreadWatcher.abort()
|
||||||
else
|
else
|
||||||
ThreadWatcher.fetchAllStatus()
|
ThreadWatcher.fetchAllStatus()
|
||||||
|
|
||||||
fetchAllStatus: ->
|
fetchAllStatus: ->
|
||||||
|
ThreadWatcher.status.textContent = '...'
|
||||||
|
$.addClass ThreadWatcher.refreshButton, 'fa-spin'
|
||||||
|
ThreadWatcher.syncing = true
|
||||||
dbs = [ThreadWatcher.db, ThreadWatcher.unreaddb, QuoteYou.db].filter((x) -> x)
|
dbs = [ThreadWatcher.db, ThreadWatcher.unreaddb, QuoteYou.db].filter((x) -> x)
|
||||||
n = 0
|
n = 0
|
||||||
for dbi in dbs
|
for dbi in dbs
|
||||||
dbi.forceSync ->
|
dbi.forceSync ->
|
||||||
if (++n) is dbs.length
|
if (++n) is dbs.length
|
||||||
|
return if !ThreadWatcher.syncing # aborted
|
||||||
|
delete ThreadWatcher.syncing
|
||||||
# XXX On vichan boards, last_modified field of threads.json does not account for sage posts.
|
# XXX On vichan boards, last_modified field of threads.json does not account for sage posts.
|
||||||
# Occasionally check replies field of catalog.json to find these posts.
|
# Occasionally check replies field of catalog.json to find these posts.
|
||||||
{db} = ThreadWatcher
|
{db} = ThreadWatcher
|
||||||
@ -250,6 +256,8 @@ ThreadWatcher =
|
|||||||
ThreadWatcher.fetchBoard board, deep
|
ThreadWatcher.fetchBoard board, deep
|
||||||
db.setLastChecked()
|
db.setLastChecked()
|
||||||
db.setLastChecked('lastChecked2') if deep
|
db.setLastChecked('lastChecked2') if deep
|
||||||
|
if ThreadWatcher.fetched is ThreadWatcher.requests.length
|
||||||
|
ThreadWatcher.clearRequests()
|
||||||
|
|
||||||
fetchBoard: (board, deep) ->
|
fetchBoard: (board, deep) ->
|
||||||
return unless board.some (thread) -> !thread.data.isDead
|
return unless board.some (thread) -> !thread.data.isDead
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user