From 240a57c72c7997fec33453b8f95b56bbbde80efa Mon Sep 17 00:00:00 2001 From: ccd0 Date: Sun, 11 Jan 2015 10:51:08 -0800 Subject: [PATCH] Add timer for thread watcher. --- src/General/Config.coffee | 4 ++++ src/Monitoring/ThreadWatcher.coffee | 22 +++++++++++++++------- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/src/General/Config.coffee b/src/General/Config.coffee index 77e20776a..dcc8d3f73 100755 --- a/src/General/Config.coffee +++ b/src/General/Config.coffee @@ -560,6 +560,10 @@ Config = false 'Only show watched threads from the current board.' ] + 'Auto Update Thread Watcher': [ + true + 'Periodically check status of watched threads.' + ] 'Auto Watch': [ false 'Automatically watch threads you start.' diff --git a/src/Monitoring/ThreadWatcher.coffee b/src/Monitoring/ThreadWatcher.coffee index 0650e8898..8d1cd0a45 100755 --- a/src/Monitoring/ThreadWatcher.coffee +++ b/src/Monitoring/ThreadWatcher.coffee @@ -33,11 +33,7 @@ ThreadWatcher = Header.addShortcut sc $.addClass doc, 'fixed-watcher' - now = Date.now() - if (@db.data.lastChecked or 0) < now - 2 * $.HOUR - @db.data.lastChecked = now - ThreadWatcher.fetchAllStatus() - @db.save() + ThreadWatcher.fetchAuto() Post.callbacks.push name: 'Thread Watcher' @@ -151,6 +147,17 @@ ThreadWatcher = fetchCount: fetched: 0 fetching: 0 + fetchAuto: -> + clearTimeout ThreadWatcher.timeout + return unless Conf['Auto Update Thread Watcher'] + {db} = ThreadWatcher + interval = if Conf['Show Unread Count'] then 5 * $.MINUTE else 2 * $.HOUR + now = Date.now() + if now >= (db.data.lastChecked or 0) + interval + db.data.lastChecked = now + ThreadWatcher.fetchAllStatus() + db.save() + ThreadWatcher.timeout = setTimeout ThreadWatcher.fetchAuto, interval fetchAllStatus: -> ThreadWatcher.db.forceSync() ThreadWatcher.unreaddb.forceSync() @@ -410,9 +417,10 @@ ThreadWatcher = createSubEntry: (name, desc) -> entry = type: 'thread watcher' - el: UI.checkbox name, " #{name}" + el: UI.checkbox name, " #{name.replace ' Thread Watcher', ''}" entry.el.title = desc input = entry.el.firstElementChild $.on input, 'change', $.cb.checked - $.on input, 'change', ThreadWatcher.refresh if name is 'Current Board' or name is 'Show Unread Count' + $.on input, 'change', ThreadWatcher.refresh if name in ['Current Board', 'Show Unread Count'] + $.on input, 'change', ThreadWatcher.fetchAuto if name in ['Show Unread Count', 'Auto Update Thread Watcher'] entry