diff --git a/4chan_x.js b/4chan_x.js index 4bf887597..c3f285170 100644 --- a/4chan_x.js +++ b/4chan_x.js @@ -561,7 +561,7 @@ $.replace(td.firstChild, a); reply = td.nextSibling; id = reply.id; - _results.push(id in g.hiddenReply ? replyHiding.hide(reply) : void 0); + _results.push(id in g.hiddenReplies ? replyHiding.hide(reply) : void 0); } return _results; }, @@ -589,15 +589,15 @@ $.before(table, div); } id = reply.id; - g.hiddenReply[id] = Date.now(); - return $.setValue("hiddenReply/" + g.BOARD + "/", g.hiddenReply); + g.hiddenReplies[id] = Date.now(); + return $.setValue("hiddenReplies/" + g.BOARD + "/", g.hiddenReplies); }, show: function(table) { var id; $.show(table); id = $('td[id]', table).id; - delete g.hiddenReply[id]; - return $.setValue("hiddenReply/" + g.BOARD + "/", g.hiddenReply); + delete g.hiddenReplies[id]; + return $.setValue("hiddenReplies/" + g.BOARD + "/", g.hiddenReplies); } }; keybinds = { @@ -860,7 +860,7 @@ } }, dialog: function() { - var checked, conf, dialog, hiddenNum, hiddenThread, html, input, name, title, _i, _len, _ref; + var checked, conf, dialog, hiddenNum, hiddenThreads, html, input, name, title, _i, _len, _ref; html = "
Options X
"; conf = config.main.checkbox; for (name in conf) { @@ -870,8 +870,8 @@ } html += "
Flavors
"; html += "
"; - hiddenThread = $.getValue("hiddenThread/" + g.BOARD + "/", {}); - hiddenNum = Object.keys(g.hiddenReply).length + Object.keys(hiddenThread).length; + hiddenThreads = $.getValue("hiddenThreads/" + g.BOARD + "/", {}); + hiddenNum = Object.keys(g.hiddenReplies).length + Object.keys(hiddenThreads).length; html += "
"; html += "
"; html += "
support throd
"; @@ -901,8 +901,8 @@ }, cb: { clearHidden: function(e) { - $.deleteValue("hiddenReply/" + g.BOARD + "/"); - $.deleteValue("hiddenThread/" + g.BOARD + "/"); + $.deleteValue("hiddenReplies/" + g.BOARD + "/"); + $.deleteValue("hiddenThreads/" + g.BOARD + "/"); this.value = "hidden: 0"; return g.hiddenReplies = {}; } @@ -1174,7 +1174,7 @@ threadHiding = { init: function() { var a, hiddenThreads, op, thread, _i, _len, _ref, _results; - hiddenThreads = $.getValue("hiddenThread/" + g.BOARD + "/", {}); + hiddenThreads = $.getValue("hiddenThreads/" + g.BOARD + "/", {}); _ref = $$('div.thread'); _results = []; for (_i = 0, _len = _ref.length; _i < _len; _i++) { @@ -1212,9 +1212,9 @@ var hiddenThreads, id; threadHiding.hideHide(thread); id = thread.firstChild.id; - hiddenThreads = $.getValue("hiddenThread/" + g.BOARD + "/", {}); + hiddenThreads = $.getValue("hiddenThreads/" + g.BOARD + "/", {}); hiddenThreads[id] = Date.now(); - return $.setValue("hiddenThread/" + g.BOARD + "/", hiddenThreads); + return $.setValue("hiddenThreads/" + g.BOARD + "/", hiddenThreads); }, hideHide: function(thread) { var a, div, name, num, span, text, trip, _ref; @@ -1250,9 +1250,9 @@ $.show(thread); $.show(thread.nextSibling); id = thread.firstChild.id; - hiddenThreads = $.getValue("hiddenThread/" + g.BOARD + "/", {}); + hiddenThreads = $.getValue("hiddenThreads/" + g.BOARD + "/", {}); delete hiddenThreads[id]; - return $.setValue("hiddenThread/" + g.BOARD + "/", hiddenThreads); + return $.setValue("hiddenThreads/" + g.BOARD + "/", hiddenThreads); } }; updater = { @@ -1993,7 +1993,7 @@ }; main = { init: function() { - var callback, navtopr, pathname, temp, tzOffset, _i, _len, _ref2; + var DAY, callback, cutoff, hiddenThreads, id, lastChecked, navtopr, now, pathname, temp, timestamp, tzOffset, _i, _len, _ref2, _ref3; Favicon.halo = /ws/.test(Favicon["default"]) ? Favicon.haloSFW : Favicon.haloNSFW; pathname = location.pathname.substring(1).split('/'); g.BOARD = pathname[0], temp = pathname[1]; @@ -2003,32 +2003,35 @@ } else { g.PAGENUM = parseInt(temp) || 0; } - g.hiddenReply = $.getValue("hiddenReply/" + g.BOARD + "/", {}); + g.hiddenReplies = $.getValue("hiddenReplies/" + g.BOARD + "/", {}); tzOffset = (new Date()).getTimezoneOffset() / 60; g.chanOffset = 5 - tzOffset; if ($.isDST()) { g.chanOffset -= 1; } - /* - lastChecked = Number GM_getValue('lastChecked', '0') - now = Date.now() - DAY = 1000 * 60 * 60 * 24 - if lastChecked < now - 1*DAY - cutoff = now - 7*DAY - while g.hiddenThreads.length - if g.hiddenThreads[0].timestamp > cutoff - break - g.hiddenThreads.shift() - - while g.hiddenReplies.length - if g.hiddenReplies[0].timestamp > cutoff - break - g.hiddenReplies.shift() - - GM_setValue("hiddenThreads/#{g.BOARD}/", JSON.stringify(g.hiddenThreads)) - GM_setValue("hiddenReplies/#{g.BOARD}/", JSON.stringify(g.hiddenReplies)) - GM_setValue('lastChecked', now.toString()) - */ + lastChecked = $.getValue('lastChecked', 0); + now = Date.now(); + DAY = 1000 * 60 * 60 * 24; + if (lastChecked < now - 1 * DAY) { + cutoff = now - 7 * DAY; + hiddenThreads = $.getValue("hiddenThreads/" + g.BOARD + "/", {}); + for (id in hiddenThreads) { + timestamp = hiddenThreads[id]; + if (timestamp < cutoff) { + delete hiddenThreads[id]; + } + } + _ref2 = g.hiddenReplies; + for (id in _ref2) { + timestamp = _ref2[id]; + if (timestamp < cutoff) { + delete g.hiddenReplies[id]; + } + } + $.setValue("hiddenThreads/" + g.BOARD + "/", hiddenThreads); + $.setValue("hiddenReplies/" + g.BOARD + "/", g.hiddenReplies); + $.setValue('lastChecked', now); + } $.addStyle(main.css); if (location.hostname === 'sys.4chan.org') { qr.sys(); @@ -2110,9 +2113,9 @@ expandComment.init(); } } - _ref2 = g.callbacks; - for (_i = 0, _len = _ref2.length; _i < _len; _i++) { - callback = _ref2[_i]; + _ref3 = g.callbacks; + for (_i = 0, _len = _ref3.length; _i < _len; _i++) { + callback = _ref3[_i]; callback(); } return $.bind(d.body, 'DOMNodeInserted', nodeInserted); diff --git a/script.coffee b/script.coffee index a03a7e5aa..870728b8f 100644 --- a/script.coffee +++ b/script.coffee @@ -383,7 +383,7 @@ replyHiding = reply = td.nextSibling id = reply.id - if id of g.hiddenReply + if id of g.hiddenReplies replyHiding.hide reply show: (e) -> @@ -409,15 +409,15 @@ replyHiding = $.before table, div id = reply.id - g.hiddenReply[id] = Date.now() - $.setValue "hiddenReply/#{g.BOARD}/", g.hiddenReply + g.hiddenReplies[id] = Date.now() + $.setValue "hiddenReplies/#{g.BOARD}/", g.hiddenReplies show: (table) -> $.show table id = $('td[id]', table).id - delete g.hiddenReply[id] - $.setValue "hiddenReply/#{g.BOARD}/", g.hiddenReply + delete g.hiddenReplies[id] + $.setValue "hiddenReplies/#{g.BOARD}/", g.hiddenReplies keybinds = init: -> @@ -651,8 +651,8 @@ options = html += "
Flavors
" html += "
" - hiddenThread = $.getValue "hiddenThread/#{g.BOARD}/", {} - hiddenNum = Object.keys(g.hiddenReply).length + Object.keys(hiddenThread).length + hiddenThreads = $.getValue "hiddenThreads/#{g.BOARD}/", {} + hiddenNum = Object.keys(g.hiddenReplies).length + Object.keys(hiddenThreads).length html += "
" html += "
" @@ -675,8 +675,8 @@ options = clearHidden: (e) -> #'hidden' might be misleading; it's the number of IDs we're *looking* for, # not the number of posts actually hidden on the page. - $.deleteValue "hiddenReply/#{g.BOARD}/" - $.deleteValue "hiddenThread/#{g.BOARD}/" + $.deleteValue "hiddenReplies/#{g.BOARD}/" + $.deleteValue "hiddenThreads/#{g.BOARD}/" @value = "hidden: 0" g.hiddenReplies = {} @@ -907,7 +907,7 @@ threading = threadHiding = init: -> - hiddenThreads = $.getValue "hiddenThread/#{g.BOARD}/", {} + hiddenThreads = $.getValue "hiddenThreads/#{g.BOARD}/", {} for thread in $$ 'div.thread' op = thread.firstChild a = $.el 'a', @@ -937,9 +937,9 @@ threadHiding = id = thread.firstChild.id - hiddenThreads = $.getValue "hiddenThread/#{g.BOARD}/", {} + hiddenThreads = $.getValue "hiddenThreads/#{g.BOARD}/", {} hiddenThreads[id] = Date.now() - $.setValue "hiddenThread/#{g.BOARD}/", hiddenThreads + $.setValue "hiddenThreads/#{g.BOARD}/", hiddenThreads hideHide: (thread) -> if $.config 'Show Stubs' @@ -974,9 +974,9 @@ threadHiding = id = thread.firstChild.id - hiddenThreads = $.getValue "hiddenThread/#{g.BOARD}/", {} + hiddenThreads = $.getValue "hiddenThreads/#{g.BOARD}/", {} delete hiddenThreads[id] - $.setValue "hiddenThread/#{g.BOARD}/", hiddenThreads + $.setValue "hiddenThreads/#{g.BOARD}/", hiddenThreads updater = init: -> @@ -1526,32 +1526,30 @@ main = g.THREAD_ID = pathname[2] else g.PAGENUM = parseInt(temp) || 0 - g.hiddenReply = $.getValue "hiddenReply/#{g.BOARD}/", {} + g.hiddenReplies = $.getValue "hiddenReplies/#{g.BOARD}/", {} tzOffset = (new Date()).getTimezoneOffset() / 60 # GMT -8 is given as +480; would GMT +8 be -480 ? g.chanOffset = 5 - tzOffset# 4chan = EST = GMT -5 if $.isDST() then g.chanOffset -= 1 - ### - lastChecked = Number GM_getValue('lastChecked', '0') + lastChecked = $.getValue 'lastChecked', 0 now = Date.now() DAY = 1000 * 60 * 60 * 24 if lastChecked < now - 1*DAY cutoff = now - 7*DAY - while g.hiddenThreads.length - if g.hiddenThreads[0].timestamp > cutoff - break - g.hiddenThreads.shift() + hiddenThreads = $.getValue "hiddenThreads/#{g.BOARD}/", {} - while g.hiddenReplies.length - if g.hiddenReplies[0].timestamp > cutoff - break - g.hiddenReplies.shift() + for id, timestamp of hiddenThreads + if timestamp < cutoff + delete hiddenThreads[id] - GM_setValue("hiddenThreads/#{g.BOARD}/", JSON.stringify(g.hiddenThreads)) - GM_setValue("hiddenReplies/#{g.BOARD}/", JSON.stringify(g.hiddenReplies)) - GM_setValue('lastChecked', now.toString()) - ### + for id, timestamp of g.hiddenReplies + if timestamp < cutoff + delete g.hiddenReplies[id] + + $.setValue "hiddenThreads/#{g.BOARD}/", hiddenThreads + $.setValue "hiddenReplies/#{g.BOARD}/", g.hiddenReplies + $.setValue 'lastChecked', now $.addStyle main.css