From a193d0a3acef9b02d4ab85e54e6d85baddbb556e Mon Sep 17 00:00:00 2001 From: ccd0 Date: Sun, 10 Jul 2016 01:40:03 -0700 Subject: [PATCH] Revert "Revert "Fetch boards.json data."" This reverts commit cc03357e071dc33bc54d4e25870998bde2d34139. --- src/General/BoardsJSON.coffee | 32 ++++++++++++++++++++++++++++++++ src/classes/Board.coffee | 1 + src/main/Main.coffee | 2 ++ 3 files changed, 35 insertions(+) create mode 100644 src/General/BoardsJSON.coffee diff --git a/src/General/BoardsJSON.coffee b/src/General/BoardsJSON.coffee new file mode 100644 index 000000000..e73630f76 --- /dev/null +++ b/src/General/BoardsJSON.coffee @@ -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 diff --git a/src/classes/Board.coffee b/src/classes/Board.coffee index 7f811d463..073f24fd5 100644 --- a/src/classes/Board.coffee +++ b/src/classes/Board.coffee @@ -4,5 +4,6 @@ class Board constructor: (@ID) -> @threads = new SimpleDict() @posts = new SimpleDict() + @json = BoardsJSON.boards?[@ID] g.boards[@] = @ diff --git a/src/main/Main.coffee b/src/main/Main.coffee index 1dbac1dc1..489f126a8 100644 --- a/src/main/Main.coffee +++ b/src/main/Main.coffee @@ -43,6 +43,7 @@ Main = for db in DataBoard.keys Conf[db] = boards: {} + Conf['boardsJSON'] = boards: {} Conf['archives'] = Redirect.archives Conf['selectedArchives'] = {} Conf['cooldowns'] = {} @@ -430,6 +431,7 @@ Main = features: [ ['Polyfill', Polyfill] + ['Boards JSON', BoardsJSON] ['Normalize URL', NormalizeURL] ['Captcha Configuration', Captcha.replace] ['Redirect', Redirect]