ThreadHiding refactor.
This commit is contained in:
parent
e9c7e71e23
commit
628ae5d9db
116
4chan_x.user.js
116
4chan_x.user.js
@ -605,7 +605,7 @@
|
|||||||
if (result === true) {
|
if (result === true) {
|
||||||
if (isOP) {
|
if (isOP) {
|
||||||
if (!g.REPLY) {
|
if (!g.REPLY) {
|
||||||
ThreadHiding.hideHide(post.el.parentNode);
|
ThreadHiding.hide(post.el.parentNode);
|
||||||
} else {
|
} else {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -1051,7 +1051,7 @@
|
|||||||
Keybinds.hl(-1, thread);
|
Keybinds.hl(-1, thread);
|
||||||
break;
|
break;
|
||||||
case conf.hide:
|
case conf.hide:
|
||||||
ThreadHiding.toggle(thread);
|
if (/\bthread\b/.test(thread.className)) ThreadHiding.toggle(thread);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return;
|
return;
|
||||||
@ -2443,10 +2443,9 @@
|
|||||||
|
|
||||||
ThreadHiding = {
|
ThreadHiding = {
|
||||||
init: function() {
|
init: function() {
|
||||||
var a, hiddenThreads, op, thread, _i, _len, _ref, _results;
|
var a, hiddenThreads, op, thread, _i, _len, _ref;
|
||||||
hiddenThreads = $.get("hiddenThreads/" + g.BOARD + "/", {});
|
hiddenThreads = $.get("hiddenThreads/" + g.BOARD + "/", {});
|
||||||
_ref = $$('.thread');
|
_ref = $$('.thread');
|
||||||
_results = [];
|
|
||||||
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
||||||
thread = _ref[_i];
|
thread = _ref[_i];
|
||||||
op = thread.firstChild;
|
op = thread.firstChild;
|
||||||
@ -2454,83 +2453,62 @@
|
|||||||
textContent: '[ - ]',
|
textContent: '[ - ]',
|
||||||
href: 'javascript:;'
|
href: 'javascript:;'
|
||||||
});
|
});
|
||||||
$.on(a, 'click', ThreadHiding.cb.hide);
|
$.on(a, 'click', ThreadHiding.cb);
|
||||||
$.prepend(op, a);
|
$.prepend(op, a);
|
||||||
if (op.id in hiddenThreads) {
|
if (op.id in hiddenThreads) ThreadHiding.hide(thread);
|
||||||
_results.push(ThreadHiding.hideHide(thread));
|
|
||||||
} else {
|
|
||||||
_results.push(void 0);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return _results;
|
|
||||||
},
|
},
|
||||||
cb: {
|
cb: function() {
|
||||||
hide: function() {
|
return ThreadHiding.toggle(this.parentNode.parentNode);
|
||||||
var thread;
|
|
||||||
thread = this.parentNode.parentNode;
|
|
||||||
return ThreadHiding.hide(thread);
|
|
||||||
},
|
|
||||||
show: function() {
|
|
||||||
var thread;
|
|
||||||
thread = this.parentNode.parentNode;
|
|
||||||
return ThreadHiding.show(thread);
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
toggle: function(thread) {
|
toggle: function(thread) {
|
||||||
if (/\bstub\b/.test(thread.className) || thread.hidden) {
|
var hiddenThreads, id;
|
||||||
return ThreadHiding.show(thread);
|
hiddenThreads = $.get("hiddenThreads/" + g.BOARD + "/", {});
|
||||||
|
id = $('.op', thread).id;
|
||||||
|
if (thread.hidden || /\bstub\b/.test(thread.className)) {
|
||||||
|
ThreadHiding.show(thread);
|
||||||
|
delete hiddenThreads[id];
|
||||||
} else {
|
} else {
|
||||||
return ThreadHiding.hide(thread);
|
ThreadHiding.hide(thread);
|
||||||
|
hiddenThreads[id] = Date.now();
|
||||||
}
|
}
|
||||||
|
return $.set("hiddenThreads/" + g.BOARD + "/", hiddenThreads);
|
||||||
},
|
},
|
||||||
hide: function(thread) {
|
hide: function(thread) {
|
||||||
var hiddenThreads, id;
|
var a, div, name, num, op, span, text, trip, uid, _ref, _ref2;
|
||||||
ThreadHiding.hideHide(thread);
|
if (!conf['Show Stubs']) {
|
||||||
id = thread.firstChild.id;
|
|
||||||
hiddenThreads = $.get("hiddenThreads/" + g.BOARD + "/", {});
|
|
||||||
hiddenThreads[id] = Date.now();
|
|
||||||
return $.set("hiddenThreads/" + g.BOARD + "/", hiddenThreads);
|
|
||||||
},
|
|
||||||
hideHide: function(thread) {
|
|
||||||
var a, div, name, num, span, text, trip, uid, _ref, _ref2;
|
|
||||||
if (conf['Show Stubs']) {
|
|
||||||
if (/stub/.test(thread.className)) return;
|
|
||||||
if (span = $('.omittedposts', thread)) {
|
|
||||||
num = Number(span.textContent.match(/\d+/)[0]);
|
|
||||||
} else {
|
|
||||||
num = 0;
|
|
||||||
}
|
|
||||||
num += $$('table', thread).length;
|
|
||||||
text = num === 1 ? "1 reply" : "" + num + " replies";
|
|
||||||
name = $('.postername', thread).textContent;
|
|
||||||
uid = ((_ref = $('.posteruid', thread)) != null ? _ref.textContent : void 0) || '';
|
|
||||||
trip = ((_ref2 = $('.postername + .postertrip', thread)) != null ? _ref2.textContent : void 0) || '';
|
|
||||||
a = $.el('a', {
|
|
||||||
innerHTML: "<span>[ + ]</span> " + name + uid + trip + " (" + text + ")",
|
|
||||||
href: 'javascript:;'
|
|
||||||
});
|
|
||||||
$.on(a, 'click', ThreadHiding.cb.show);
|
|
||||||
div = $.el('div', {
|
|
||||||
className: 'block'
|
|
||||||
});
|
|
||||||
$.add(div, a);
|
|
||||||
$.add(thread, div);
|
|
||||||
return $.addClass(thread, 'stub');
|
|
||||||
} else {
|
|
||||||
thread.hidden = true;
|
thread.hidden = true;
|
||||||
return thread.nextSibling.hidden = true;
|
thread.nextSibling.hidden = true;
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
if (/\bstub\b/.test(thread.className)) return;
|
||||||
|
num = 0;
|
||||||
|
if (span = $('.omittedposts', thread)) {
|
||||||
|
num = Number(span.textContent.match(/\d+/)[0]);
|
||||||
|
}
|
||||||
|
num += $$('.op ~ table', thread).length;
|
||||||
|
text = num === 1 ? '1 reply' : "" + num + " replies";
|
||||||
|
op = $('.op', thread);
|
||||||
|
name = $('.postername', op).textContent;
|
||||||
|
uid = ((_ref = $('.posteruid', op)) != null ? _ref.textContent : void 0) || '';
|
||||||
|
trip = ((_ref2 = $('.postertrip', op)) != null ? _ref2.textContent : void 0) || '';
|
||||||
|
a = $.el('a', {
|
||||||
|
innerHTML: "<span>[ + ]</span> " + name + " " + uid + " " + trip + " (" + text + ")",
|
||||||
|
href: 'javascript:;'
|
||||||
|
});
|
||||||
|
$.on(a, 'click', ThreadHiding.cb);
|
||||||
|
div = $.el('div', {
|
||||||
|
className: 'block'
|
||||||
|
});
|
||||||
|
$.add(div, a);
|
||||||
|
$.prepend(thread, div);
|
||||||
|
return $.addClass(thread, 'stub');
|
||||||
},
|
},
|
||||||
show: function(thread) {
|
show: function(thread, id) {
|
||||||
var hiddenThreads, id;
|
$.rm($('.block', thread));
|
||||||
$.rm($('div.block', thread));
|
|
||||||
$.removeClass(thread, 'stub');
|
$.removeClass(thread, 'stub');
|
||||||
thread.hidden = false;
|
thread.hidden = false;
|
||||||
thread.nextSibling.hidden = false;
|
return thread.nextSibling.hidden = false;
|
||||||
id = thread.firstChild.id;
|
|
||||||
hiddenThreads = $.get("hiddenThreads/" + g.BOARD + "/", {});
|
|
||||||
delete hiddenThreads[id];
|
|
||||||
return $.set("hiddenThreads/" + g.BOARD + "/", hiddenThreads);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -4097,7 +4075,9 @@ a[href="javascript:;"] {\
|
|||||||
text-decoration: none;\
|
text-decoration: none;\
|
||||||
}\
|
}\
|
||||||
\
|
\
|
||||||
.thread.stub > :not(.block),\
|
.block ~ .op,\
|
||||||
|
.block ~ .omittedposts,\
|
||||||
|
.block ~ table,\
|
||||||
#content > [name=tab]:not(:checked) + div,\
|
#content > [name=tab]:not(:checked) + div,\
|
||||||
#updater:not(:hover) > :not(.move),\
|
#updater:not(:hover) > :not(.move),\
|
||||||
#qp > input, #qp .inline, .forwarded {\
|
#qp > input, #qp .inline, .forwarded {\
|
||||||
|
|||||||
@ -540,7 +540,7 @@ Filter =
|
|||||||
if result is true
|
if result is true
|
||||||
if isOP
|
if isOP
|
||||||
unless g.REPLY
|
unless g.REPLY
|
||||||
ThreadHiding.hideHide post.el.parentNode
|
ThreadHiding.hide post.el.parentNode
|
||||||
else
|
else
|
||||||
continue
|
continue
|
||||||
else
|
else
|
||||||
@ -888,7 +888,7 @@ Keybinds =
|
|||||||
when conf.previousReply
|
when conf.previousReply
|
||||||
Keybinds.hl -1, thread
|
Keybinds.hl -1, thread
|
||||||
when conf.hide
|
when conf.hide
|
||||||
ThreadHiding.toggle thread
|
ThreadHiding.toggle thread if /\bthread\b/.test thread.className
|
||||||
else
|
else
|
||||||
return
|
return
|
||||||
e.preventDefault()
|
e.preventDefault()
|
||||||
@ -2057,75 +2057,63 @@ ThreadHiding =
|
|||||||
a = $.el 'a',
|
a = $.el 'a',
|
||||||
textContent: '[ - ]'
|
textContent: '[ - ]'
|
||||||
href: 'javascript:;'
|
href: 'javascript:;'
|
||||||
$.on a, 'click', ThreadHiding.cb.hide
|
$.on a, 'click', ThreadHiding.cb
|
||||||
$.prepend op, a
|
$.prepend op, a
|
||||||
|
|
||||||
if op.id of hiddenThreads
|
if op.id of hiddenThreads
|
||||||
ThreadHiding.hideHide thread
|
ThreadHiding.hide thread
|
||||||
|
return
|
||||||
|
|
||||||
cb:
|
cb: ->
|
||||||
hide: ->
|
ThreadHiding.toggle @parentNode.parentNode
|
||||||
thread = @parentNode.parentNode
|
|
||||||
ThreadHiding.hide thread
|
|
||||||
show: ->
|
|
||||||
thread = @parentNode.parentNode
|
|
||||||
ThreadHiding.show thread
|
|
||||||
|
|
||||||
toggle: (thread) ->
|
toggle: (thread) ->
|
||||||
if /\bstub\b/.test(thread.className) or thread.hidden
|
hiddenThreads = $.get "hiddenThreads/#{g.BOARD}/", {}
|
||||||
|
id = $('.op', thread).id
|
||||||
|
if thread.hidden or /\bstub\b/.test thread.className
|
||||||
ThreadHiding.show thread
|
ThreadHiding.show thread
|
||||||
|
delete hiddenThreads[id]
|
||||||
else
|
else
|
||||||
ThreadHiding.hide thread
|
ThreadHiding.hide thread
|
||||||
|
hiddenThreads[id] = Date.now()
|
||||||
hide: (thread) ->
|
|
||||||
ThreadHiding.hideHide thread
|
|
||||||
|
|
||||||
id = thread.firstChild.id
|
|
||||||
|
|
||||||
hiddenThreads = $.get "hiddenThreads/#{g.BOARD}/", {}
|
|
||||||
hiddenThreads[id] = Date.now()
|
|
||||||
$.set "hiddenThreads/#{g.BOARD}/", hiddenThreads
|
$.set "hiddenThreads/#{g.BOARD}/", hiddenThreads
|
||||||
|
|
||||||
hideHide: (thread) ->
|
hide: (thread) ->
|
||||||
if conf['Show Stubs']
|
unless conf['Show Stubs']
|
||||||
return if /stub/.test thread.className #already hidden by filter
|
|
||||||
if span = $ '.omittedposts', thread
|
|
||||||
num = Number span.textContent.match(/\d+/)[0]
|
|
||||||
else
|
|
||||||
num = 0
|
|
||||||
num += $$('table', thread).length
|
|
||||||
text = if num is 1 then "1 reply" else "#{num} replies"
|
|
||||||
name = $('.postername', thread).textContent
|
|
||||||
uid = $('.posteruid', thread)?.textContent or ''
|
|
||||||
trip = $('.postername + .postertrip', thread)?.textContent or ''
|
|
||||||
|
|
||||||
a = $.el 'a',
|
|
||||||
innerHTML: "<span>[ + ]</span> #{name}#{uid}#{trip} (#{text})"
|
|
||||||
href: 'javascript:;'
|
|
||||||
$.on a, 'click', ThreadHiding.cb.show
|
|
||||||
|
|
||||||
div = $.el 'div',
|
|
||||||
className: 'block'
|
|
||||||
|
|
||||||
$.add div, a
|
|
||||||
$.add thread, div
|
|
||||||
$.addClass thread, 'stub'
|
|
||||||
else
|
|
||||||
thread.hidden = true
|
thread.hidden = true
|
||||||
thread.nextSibling.hidden = true
|
thread.nextSibling.hidden = true
|
||||||
|
return
|
||||||
|
|
||||||
show: (thread) ->
|
return if /\bstub\b/.test thread.className # already hidden by filter
|
||||||
$.rm $ 'div.block', thread
|
|
||||||
|
num = 0
|
||||||
|
if span = $ '.omittedposts', thread
|
||||||
|
num = Number span.textContent.match(/\d+/)[0]
|
||||||
|
num += $$('.op ~ table', thread).length
|
||||||
|
text = if num is 1 then '1 reply' else "#{num} replies"
|
||||||
|
op = $ '.op', thread
|
||||||
|
name = $('.postername', op).textContent
|
||||||
|
uid = $('.posteruid', op)?.textContent or ''
|
||||||
|
trip = $('.postertrip', op)?.textContent or ''
|
||||||
|
|
||||||
|
a = $.el 'a',
|
||||||
|
innerHTML: "<span>[ + ]</span> #{name} #{uid} #{trip} (#{text})"
|
||||||
|
href: 'javascript:;'
|
||||||
|
$.on a, 'click', ThreadHiding.cb
|
||||||
|
|
||||||
|
div = $.el 'div',
|
||||||
|
className: 'block'
|
||||||
|
|
||||||
|
$.add div, a
|
||||||
|
$.prepend thread, div
|
||||||
|
$.addClass thread, 'stub'
|
||||||
|
|
||||||
|
show: (thread, id) ->
|
||||||
|
$.rm $ '.block', thread
|
||||||
$.removeClass thread, 'stub'
|
$.removeClass thread, 'stub'
|
||||||
thread.hidden = false
|
thread.hidden = false
|
||||||
thread.nextSibling.hidden = false
|
thread.nextSibling.hidden = false
|
||||||
|
|
||||||
id = thread.firstChild.id
|
|
||||||
|
|
||||||
hiddenThreads = $.get "hiddenThreads/#{g.BOARD}/", {}
|
|
||||||
delete hiddenThreads[id]
|
|
||||||
$.set "hiddenThreads/#{g.BOARD}/", hiddenThreads
|
|
||||||
|
|
||||||
Updater =
|
Updater =
|
||||||
init: ->
|
init: ->
|
||||||
html = "<div class=move><span id=count></span> <span id=timer>-#{conf['Interval']}</span></div>"
|
html = "<div class=move><span id=count></span> <span id=timer>-#{conf['Interval']}</span></div>"
|
||||||
@ -3376,7 +3364,9 @@ a[href="javascript:;"] {
|
|||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.thread.stub > :not(.block),
|
.block ~ .op,
|
||||||
|
.block ~ .omittedposts,
|
||||||
|
.block ~ table,
|
||||||
#content > [name=tab]:not(:checked) + div,
|
#content > [name=tab]:not(:checked) + div,
|
||||||
#updater:not(:hover) > :not(.move),
|
#updater:not(:hover) > :not(.move),
|
||||||
#qp > input, #qp .inline, .forwarded {
|
#qp > input, #qp .inline, .forwarded {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user