Rewrite ThreadWatcher DataBoard use to reduce use of forceSync. #1012
This commit is contained in:
parent
b98a0d48be
commit
3f63be3cec
@ -122,11 +122,8 @@ ThreadWatcher =
|
|||||||
$.event 'CloseMenu'
|
$.event 'CloseMenu'
|
||||||
pruneDeads: ->
|
pruneDeads: ->
|
||||||
return if $.hasClass @, 'disabled'
|
return if $.hasClass @, 'disabled'
|
||||||
ThreadWatcher.db.forceSync()
|
|
||||||
for {boardID, threadID, data} in ThreadWatcher.getAll() when data.isDead
|
for {boardID, threadID, data} in ThreadWatcher.getAll() when data.isDead
|
||||||
delete ThreadWatcher.db.data.boards[boardID][threadID]
|
ThreadWatcher.db.delete {boardID, threadID}
|
||||||
ThreadWatcher.db.deleteIfEmpty {boardID}
|
|
||||||
ThreadWatcher.db.save()
|
|
||||||
ThreadWatcher.refresh()
|
ThreadWatcher.refresh()
|
||||||
$.event 'CloseMenu'
|
$.event 'CloseMenu'
|
||||||
toggle: ->
|
toggle: ->
|
||||||
@ -145,21 +142,19 @@ ThreadWatcher =
|
|||||||
onIndexRefresh: ->
|
onIndexRefresh: ->
|
||||||
{db} = ThreadWatcher
|
{db} = ThreadWatcher
|
||||||
boardID = g.BOARD.ID
|
boardID = g.BOARD.ID
|
||||||
db.forceSync()
|
|
||||||
nKilled = 0
|
nKilled = 0
|
||||||
for threadID, data of db.data.boards[boardID] when not data?.isDead and threadID not of g.BOARD.threads
|
for threadID, data of db.data.boards[boardID] when not data?.isDead and threadID not of g.BOARD.threads
|
||||||
nKilled++
|
nKilled++
|
||||||
if Conf['Auto Prune'] or not (data and typeof data is 'object') # corrupt data
|
if Conf['Auto Prune'] or not (data and typeof data is 'object') # corrupt data
|
||||||
db.delete {boardID, threadID}
|
db.delete {boardID, threadID}
|
||||||
else
|
else
|
||||||
|
db.extend {boardID, threadID, val: {isDead: true}}
|
||||||
if ThreadWatcher.unreadEnabled and Conf['Show Unread Count']
|
if ThreadWatcher.unreadEnabled and Conf['Show Unread Count']
|
||||||
ThreadWatcher.fetchStatus {boardID, threadID, data}
|
ThreadWatcher.fetchStatus {boardID, threadID, data}
|
||||||
data.isDead = true
|
|
||||||
db.set {boardID, threadID, val: data}
|
|
||||||
ThreadWatcher.refresh() if nKilled
|
ThreadWatcher.refresh() if nKilled
|
||||||
onThreadRefresh: (e) ->
|
onThreadRefresh: (e) ->
|
||||||
thread = g.threads[e.detail.threadID]
|
thread = g.threads[e.detail.threadID]
|
||||||
return unless e.detail[404] and ThreadWatcher.db.get {boardID: thread.board.ID, threadID: thread.ID}
|
return unless e.detail[404] and ThreadWatcher.isWatched thread
|
||||||
# Update dead status.
|
# Update dead status.
|
||||||
ThreadWatcher.add thread
|
ThreadWatcher.add thread
|
||||||
|
|
||||||
@ -184,8 +179,8 @@ ThreadWatcher =
|
|||||||
interval = if ThreadWatcher.unreadEnabled and Conf['Show Unread Count'] then 5 * $.MINUTE else 2 * $.HOUR
|
interval = if ThreadWatcher.unreadEnabled and Conf['Show Unread Count'] then 5 * $.MINUTE else 2 * $.HOUR
|
||||||
now = Date.now()
|
now = Date.now()
|
||||||
if now >= (db.data.lastChecked or 0) + interval
|
if now >= (db.data.lastChecked or 0) + interval
|
||||||
|
ThreadWatcher.fetchAllStatus() # calls forceSync
|
||||||
db.data.lastChecked = now
|
db.data.lastChecked = now
|
||||||
ThreadWatcher.fetchAllStatus()
|
|
||||||
db.save()
|
db.save()
|
||||||
ThreadWatcher.timeout = setTimeout ThreadWatcher.fetchAuto, interval
|
ThreadWatcher.timeout = setTimeout ThreadWatcher.fetchAuto, interval
|
||||||
|
|
||||||
@ -261,20 +256,14 @@ ThreadWatcher =
|
|||||||
quotingYou++
|
quotingYou++
|
||||||
|
|
||||||
if isDead isnt data.isDead or unread isnt data.unread or quotingYou isnt data.quotingYou
|
if isDead isnt data.isDead or unread isnt data.unread or quotingYou isnt data.quotingYou
|
||||||
data.isDead = isDead
|
ThreadWatcher.db.extend {boardID, threadID, val: {isDead, unread, quotingYou}}
|
||||||
data.unread = unread
|
|
||||||
data.quotingYou = quotingYou
|
|
||||||
ThreadWatcher.db.set {boardID, threadID, val: data}
|
|
||||||
ThreadWatcher.refresh()
|
ThreadWatcher.refresh()
|
||||||
|
|
||||||
else if @status is 404
|
else if @status is 404
|
||||||
if Conf['Auto Prune']
|
if Conf['Auto Prune']
|
||||||
ThreadWatcher.db.delete {boardID, threadID}
|
ThreadWatcher.db.delete {boardID, threadID}
|
||||||
else
|
else
|
||||||
data.isDead = true
|
ThreadWatcher.db.extend {boardID, threadID, val: {isDead: true}, rm: ['unread', 'quotingYou']}
|
||||||
delete data.unread
|
|
||||||
delete data.quotingYou
|
|
||||||
ThreadWatcher.db.set {boardID, threadID, val: data}
|
|
||||||
|
|
||||||
ThreadWatcher.refresh()
|
ThreadWatcher.refresh()
|
||||||
|
|
||||||
@ -368,10 +357,8 @@ ThreadWatcher =
|
|||||||
n = 0
|
n = 0
|
||||||
n++ for key, val of newData when data[key] isnt val
|
n++ for key, val of newData when data[key] isnt val
|
||||||
return unless n
|
return unless n
|
||||||
ThreadWatcher.db.forceSync()
|
return unless (data = ThreadWatcher.db.get {boardID, threadID})
|
||||||
return unless data = ThreadWatcher.db.get {boardID, threadID}
|
ThreadWatcher.db.extend {boardID, threadID, val: newData}
|
||||||
$.extend data, newData
|
|
||||||
ThreadWatcher.db.set {boardID, threadID, val: data}
|
|
||||||
if line = $ "#watched-threads > [data-full-i-d='#{boardID}.#{threadID}']", ThreadWatcher.dialog
|
if line = $ "#watched-threads > [data-full-i-d='#{boardID}.#{threadID}']", ThreadWatcher.dialog
|
||||||
newLine = ThreadWatcher.makeLine boardID, threadID, data
|
newLine = ThreadWatcher.makeLine boardID, threadID, data
|
||||||
$.replace line, newLine
|
$.replace line, newLine
|
||||||
@ -385,10 +372,7 @@ ThreadWatcher =
|
|||||||
ThreadWatcher.db.delete {boardID, threadID}
|
ThreadWatcher.db.delete {boardID, threadID}
|
||||||
return cb()
|
return cb()
|
||||||
return cb() if data.isDead and not (data.unread? or data.quotingYou?)
|
return cb() if data.isDead and not (data.unread? or data.quotingYou?)
|
||||||
data.isDead = true
|
ThreadWatcher.db.extend {boardID, threadID, val: {isDead: true}, rm: ['unread', 'quotingYou']}, cb
|
||||||
delete data.unread
|
|
||||||
delete data.quotingYou
|
|
||||||
ThreadWatcher.db.set {boardID, threadID, val: data}, cb
|
|
||||||
|
|
||||||
toggle: (thread) ->
|
toggle: (thread) ->
|
||||||
boardID = thread.board.ID
|
boardID = thread.board.ID
|
||||||
|
|||||||
@ -51,9 +51,10 @@ class DataBoard
|
|||||||
@data.boards[boardID] = val
|
@data.boards[boardID] = val
|
||||||
@save cb
|
@save cb
|
||||||
|
|
||||||
extend: ({boardID, threadID, postID, val}, cb) ->
|
extend: ({boardID, threadID, postID, val, rm}, cb) ->
|
||||||
$.forceSync @key
|
$.forceSync @key
|
||||||
oldVal = @get {boardID, threadID, postID, val: {}}
|
oldVal = @get {boardID, threadID, postID, val: {}}
|
||||||
|
delete oldVal[key] for key in rm or []
|
||||||
$.extend oldVal, val
|
$.extend oldVal, val
|
||||||
@setUnsafe {boardID, threadID, postID, val: oldVal}, cb
|
@setUnsafe {boardID, threadID, postID, val: oldVal}, cb
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user