From a117e3ed361ac7a344669342dd4bf81108a8a8d2 Mon Sep 17 00:00:00 2001 From: ccd0 Date: Sat, 1 Oct 2016 19:25:25 -0700 Subject: [PATCH] Fix oversight. Index needs to keep track of hidden threads, not just filtered ones. Fixes bug from 445b6fdf6f180db22f7cc1505d67f460858e1f35. --- src/Filtering/ThreadHiding.coffee | 3 +++ src/General/Index.coffee | 16 +++++++++++----- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/Filtering/ThreadHiding.coffee b/src/Filtering/ThreadHiding.coffee index 103ddf14f..a3613e958 100644 --- a/src/Filtering/ThreadHiding.coffee +++ b/src/Filtering/ThreadHiding.coffee @@ -43,6 +43,9 @@ ThreadHiding = threadID: threadID ThreadHiding.hiddenThreads = hiddenThreads2 + isHidden: (boardID, threadID) -> + !!(ThreadHiding.db and ThreadHiding.db.get {boardID, threadID}) + node: -> return if @isReply or @isClone or @isFetchedQuote diff --git a/src/General/Index.coffee b/src/General/Index.coffee index f96502270..6331168c8 100644 --- a/src/General/Index.coffee +++ b/src/General/Index.coffee @@ -487,8 +487,8 @@ Index = updateHideLabel: -> hiddenCount = 0 - for threadID, thread of g.BOARD.threads when thread.isHidden - hiddenCount++ if thread.ID in Index.liveThreadIDs + for threadID in Index.liveThreadIDs when Index.isHidden(threadID) + hiddenCount++ unless hiddenCount Index.hideLabel.hidden = true Index.cb.toggleHiddenThreads() if Index.showHiddenThreads @@ -597,13 +597,19 @@ Index = Index.parsedThreads[data.no] = obj = Build.parseJSON data, g.BOARD.ID obj.filterResults = results = Filter.test obj obj.isOnTop = results.top - obj.isHidden = results.hide + obj.isHidden = results.hide or ThreadHiding.isHidden(obj.boardID, obj.threadID) if Index.liveThreadData[0] Build.spoilerRange[g.BOARD.ID] = Index.liveThreadData[0].custom_spoiler g.BOARD.threads.forEach (thread) -> (thread.collect() unless thread.ID in Index.liveThreadIDs) return + isHidden: (threadID) -> + if (thread = g.BOARD.threads[threadID]) and thread.OP and not thread.OP.isFetchedQuote + thread.isHidden + else + Index.parsedThreads[threadID].isHidden + buildThreads: -> return unless Index.liveThreadData Index.nodes = {} @@ -738,7 +744,7 @@ Index = # Highlighted threads Index.sortOnTop (obj) -> obj.isOnTop or Conf['Pin Watched Threads'] and ThreadWatcher.isWatchedRaw(obj.boardID, obj.threadID) # Non-hidden threads - Index.sortOnTop((obj) -> !obj.isHidden) if Conf['Anchor Hidden Threads'] + Index.sortOnTop((obj) -> !Index.isHidden(obj.threadID)) if Conf['Anchor Hidden Threads'] sortOnTop: (match) -> topThreads = [] @@ -753,7 +759,7 @@ Index = when 'all pages' threadIDs = Index.sortedThreadIDs when 'catalog' - threadIDs = Index.sortedThreadIDs.filter (ID) -> !Index.parsedThreads[ID].isHidden isnt Index.showHiddenThreads + threadIDs = Index.sortedThreadIDs.filter (ID) -> !Index.isHidden(ID) isnt Index.showHiddenThreads else threadIDs = Index.threadsOnPage Index.currentPage threads = threadIDs.map (ID) -> g.BOARD.threads[ID]