diff --git a/src/General/lib/databoard.class b/src/General/lib/databoard.class index 84b0db994..9adaec980 100755 --- a/src/General/lib/databoard.class +++ b/src/General/lib/databoard.class @@ -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: {}