Make use of archive.json for cleaning DataBoards.

This commit is contained in:
ccd0 2015-02-15 22:15:12 -08:00
parent b954ade8f3
commit 414be72b4a

View File

@ -77,17 +77,32 @@ class DataBoard
if (@data.lastChecked or 0) < now - 2 * $.HOUR
@data.lastChecked = now
for boardID of @data.boards
for threadID of @data.boards[boardID]
@ajaxClean boardID, threadID
@ajaxClean boardID
return
ajaxClean: (boardID, threadID) ->
$.ajax "//a.4cdn.org/#{boardID}/thread/#{threadID}.json",
onloadend: (e) =>
if e.target.status is 404
@delete {boardID, threadID}
,
type: 'head'
ajaxClean: (boardID) ->
$.cache "//a.4cdn.org/#{boardID}/threads.json", (e1) =>
if e1.target.status is 200
if boardID in ['b', 'f']
@ajaxCleanParse boardID, e1.target.response
else
$.cache "//a.4cdn.org/#{boardID}/archive.json", (e2) =>
if e2.target.status is 200
@ajaxCleanParse boardID, e1.target.response, e2.target.response
ajaxCleanParse: (boardID, response1, response2) ->
board = @data.boards[boardID]
threads = {}
for page in response1
for thread in page.threads
ID = thread.no
threads[ID] = board[ID] if ID of board
if response2
for ID in response2
threads[ID] = board[ID] if ID of board
@data.boards[boardID] = threads
@deleteIfEmpty {boardID}
@save()
onSync: (data) =>
@data = data or boards: {}