Fetch boards.json data.

This commit is contained in:
ccd0 2016-01-27 10:04:19 -08:00
parent 3a9fa8d98f
commit 19ba43ae3d
4 changed files with 36 additions and 0 deletions

View File

@ -108,6 +108,7 @@ module.exports = (grunt) ->
'src/classes/Connection.coffee'
'src/classes/Fetcher.coffee'
'src/General/Polyfill.coffee'
'src/General/BoardsJSON.coffee'
'src/General/Header.coffee'
'src/General/Index.coffee'
'src/General/Build.coffee'

View File

@ -0,0 +1,32 @@
BoardsJSON =
cbs: []
init: ->
if (Conf['boardsJSON'].lastChecked or 0) < Date.now() - 2 * $.HOUR
$.ajax '//a.4cdn.org/boards.json', onloadend: @load
else
@set Conf['boardsJSON'].boards
load: ->
if @status is 200
boards = {}
for board in @response.boards
boards[board.board] = board
$.set 'boardsJSON', {boards, lastChecked: Date.now()}
else
{boards} = Conf['boardsJSON']
new Notice 'warning', "Failed to load boards JSON. Error #{@statusText} (#{@status})", 20
BoardsJSON.set boards
set: (@boards) ->
for ID, board of @boards
g.boards[ID]?.json = board
for cb in @cbs
$.queueTask cb
return
ready: (cb) ->
if @boards
cb()
else
@cbs.push cb

View File

@ -36,6 +36,7 @@ Main =
for db in DataBoard.keys
Conf[db] = boards: {}
Conf['boardsJSON'] = boards: {}
Conf['selectedArchives'] = {}
Conf['cooldowns'] = {}
@ -357,6 +358,7 @@ Main =
features: [
['Polyfill', Polyfill]
['Boards JSON', BoardsJSON]
['Normalize URL', NormalizeURL]
['Captcha Configuration', Captcha.replace]
['Redirect', Redirect]

View File

@ -4,5 +4,6 @@ class Board
constructor: (@ID) ->
@threads = new SimpleDict()
@posts = new SimpleDict()
@json = BoardsJSON.boards?[@ID]
g.boards[@] = @