Release 4chan X v1.13.6.0.
This commit is contained in:
parent
2aca3b1986
commit
8518d0d312
12
CHANGELOG.md
12
CHANGELOG.md
@ -2,6 +2,18 @@
|
|||||||
|
|
||||||
-Sometimes the changelog has notes (not comprehensive) acknowledging people's work. This does not mean the changes are their fault, only that their code was used. All changes to the script are chosen by and the fault of the maintainer (ccd0).
|
-Sometimes the changelog has notes (not comprehensive) acknowledging people's work. This does not mean the changes are their fault, only that their code was used. All changes to the script are chosen by and the fault of the maintainer (ccd0).
|
||||||
|
|
||||||
|
### v1.13.6
|
||||||
|
|
||||||
|
**v1.13.6.0** *(2017-01-30)* - [[Userscript](https://raw.githubusercontent.com/ccd0/4chan-x/1.13.6.0/builds/4chan-X-noupdate.user.js)] [[Chrome extension](https://raw.githubusercontent.com/ccd0/4chan-x/1.13.6.0/builds/4chan-X-noupdate.crx)]
|
||||||
|
- Based on v1.13.5.2.
|
||||||
|
- Add item in the post menu to mark/unmark posts as yours. #195
|
||||||
|
- When you are the OP of a thread, any unread reply to the thread will now light up the `Thread Watcher` icon, not just replies directly to you. #913
|
||||||
|
- Show `##Manager`, `##Founder`, and `##Verified` capcodes in posts loaded from the archives. Also support searching for them from the post menu.
|
||||||
|
- Make `Anonymize` more efficient, and extend it to the /f/ index and native catalog. #1111
|
||||||
|
- If `Quote Preview` is enabled, links to threads in the internal archive will show previews of the OP on hover, as in the native extension. #1256
|
||||||
|
- If we detect the QR paste icon isn't needed, hide it instead of disabling it so it can be brought back with CSS if necessary.
|
||||||
|
- Don't show archive report form on the "Report submitted!" page.
|
||||||
|
|
||||||
### v1.13.5
|
### v1.13.5
|
||||||
|
|
||||||
**v1.13.5.2** *(2017-01-27)* - [[Userscript](https://raw.githubusercontent.com/ccd0/4chan-x/1.13.5.2/builds/4chan-X-noupdate.user.js)] [[Chrome extension](https://raw.githubusercontent.com/ccd0/4chan-x/1.13.5.2/builds/4chan-X-noupdate.crx)]
|
**v1.13.5.2** *(2017-01-27)* - [[Userscript](https://raw.githubusercontent.com/ccd0/4chan-x/1.13.5.2/builds/4chan-X-noupdate.user.js)] [[Chrome extension](https://raw.githubusercontent.com/ccd0/4chan-x/1.13.5.2/builds/4chan-X-noupdate.crx)]
|
||||||
|
|||||||
Binary file not shown.
@ -1,6 +1,6 @@
|
|||||||
// ==UserScript==
|
// ==UserScript==
|
||||||
// @name 4chan X beta
|
// @name 4chan X beta
|
||||||
// @version 1.13.5.2
|
// @version 1.13.6.0
|
||||||
// @minGMVer 1.14
|
// @minGMVer 1.14
|
||||||
// @minFFVer 26
|
// @minFFVer 26
|
||||||
// @namespace 4chan-X
|
// @namespace 4chan-X
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
// ==UserScript==
|
// ==UserScript==
|
||||||
// @name 4chan X beta
|
// @name 4chan X beta
|
||||||
// @version 1.13.5.2
|
// @version 1.13.6.0
|
||||||
// @minGMVer 1.14
|
// @minGMVer 1.14
|
||||||
// @minFFVer 26
|
// @minFFVer 26
|
||||||
// @namespace 4chan-X
|
// @namespace 4chan-X
|
||||||
@ -150,7 +150,7 @@ docSet = function() {
|
|||||||
};
|
};
|
||||||
|
|
||||||
g = {
|
g = {
|
||||||
VERSION: '1.13.5.2',
|
VERSION: '1.13.6.0',
|
||||||
NAMESPACE: '4chan X.',
|
NAMESPACE: '4chan X.',
|
||||||
boards: {}
|
boards: {}
|
||||||
};
|
};
|
||||||
@ -2617,6 +2617,24 @@ input[name=\"Default Volume\"] {\n\
|
|||||||
:root.thread-hide .party-hat {\n\
|
:root.thread-hide .party-hat {\n\
|
||||||
left: 19px;\n\
|
left: 19px;\n\
|
||||||
}\n\
|
}\n\
|
||||||
|
/* Anonymize */\n\
|
||||||
|
:root.anonymize .name,\n\
|
||||||
|
:root.anonymize .post-author:not([class*=capcode]) {\n\
|
||||||
|
font-size: 0;\n\
|
||||||
|
}\n\
|
||||||
|
:root.anonymize .postertrip,\n\
|
||||||
|
:root.anonymize .n-pu {\n\
|
||||||
|
display: none;\n\
|
||||||
|
}\n\
|
||||||
|
:root.anonymize .name::before,\n\
|
||||||
|
:root.anonymize .post-author:not([class*=capcode])::before {\n\
|
||||||
|
content: \"Anonymous\";\n\
|
||||||
|
font-size: 10pt;\n\
|
||||||
|
}\n\
|
||||||
|
:root.anonymize .flashListing .name::before,\n\
|
||||||
|
:root.anonymize .post-last > .post-author:not([class*=capcode])::before {\n\
|
||||||
|
font-size: 9pt;\n\
|
||||||
|
}\n\
|
||||||
/* QR */\n\
|
/* QR */\n\
|
||||||
:root.hide-original-post-form #togglePostFormLink,\n\
|
:root.hide-original-post-form #togglePostFormLink,\n\
|
||||||
#qr.autohide:not(.focus):not(:hover):not(:active) > form,\n\
|
#qr.autohide:not(.focus):not(:hover):not(:active) > form,\n\
|
||||||
@ -3697,6 +3715,10 @@ a:only-of-type > .remove {\n\
|
|||||||
:root.futaba .indicator {\n\
|
:root.futaba .indicator {\n\
|
||||||
color: #F0E0D6;\n\
|
color: #F0E0D6;\n\
|
||||||
}\n\
|
}\n\
|
||||||
|
/* Anonymize */\n\
|
||||||
|
:root.futaba.anonymize .name::before {\n\
|
||||||
|
font-size: 12pt;\n\
|
||||||
|
}\n\
|
||||||
/* QR */\n\
|
/* QR */\n\
|
||||||
.futaba #dump-list::-webkit-scrollbar-thumb {\n\
|
.futaba #dump-list::-webkit-scrollbar-thumb {\n\
|
||||||
background-color: #F0E0D6;\n\
|
background-color: #F0E0D6;\n\
|
||||||
@ -3782,6 +3804,10 @@ a:only-of-type > .remove {\n\
|
|||||||
:root.burichan .indicator {\n\
|
:root.burichan .indicator {\n\
|
||||||
color: #D6DAF0;\n\
|
color: #D6DAF0;\n\
|
||||||
}\n\
|
}\n\
|
||||||
|
/* Anonymize */\n\
|
||||||
|
:root.burichan.anonymize .name::before {\n\
|
||||||
|
font-size: 12pt;\n\
|
||||||
|
}\n\
|
||||||
/* QR */\n\
|
/* QR */\n\
|
||||||
.burichan #dump-list::-webkit-scrollbar-thumb {\n\
|
.burichan #dump-list::-webkit-scrollbar-thumb {\n\
|
||||||
background-color: #D6DAF0;\n\
|
background-color: #D6DAF0;\n\
|
||||||
@ -5670,6 +5696,7 @@ Fetcher = (function() {
|
|||||||
if (!this.root.parentNode) {
|
if (!this.root.parentNode) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
this.quoter || (this.quoter = post);
|
||||||
clone = post.addClone(this.quoter.context, $.hasClass(this.root, 'dialog'));
|
clone = post.addClone(this.quoter.context, $.hasClass(this.root, 'dialog'));
|
||||||
Main.callbackNodes('Post', [clone]);
|
Main.callbackNodes('Post', [clone]);
|
||||||
nodes = clone.nodes;
|
nodes = clone.nodes;
|
||||||
@ -5866,6 +5893,12 @@ Fetcher = (function() {
|
|||||||
return 'Admin';
|
return 'Admin';
|
||||||
case 'D':
|
case 'D':
|
||||||
return 'Developer';
|
return 'Developer';
|
||||||
|
case 'V':
|
||||||
|
return 'Verified';
|
||||||
|
case 'F':
|
||||||
|
return 'Founder';
|
||||||
|
case 'G':
|
||||||
|
return 'Manager';
|
||||||
}
|
}
|
||||||
})(),
|
})(),
|
||||||
uniqueID: data.poster_hash,
|
uniqueID: data.poster_hash,
|
||||||
@ -7092,7 +7125,8 @@ Redirect = (function() {
|
|||||||
type = type === 'name' ? 'username' : type === 'MD5' ? 'image' : type;
|
type = type === 'name' ? 'username' : type === 'MD5' ? 'image' : type;
|
||||||
if (type === 'capcode') {
|
if (type === 'capcode') {
|
||||||
value = {
|
value = {
|
||||||
'Developer': 'dev'
|
'Developer': 'dev',
|
||||||
|
'Verified': 'ver'
|
||||||
}[value] || value.toLowerCase();
|
}[value] || value.toLowerCase();
|
||||||
} else if (type === 'image') {
|
} else if (type === 'image') {
|
||||||
value = value.replace(/[+\/=]/g, function(c) {
|
value = value.replace(/[+\/=]/g, function(c) {
|
||||||
@ -7146,54 +7180,10 @@ Anonymize = (function() {
|
|||||||
|
|
||||||
Anonymize = {
|
Anonymize = {
|
||||||
init: function() {
|
init: function() {
|
||||||
var ref;
|
if (!Conf['Anonymize']) {
|
||||||
if (!(((ref = g.VIEW) === 'index' || ref === 'thread' || ref === 'archive') && Conf['Anonymize'])) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (g.VIEW === 'archive') {
|
return $.addClass(doc, 'anonymize');
|
||||||
return this.archive();
|
|
||||||
}
|
|
||||||
return Callbacks.Post.push({
|
|
||||||
name: 'Anonymize',
|
|
||||||
cb: this.node
|
|
||||||
});
|
|
||||||
},
|
|
||||||
node: function() {
|
|
||||||
var email, name, pass, ref, tripcode;
|
|
||||||
if (this.info.capcode || this.isClone) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
ref = this.nodes, name = ref.name, tripcode = ref.tripcode, pass = ref.pass, email = ref.email;
|
|
||||||
if (this.info.name !== 'Anonymous') {
|
|
||||||
name.textContent = 'Anonymous';
|
|
||||||
}
|
|
||||||
if (tripcode) {
|
|
||||||
$.rm(tripcode);
|
|
||||||
delete this.nodes.tripcode;
|
|
||||||
}
|
|
||||||
if (pass) {
|
|
||||||
$.rm(pass);
|
|
||||||
delete this.nodes.pass;
|
|
||||||
}
|
|
||||||
if (email) {
|
|
||||||
$.replace(email, name);
|
|
||||||
return delete this.nodes.email;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
archive: function() {
|
|
||||||
return $.ready(function() {
|
|
||||||
var i, j, len, len1, name, ref, ref1, trip;
|
|
||||||
ref = $$('.name');
|
|
||||||
for (i = 0, len = ref.length; i < len; i++) {
|
|
||||||
name = ref[i];
|
|
||||||
name.textContent = 'Anonymous';
|
|
||||||
}
|
|
||||||
ref1 = $$('.postertrip');
|
|
||||||
for (j = 0, len1 = ref1.length; j < len1; j++) {
|
|
||||||
trip = ref1[j];
|
|
||||||
$.rm(trip);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -12140,7 +12130,7 @@ FappeTyme = (function() {
|
|||||||
FappeTyme = {
|
FappeTyme = {
|
||||||
init: function() {
|
init: function() {
|
||||||
var el, i, indicator, lc, len, ref, ref1, type;
|
var el, i, indicator, lc, len, ref, ref1, type;
|
||||||
if (!((Conf['Fappe Tyme'] || Conf['Werk Tyme']) && ((ref = g.VIEW) === 'index' || ref === 'thread'))) {
|
if (!((Conf['Fappe Tyme'] || Conf['Werk Tyme']) && ((ref = g.VIEW) === 'index' || ref === 'thread' || ref === 'archive'))) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this.nodes = {};
|
this.nodes = {};
|
||||||
@ -13467,8 +13457,8 @@ ImageLoader = (function() {
|
|||||||
|
|
||||||
ImageLoader = {
|
ImageLoader = {
|
||||||
init: function() {
|
init: function() {
|
||||||
var prefetch, ref;
|
var prefetch, ref, ref1;
|
||||||
if (!(((ref = g.VIEW) === 'index' || ref === 'thread') && g.BOARD.ID !== 'f')) {
|
if (!(((ref = g.VIEW) === 'index' || ref === 'thread' || ref === 'archive') && g.BOARD.ID !== 'f')) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!(Conf['Image Prefetching'] || Conf['Replace JPG'] || Conf['Replace PNG'] || Conf['Replace GIF'] || Conf['Replace WEBM'])) {
|
if (!(Conf['Image Prefetching'] || Conf['Replace JPG'] || Conf['Replace PNG'] || Conf['Replace GIF'] || Conf['Replace WEBM'])) {
|
||||||
@ -13484,7 +13474,7 @@ ImageLoader = (function() {
|
|||||||
if (Conf['Replace WEBM']) {
|
if (Conf['Replace WEBM']) {
|
||||||
$.on(d, 'scroll visibilitychange 4chanXInitFinished PostsInserted', this.playVideos);
|
$.on(d, 'scroll visibilitychange 4chanXInitFinished PostsInserted', this.playVideos);
|
||||||
}
|
}
|
||||||
if (!Conf['Image Prefetching']) {
|
if (!(Conf['Image Prefetching'] && ((ref1 = g.VIEW) === 'index' || ref1 === 'thread'))) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
prefetch = $.el('label', {
|
prefetch = $.el('label', {
|
||||||
@ -13720,7 +13710,7 @@ RevealSpoilers = (function() {
|
|||||||
RevealSpoilers = {
|
RevealSpoilers = {
|
||||||
init: function() {
|
init: function() {
|
||||||
var ref;
|
var ref;
|
||||||
if (!(((ref = g.VIEW) === 'index' || ref === 'thread') && Conf['Reveal Spoiler Thumbnails'])) {
|
if (!(((ref = g.VIEW) === 'index' || ref === 'thread' || ref === 'archive') && Conf['Reveal Spoiler Thumbnails'])) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
return Callbacks.Post.push({
|
return Callbacks.Post.push({
|
||||||
@ -14093,7 +14083,7 @@ Embedding = (function() {
|
|||||||
Embedding = {
|
Embedding = {
|
||||||
init: function() {
|
init: function() {
|
||||||
var j, len, ref, ref1, type;
|
var j, len, ref, ref1, type;
|
||||||
if (!(((ref = g.VIEW) === 'index' || ref === 'thread') && Conf['Linkify'] && (Conf['Embedding'] || Conf['Link Title'] || Conf['Cover Preview']))) {
|
if (!(((ref = g.VIEW) === 'index' || ref === 'thread' || ref === 'archive') && Conf['Linkify'] && (Conf['Embedding'] || Conf['Link Title'] || Conf['Cover Preview']))) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this.types = {};
|
this.types = {};
|
||||||
@ -14102,7 +14092,7 @@ Embedding = (function() {
|
|||||||
type = ref1[j];
|
type = ref1[j];
|
||||||
this.types[type.key] = type;
|
this.types[type.key] = type;
|
||||||
}
|
}
|
||||||
if (Conf['Embedding']) {
|
if (Conf['Embedding'] && g.VIEW !== 'archive') {
|
||||||
this.dialog = UI.dialog('embedding', {
|
this.dialog = UI.dialog('embedding', {
|
||||||
innerHTML: "<div><div class=\"move\"></div><a href=\"javascript:;\" class=\"jump\" title=\"Jump to post\">→</a><a href=\"javascript:;\" class=\"close\" title=\"Close\">×</a></div><div id=\"media-embed\"><div></div></div>"
|
innerHTML: "<div><div class=\"move\"></div><a href=\"javascript:;\" class=\"jump\" title=\"Jump to post\">→</a><a href=\"javascript:;\" class=\"close\" title=\"Close\">×</a></div><div id=\"media-embed\"><div></div></div>"
|
||||||
});
|
});
|
||||||
@ -14138,6 +14128,9 @@ Embedding = (function() {
|
|||||||
},
|
},
|
||||||
events: function(post) {
|
events: function(post) {
|
||||||
var data, el, i, items;
|
var data, el, i, items;
|
||||||
|
if (g.VIEW === 'archive') {
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (Conf['Embedding']) {
|
if (Conf['Embedding']) {
|
||||||
i = 0;
|
i = 0;
|
||||||
items = post.nodes.embedlinks = $$('.embedder', post.nodes.comment);
|
items = post.nodes.embedlinks = $$('.embedder', post.nodes.comment);
|
||||||
@ -14168,13 +14161,13 @@ Embedding = (function() {
|
|||||||
}
|
}
|
||||||
if (data = Embedding.services(link)) {
|
if (data = Embedding.services(link)) {
|
||||||
data.post = post;
|
data.post = post;
|
||||||
if (Conf['Embedding']) {
|
if (Conf['Embedding'] && g.VIEW !== 'archive') {
|
||||||
Embedding.embed(data);
|
Embedding.embed(data);
|
||||||
}
|
}
|
||||||
if (Conf['Link Title']) {
|
if (Conf['Link Title']) {
|
||||||
Embedding.title(data);
|
Embedding.title(data);
|
||||||
}
|
}
|
||||||
if (Conf['Cover Preview']) {
|
if (Conf['Cover Preview'] && g.VIEW !== 'archive') {
|
||||||
return Embedding.preview(data);
|
return Embedding.preview(data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -14838,7 +14831,7 @@ Linkify = (function() {
|
|||||||
Linkify = {
|
Linkify = {
|
||||||
init: function() {
|
init: function() {
|
||||||
var ref;
|
var ref;
|
||||||
if (((ref = g.VIEW) !== 'index' && ref !== 'thread') || !Conf['Linkify']) {
|
if (((ref = g.VIEW) !== 'index' && ref !== 'thread' && ref !== 'archive') || !Conf['Linkify']) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (Conf['Comment Expansion']) {
|
if (Conf['Comment Expansion']) {
|
||||||
@ -16062,7 +16055,7 @@ FileInfo = (function() {
|
|||||||
FileInfo = {
|
FileInfo = {
|
||||||
init: function() {
|
init: function() {
|
||||||
var ref;
|
var ref;
|
||||||
if (((ref = g.VIEW) !== 'index' && ref !== 'thread') || !Conf['File Info Formatting']) {
|
if (((ref = g.VIEW) !== 'index' && ref !== 'thread' && ref !== 'archive') || !Conf['File Info Formatting']) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
return Callbacks.Post.push({
|
return Callbacks.Post.push({
|
||||||
@ -16258,7 +16251,7 @@ Fourchan = (function() {
|
|||||||
Fourchan = {
|
Fourchan = {
|
||||||
init: function() {
|
init: function() {
|
||||||
var ref;
|
var ref;
|
||||||
if ((ref = g.VIEW) !== 'index' && ref !== 'thread') {
|
if ((ref = g.VIEW) !== 'index' && ref !== 'thread' && ref !== 'archive') {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (g.BOARD.ID === 'g') {
|
if (g.BOARD.ID === 'g') {
|
||||||
@ -16709,13 +16702,13 @@ Keybinds = (function() {
|
|||||||
Gallery.cb.toggle();
|
Gallery.cb.toggle();
|
||||||
break;
|
break;
|
||||||
case Conf['fappeTyme']:
|
case Conf['fappeTyme']:
|
||||||
if (!(Conf['Fappe Tyme'] && ((ref2 = g.VIEW) === 'index' || ref2 === 'thread'))) {
|
if (!((ref2 = FappeTyme.nodes) != null ? ref2.fappe : void 0)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
FappeTyme.toggle('fappe');
|
FappeTyme.toggle('fappe');
|
||||||
break;
|
break;
|
||||||
case Conf['werkTyme']:
|
case Conf['werkTyme']:
|
||||||
if (!(Conf['Werk Tyme'] && ((ref3 = g.VIEW) === 'index' || ref3 === 'thread'))) {
|
if (!((ref3 = FappeTyme.nodes) != null ? ref3.werk : void 0)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
FappeTyme.toggle('werk');
|
FappeTyme.toggle('werk');
|
||||||
@ -17276,7 +17269,7 @@ RelativeDates = (function() {
|
|||||||
INTERVAL: $.MINUTE / 2,
|
INTERVAL: $.MINUTE / 2,
|
||||||
init: function() {
|
init: function() {
|
||||||
var ref;
|
var ref;
|
||||||
if (((ref = g.VIEW) === 'index' || ref === 'thread') && Conf['Relative Post Dates'] && !Conf['Relative Date Title'] || g.VIEW === 'index' && Conf['JSON Index'] && g.BOARD.ID !== 'f') {
|
if (((ref = g.VIEW) === 'index' || ref === 'thread' || ref === 'archive') && Conf['Relative Post Dates'] && !Conf['Relative Date Title'] || g.VIEW === 'index' && Conf['JSON Index'] && g.BOARD.ID !== 'f') {
|
||||||
this.flush();
|
this.flush();
|
||||||
$.on(d, 'visibilitychange ThreadUpdate', this.flush);
|
$.on(d, 'visibilitychange ThreadUpdate', this.flush);
|
||||||
}
|
}
|
||||||
@ -17510,7 +17503,7 @@ Report = (function() {
|
|||||||
});
|
});
|
||||||
} else if (message) {
|
} else if (message) {
|
||||||
enabled.checked = false;
|
enabled.checked = false;
|
||||||
fieldset.hidden = false;
|
fieldset.hidden = /Report submitted!/.test(message.textContent);
|
||||||
$.on(enabled, 'change', function() {
|
$.on(enabled, 'change', function() {
|
||||||
return submit.hidden = !this.checked;
|
return submit.hidden = !this.checked;
|
||||||
});
|
});
|
||||||
@ -17624,7 +17617,7 @@ Time = (function() {
|
|||||||
Time = {
|
Time = {
|
||||||
init: function() {
|
init: function() {
|
||||||
var ref;
|
var ref;
|
||||||
if (!(((ref = g.VIEW) === 'index' || ref === 'thread') && Conf['Time Formatting'])) {
|
if (!(((ref = g.VIEW) === 'index' || ref === 'thread' || ref === 'archive') && Conf['Time Formatting'])) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
return Callbacks.Post.push({
|
return Callbacks.Post.push({
|
||||||
@ -18591,7 +18584,7 @@ ThreadWatcher = (function() {
|
|||||||
|
|
||||||
ThreadWatcher = {
|
ThreadWatcher = {
|
||||||
init: function() {
|
init: function() {
|
||||||
var sc;
|
var ref, sc;
|
||||||
if (!(this.enabled = Conf['Thread Watcher'])) {
|
if (!(this.enabled = Conf['Thread Watcher'])) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -18662,6 +18655,9 @@ ThreadWatcher = (function() {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
if ((ref = g.VIEW) !== 'index' && ref !== 'thread') {
|
||||||
|
return;
|
||||||
|
}
|
||||||
Callbacks.Post.push({
|
Callbacks.Post.push({
|
||||||
name: 'Thread Watcher',
|
name: 'Thread Watcher',
|
||||||
cb: this.node
|
cb: this.node
|
||||||
@ -18935,7 +18931,7 @@ ThreadWatcher = (function() {
|
|||||||
return ThreadWatcher.requests.push(req);
|
return ThreadWatcher.requests.push(req);
|
||||||
},
|
},
|
||||||
parseStatus: function(arg) {
|
parseStatus: function(arg) {
|
||||||
var boardID, data, i, isDead, lastReadPost, len, match, postObj, quotesYou, quotingYou, ref, ref1, regexp, threadID, unread;
|
var boardID, data, i, isDead, lastReadPost, len, match, postObj, quotesYou, quotingYou, ref, ref1, ref2, regexp, threadID, unread, youOP;
|
||||||
boardID = arg.boardID, threadID = arg.threadID, data = arg.data;
|
boardID = arg.boardID, threadID = arg.threadID, data = arg.data;
|
||||||
ThreadWatcher.fetched++;
|
ThreadWatcher.fetched++;
|
||||||
if (ThreadWatcher.fetched === ThreadWatcher.requests.length) {
|
if (ThreadWatcher.fetched === ThreadWatcher.requests.length) {
|
||||||
@ -18958,14 +18954,20 @@ ThreadWatcher = (function() {
|
|||||||
threadID: threadID,
|
threadID: threadID,
|
||||||
defaultValue: 0
|
defaultValue: 0
|
||||||
});
|
});
|
||||||
unread = quotingYou = 0;
|
unread = 0;
|
||||||
ref = this.response.posts;
|
quotingYou = false;
|
||||||
for (i = 0, len = ref.length; i < len; i++) {
|
youOP = !!((ref = QuoteYou.db) != null ? ref.get({
|
||||||
postObj = ref[i];
|
boardID: boardID,
|
||||||
|
threadID: threadID,
|
||||||
|
postID: threadID
|
||||||
|
}) : void 0);
|
||||||
|
ref1 = this.response.posts;
|
||||||
|
for (i = 0, len = ref1.length; i < len; i++) {
|
||||||
|
postObj = ref1[i];
|
||||||
if (!(postObj.no > lastReadPost)) {
|
if (!(postObj.no > lastReadPost)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if ((ref1 = QuoteYou.db) != null ? ref1.get({
|
if ((ref2 = QuoteYou.db) != null ? ref2.get({
|
||||||
boardID: boardID,
|
boardID: boardID,
|
||||||
threadID: threadID,
|
threadID: threadID,
|
||||||
postID: postObj.no
|
postID: postObj.no
|
||||||
@ -18973,7 +18975,11 @@ ThreadWatcher = (function() {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
unread++;
|
unread++;
|
||||||
if (!(QuoteYou.db && postObj.com)) {
|
if (!quotingYou && youOP && !Filter.isHidden(Build.parseJSON(postObj, boardID))) {
|
||||||
|
quotingYou = true;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (!(!quotingYou && QuoteYou.db && postObj.com)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
quotesYou = false;
|
quotesYou = false;
|
||||||
@ -18989,7 +18995,7 @@ ThreadWatcher = (function() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (quotesYou && !Filter.isHidden(Build.parseJSON(postObj, boardID))) {
|
if (quotesYou && !Filter.isHidden(Build.parseJSON(postObj, boardID))) {
|
||||||
quotingYou++;
|
quotingYou = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (isDead !== data.isDead || unread !== data.unread || quotingYou !== data.quotingYou) {
|
if (isDead !== data.isDead || unread !== data.unread || quotingYou !== data.quotingYou) {
|
||||||
@ -19511,16 +19517,11 @@ Unread = (function() {
|
|||||||
return Unread.update();
|
return Unread.update();
|
||||||
},
|
},
|
||||||
addPost: function() {
|
addPost: function() {
|
||||||
var ref;
|
|
||||||
if (this.isFetchedQuote || this.isClone) {
|
if (this.isFetchedQuote || this.isClone) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Unread.order.push(this);
|
Unread.order.push(this);
|
||||||
if (this.ID <= Unread.lastReadPost || this.isHidden || ((ref = QuoteYou.db) != null ? ref.get({
|
if (this.ID <= Unread.lastReadPost || this.isHidden || QuoteYou.isYou(this)) {
|
||||||
boardID: this.board.ID,
|
|
||||||
threadID: this.thread.ID,
|
|
||||||
postID: this.ID
|
|
||||||
}) : void 0)) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Unread.posts.add(this.ID);
|
Unread.posts.add(this.ID);
|
||||||
@ -19579,7 +19580,7 @@ Unread = (function() {
|
|||||||
return Unread.update();
|
return Unread.update();
|
||||||
},
|
},
|
||||||
read: $.debounce(100, function(e) {
|
read: $.debounce(100, function(e) {
|
||||||
var ID, count, data, ref, ref1, root;
|
var ID, count, data, ref, root;
|
||||||
if (!Unread.posts.size && Unread.readCount !== Unread.thread.posts.keys.length) {
|
if (!Unread.posts.size && Unread.readCount !== Unread.thread.posts.keys.length) {
|
||||||
Unread.saveLastReadPost();
|
Unread.saveLastReadPost();
|
||||||
}
|
}
|
||||||
@ -19596,13 +19597,6 @@ Unread = (function() {
|
|||||||
count++;
|
count++;
|
||||||
Unread.posts["delete"](ID);
|
Unread.posts["delete"](ID);
|
||||||
Unread.postsQuotingYou["delete"](ID);
|
Unread.postsQuotingYou["delete"](ID);
|
||||||
if ((ref1 = QuoteYou.db) != null ? ref1.get({
|
|
||||||
boardID: data.board.ID,
|
|
||||||
threadID: data.thread.ID,
|
|
||||||
postID: ID
|
|
||||||
}) : void 0) {
|
|
||||||
QuoteYou.lastRead = root;
|
|
||||||
}
|
|
||||||
Unread.position = Unread.position.next;
|
Unread.position = Unread.position.next;
|
||||||
}
|
}
|
||||||
if (!count) {
|
if (!count) {
|
||||||
@ -19682,7 +19676,7 @@ Unread = (function() {
|
|||||||
return ThreadWatcher.update(Unread.thread.board.ID, Unread.thread.ID, {
|
return ThreadWatcher.update(Unread.thread.board.ID, Unread.thread.ID, {
|
||||||
isDead: Unread.thread.isDead,
|
isDead: Unread.thread.isDead,
|
||||||
unread: Unread.posts.size,
|
unread: Unread.posts.size,
|
||||||
quotingYou: Unread.postsQuotingYou.size
|
quotingYou: !!(QuoteYou.isYou(Unread.thread.OP) ? Unread.posts.size : Unread.postsQuotingYou.size)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@ -21435,10 +21429,10 @@ QR = (function() {
|
|||||||
$.on(d, 'click', QR.focus);
|
$.on(d, 'click', QR.focus);
|
||||||
if ($.engine === 'gecko' && !window.DataTransferItemList) {
|
if ($.engine === 'gecko' && !window.DataTransferItemList) {
|
||||||
nodes.pasteArea.hidden = false;
|
nodes.pasteArea.hidden = false;
|
||||||
new MutationObserver(QR.pasteFF).observe(nodes.pasteArea, {
|
|
||||||
childList: true
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
new MutationObserver(QR.pasteFF).observe(nodes.pasteArea, {
|
||||||
|
childList: true
|
||||||
|
});
|
||||||
items = ['thread', 'name', 'email', 'sub', 'com', 'filename'];
|
items = ['thread', 'name', 'email', 'sub', 'com', 'filename'];
|
||||||
i = 0;
|
i = 0;
|
||||||
save = function() {
|
save = function() {
|
||||||
@ -22851,15 +22845,11 @@ QuoteBacklink = (function() {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
firstNode: function() {
|
firstNode: function() {
|
||||||
var a, clone, container, containers, hash, i, j, k, len, len1, len2, link, markYours, nodes, post, quote, ref, ref1, ref2;
|
var a, clone, container, containers, hash, i, j, k, len, len1, len2, link, markYours, nodes, post, quote, ref, ref1;
|
||||||
if (this.isClone || !this.quotes.length || this.isRebuilt) {
|
if (this.isClone || !this.quotes.length || this.isRebuilt) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
markYours = Conf['Mark Quotes of You'] && ((ref = QuoteYou.db) != null ? ref.get({
|
markYours = Conf['Mark Quotes of You'] && QuoteYou.isYou(this);
|
||||||
boardID: this.board.ID,
|
|
||||||
threadID: this.thread.ID,
|
|
||||||
postID: this.ID
|
|
||||||
}) : void 0);
|
|
||||||
a = $.el('a', {
|
a = $.el('a', {
|
||||||
href: Build.postURL(this.board.ID, this.thread.ID, this.ID),
|
href: Build.postURL(this.board.ID, this.thread.ID, this.ID),
|
||||||
className: this.isHidden ? 'filtered backlink' : 'backlink',
|
className: this.isHidden ? 'filtered backlink' : 'backlink',
|
||||||
@ -22875,14 +22865,14 @@ QuoteBacklink = (function() {
|
|||||||
if (markYours) {
|
if (markYours) {
|
||||||
$.add(a, QuoteYou.mark.cloneNode(true));
|
$.add(a, QuoteYou.mark.cloneNode(true));
|
||||||
}
|
}
|
||||||
ref1 = this.quotes;
|
ref = this.quotes;
|
||||||
for (i = 0, len = ref1.length; i < len; i++) {
|
for (i = 0, len = ref.length; i < len; i++) {
|
||||||
quote = ref1[i];
|
quote = ref[i];
|
||||||
containers = [QuoteBacklink.getContainer(quote)];
|
containers = [QuoteBacklink.getContainer(quote)];
|
||||||
if ((post = g.posts[quote]) && post.nodes.backlinkContainer) {
|
if ((post = g.posts[quote]) && post.nodes.backlinkContainer) {
|
||||||
ref2 = post.clones;
|
ref1 = post.clones;
|
||||||
for (j = 0, len1 = ref2.length; j < len1; j++) {
|
for (j = 0, len1 = ref1.length; j < len1; j++) {
|
||||||
clone = ref2[j];
|
clone = ref1[j];
|
||||||
containers.push(clone.nodes.backlinkContainer);
|
containers.push(clone.nodes.backlinkContainer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -23174,7 +23164,17 @@ QuotePreview = (function() {
|
|||||||
QuotePreview = {
|
QuotePreview = {
|
||||||
init: function() {
|
init: function() {
|
||||||
var ref;
|
var ref;
|
||||||
if (!(((ref = g.VIEW) === 'index' || ref === 'thread') && Conf['Quote Previewing'])) {
|
if (!Conf['Quote Previewing']) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (g.VIEW === 'archive') {
|
||||||
|
$.on(d, 'mouseover', function(e) {
|
||||||
|
if (e.target.nodeName === 'A' && $.hasClass(e.target, 'quotelink')) {
|
||||||
|
return QuotePreview.mouseover.call(e.target, e);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if ((ref = g.VIEW) !== 'index' && ref !== 'thread') {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (Conf['Comment Expansion']) {
|
if (Conf['Comment Expansion']) {
|
||||||
@ -23524,7 +23524,7 @@ QuoteYou = (function() {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
if ((ref = g.VIEW) !== 'index' && ref !== 'thread') {
|
if ((ref = g.VIEW) !== 'index' && ref !== 'thread' && ref !== 'archive') {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (Conf['Highlight Own Posts']) {
|
if (Conf['Highlight Own Posts']) {
|
||||||
@ -23540,21 +23540,26 @@ QuoteYou = (function() {
|
|||||||
textContent: '\u00A0(You)',
|
textContent: '\u00A0(You)',
|
||||||
className: 'qmark-you'
|
className: 'qmark-you'
|
||||||
});
|
});
|
||||||
return Callbacks.Post.push({
|
Callbacks.Post.push({
|
||||||
name: 'Mark Quotes of You',
|
name: 'Mark Quotes of You',
|
||||||
cb: this.node
|
cb: this.node
|
||||||
});
|
});
|
||||||
|
return QuoteYou.menu.init();
|
||||||
|
},
|
||||||
|
isYou: function(post) {
|
||||||
|
var ref;
|
||||||
|
return !!((ref = QuoteYou.db) != null ? ref.get({
|
||||||
|
boardID: post.board.ID,
|
||||||
|
threadID: post.thread.ID,
|
||||||
|
postID: post.ID
|
||||||
|
}) : void 0);
|
||||||
},
|
},
|
||||||
node: function() {
|
node: function() {
|
||||||
var i, len, quotelink, ref;
|
var i, len, quotelink, ref;
|
||||||
if (this.isClone) {
|
if (this.isClone) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (QuoteYou.db.get({
|
if (QuoteYou.isYou(this)) {
|
||||||
boardID: this.board.ID,
|
|
||||||
threadID: this.thread.ID,
|
|
||||||
postID: this.ID
|
|
||||||
})) {
|
|
||||||
$.addClass(this.nodes.root, 'yourPost');
|
$.addClass(this.nodes.root, 'yourPost');
|
||||||
}
|
}
|
||||||
if (!this.quotes.length) {
|
if (!this.quotes.length) {
|
||||||
@ -23573,6 +23578,61 @@ QuoteYou = (function() {
|
|||||||
$.addClass(this.nodes.root, 'quotesYou');
|
$.addClass(this.nodes.root, 'quotesYou');
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
menu: {
|
||||||
|
init: function() {
|
||||||
|
var input, label, ref;
|
||||||
|
label = $.el('label', {
|
||||||
|
innerHTML: "<input type=\"checkbox\"> You"
|
||||||
|
});
|
||||||
|
input = $('input', label);
|
||||||
|
$.on(input, 'change', QuoteYou.menu.toggle);
|
||||||
|
return (ref = Menu.menu) != null ? ref.addEntry({
|
||||||
|
el: label,
|
||||||
|
order: 12,
|
||||||
|
open: function(post) {
|
||||||
|
QuoteYou.menu.post = post.origin || post;
|
||||||
|
input.checked = QuoteYou.isYou(post);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}) : void 0;
|
||||||
|
},
|
||||||
|
toggle: function() {
|
||||||
|
var clone, data, i, j, len, len1, post, quotelink, quoter, ref, ref1;
|
||||||
|
post = QuoteYou.menu.post;
|
||||||
|
data = {
|
||||||
|
boardID: post.board.ID,
|
||||||
|
threadID: post.thread.ID,
|
||||||
|
postID: post.ID,
|
||||||
|
val: true
|
||||||
|
};
|
||||||
|
if (this.checked) {
|
||||||
|
QuoteYou.db.set(data);
|
||||||
|
} else {
|
||||||
|
QuoteYou.db["delete"](data);
|
||||||
|
}
|
||||||
|
ref = [post].concat(post.clones);
|
||||||
|
for (i = 0, len = ref.length; i < len; i++) {
|
||||||
|
clone = ref[i];
|
||||||
|
clone.nodes.root.classList.toggle('yourPost', this.checked);
|
||||||
|
}
|
||||||
|
ref1 = Get.allQuotelinksLinkingTo(post);
|
||||||
|
for (j = 0, len1 = ref1.length; j < len1; j++) {
|
||||||
|
quotelink = ref1[j];
|
||||||
|
if (this.checked) {
|
||||||
|
if (Conf['Mark Quotes of You']) {
|
||||||
|
$.add(quotelink, QuoteYou.mark.cloneNode(true));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$.rm($('.qmark-you', quotelink));
|
||||||
|
}
|
||||||
|
quotelink.classList.toggle('you', this.checked);
|
||||||
|
if ($.hasClass(quotelink, 'quotelink')) {
|
||||||
|
quoter = Get.postFromNode(quotelink).nodes.root;
|
||||||
|
quoter.classList.toggle('quotesYou', !!$('.quotelink.you', quoter));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
cb: {
|
cb: {
|
||||||
seek: function(type) {
|
seek: function(type) {
|
||||||
var highlight, post, posts, result, str;
|
var highlight, post, posts, result, str;
|
||||||
|
|||||||
Binary file not shown.
@ -1,6 +1,6 @@
|
|||||||
// ==UserScript==
|
// ==UserScript==
|
||||||
// @name 4chan X
|
// @name 4chan X
|
||||||
// @version 1.13.5.2
|
// @version 1.13.6.0
|
||||||
// @minGMVer 1.14
|
// @minGMVer 1.14
|
||||||
// @minFFVer 26
|
// @minFFVer 26
|
||||||
// @namespace 4chan-X
|
// @namespace 4chan-X
|
||||||
@ -150,7 +150,7 @@ docSet = function() {
|
|||||||
};
|
};
|
||||||
|
|
||||||
g = {
|
g = {
|
||||||
VERSION: '1.13.5.2',
|
VERSION: '1.13.6.0',
|
||||||
NAMESPACE: '4chan X.',
|
NAMESPACE: '4chan X.',
|
||||||
boards: {}
|
boards: {}
|
||||||
};
|
};
|
||||||
@ -2617,6 +2617,24 @@ input[name=\"Default Volume\"] {\n\
|
|||||||
:root.thread-hide .party-hat {\n\
|
:root.thread-hide .party-hat {\n\
|
||||||
left: 19px;\n\
|
left: 19px;\n\
|
||||||
}\n\
|
}\n\
|
||||||
|
/* Anonymize */\n\
|
||||||
|
:root.anonymize .name,\n\
|
||||||
|
:root.anonymize .post-author:not([class*=capcode]) {\n\
|
||||||
|
font-size: 0;\n\
|
||||||
|
}\n\
|
||||||
|
:root.anonymize .postertrip,\n\
|
||||||
|
:root.anonymize .n-pu {\n\
|
||||||
|
display: none;\n\
|
||||||
|
}\n\
|
||||||
|
:root.anonymize .name::before,\n\
|
||||||
|
:root.anonymize .post-author:not([class*=capcode])::before {\n\
|
||||||
|
content: \"Anonymous\";\n\
|
||||||
|
font-size: 10pt;\n\
|
||||||
|
}\n\
|
||||||
|
:root.anonymize .flashListing .name::before,\n\
|
||||||
|
:root.anonymize .post-last > .post-author:not([class*=capcode])::before {\n\
|
||||||
|
font-size: 9pt;\n\
|
||||||
|
}\n\
|
||||||
/* QR */\n\
|
/* QR */\n\
|
||||||
:root.hide-original-post-form #togglePostFormLink,\n\
|
:root.hide-original-post-form #togglePostFormLink,\n\
|
||||||
#qr.autohide:not(.focus):not(:hover):not(:active) > form,\n\
|
#qr.autohide:not(.focus):not(:hover):not(:active) > form,\n\
|
||||||
@ -3697,6 +3715,10 @@ a:only-of-type > .remove {\n\
|
|||||||
:root.futaba .indicator {\n\
|
:root.futaba .indicator {\n\
|
||||||
color: #F0E0D6;\n\
|
color: #F0E0D6;\n\
|
||||||
}\n\
|
}\n\
|
||||||
|
/* Anonymize */\n\
|
||||||
|
:root.futaba.anonymize .name::before {\n\
|
||||||
|
font-size: 12pt;\n\
|
||||||
|
}\n\
|
||||||
/* QR */\n\
|
/* QR */\n\
|
||||||
.futaba #dump-list::-webkit-scrollbar-thumb {\n\
|
.futaba #dump-list::-webkit-scrollbar-thumb {\n\
|
||||||
background-color: #F0E0D6;\n\
|
background-color: #F0E0D6;\n\
|
||||||
@ -3782,6 +3804,10 @@ a:only-of-type > .remove {\n\
|
|||||||
:root.burichan .indicator {\n\
|
:root.burichan .indicator {\n\
|
||||||
color: #D6DAF0;\n\
|
color: #D6DAF0;\n\
|
||||||
}\n\
|
}\n\
|
||||||
|
/* Anonymize */\n\
|
||||||
|
:root.burichan.anonymize .name::before {\n\
|
||||||
|
font-size: 12pt;\n\
|
||||||
|
}\n\
|
||||||
/* QR */\n\
|
/* QR */\n\
|
||||||
.burichan #dump-list::-webkit-scrollbar-thumb {\n\
|
.burichan #dump-list::-webkit-scrollbar-thumb {\n\
|
||||||
background-color: #D6DAF0;\n\
|
background-color: #D6DAF0;\n\
|
||||||
@ -5670,6 +5696,7 @@ Fetcher = (function() {
|
|||||||
if (!this.root.parentNode) {
|
if (!this.root.parentNode) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
this.quoter || (this.quoter = post);
|
||||||
clone = post.addClone(this.quoter.context, $.hasClass(this.root, 'dialog'));
|
clone = post.addClone(this.quoter.context, $.hasClass(this.root, 'dialog'));
|
||||||
Main.callbackNodes('Post', [clone]);
|
Main.callbackNodes('Post', [clone]);
|
||||||
nodes = clone.nodes;
|
nodes = clone.nodes;
|
||||||
@ -5866,6 +5893,12 @@ Fetcher = (function() {
|
|||||||
return 'Admin';
|
return 'Admin';
|
||||||
case 'D':
|
case 'D':
|
||||||
return 'Developer';
|
return 'Developer';
|
||||||
|
case 'V':
|
||||||
|
return 'Verified';
|
||||||
|
case 'F':
|
||||||
|
return 'Founder';
|
||||||
|
case 'G':
|
||||||
|
return 'Manager';
|
||||||
}
|
}
|
||||||
})(),
|
})(),
|
||||||
uniqueID: data.poster_hash,
|
uniqueID: data.poster_hash,
|
||||||
@ -7092,7 +7125,8 @@ Redirect = (function() {
|
|||||||
type = type === 'name' ? 'username' : type === 'MD5' ? 'image' : type;
|
type = type === 'name' ? 'username' : type === 'MD5' ? 'image' : type;
|
||||||
if (type === 'capcode') {
|
if (type === 'capcode') {
|
||||||
value = {
|
value = {
|
||||||
'Developer': 'dev'
|
'Developer': 'dev',
|
||||||
|
'Verified': 'ver'
|
||||||
}[value] || value.toLowerCase();
|
}[value] || value.toLowerCase();
|
||||||
} else if (type === 'image') {
|
} else if (type === 'image') {
|
||||||
value = value.replace(/[+\/=]/g, function(c) {
|
value = value.replace(/[+\/=]/g, function(c) {
|
||||||
@ -7146,54 +7180,10 @@ Anonymize = (function() {
|
|||||||
|
|
||||||
Anonymize = {
|
Anonymize = {
|
||||||
init: function() {
|
init: function() {
|
||||||
var ref;
|
if (!Conf['Anonymize']) {
|
||||||
if (!(((ref = g.VIEW) === 'index' || ref === 'thread' || ref === 'archive') && Conf['Anonymize'])) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (g.VIEW === 'archive') {
|
return $.addClass(doc, 'anonymize');
|
||||||
return this.archive();
|
|
||||||
}
|
|
||||||
return Callbacks.Post.push({
|
|
||||||
name: 'Anonymize',
|
|
||||||
cb: this.node
|
|
||||||
});
|
|
||||||
},
|
|
||||||
node: function() {
|
|
||||||
var email, name, pass, ref, tripcode;
|
|
||||||
if (this.info.capcode || this.isClone) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
ref = this.nodes, name = ref.name, tripcode = ref.tripcode, pass = ref.pass, email = ref.email;
|
|
||||||
if (this.info.name !== 'Anonymous') {
|
|
||||||
name.textContent = 'Anonymous';
|
|
||||||
}
|
|
||||||
if (tripcode) {
|
|
||||||
$.rm(tripcode);
|
|
||||||
delete this.nodes.tripcode;
|
|
||||||
}
|
|
||||||
if (pass) {
|
|
||||||
$.rm(pass);
|
|
||||||
delete this.nodes.pass;
|
|
||||||
}
|
|
||||||
if (email) {
|
|
||||||
$.replace(email, name);
|
|
||||||
return delete this.nodes.email;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
archive: function() {
|
|
||||||
return $.ready(function() {
|
|
||||||
var i, j, len, len1, name, ref, ref1, trip;
|
|
||||||
ref = $$('.name');
|
|
||||||
for (i = 0, len = ref.length; i < len; i++) {
|
|
||||||
name = ref[i];
|
|
||||||
name.textContent = 'Anonymous';
|
|
||||||
}
|
|
||||||
ref1 = $$('.postertrip');
|
|
||||||
for (j = 0, len1 = ref1.length; j < len1; j++) {
|
|
||||||
trip = ref1[j];
|
|
||||||
$.rm(trip);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -12140,7 +12130,7 @@ FappeTyme = (function() {
|
|||||||
FappeTyme = {
|
FappeTyme = {
|
||||||
init: function() {
|
init: function() {
|
||||||
var el, i, indicator, lc, len, ref, ref1, type;
|
var el, i, indicator, lc, len, ref, ref1, type;
|
||||||
if (!((Conf['Fappe Tyme'] || Conf['Werk Tyme']) && ((ref = g.VIEW) === 'index' || ref === 'thread'))) {
|
if (!((Conf['Fappe Tyme'] || Conf['Werk Tyme']) && ((ref = g.VIEW) === 'index' || ref === 'thread' || ref === 'archive'))) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this.nodes = {};
|
this.nodes = {};
|
||||||
@ -13467,8 +13457,8 @@ ImageLoader = (function() {
|
|||||||
|
|
||||||
ImageLoader = {
|
ImageLoader = {
|
||||||
init: function() {
|
init: function() {
|
||||||
var prefetch, ref;
|
var prefetch, ref, ref1;
|
||||||
if (!(((ref = g.VIEW) === 'index' || ref === 'thread') && g.BOARD.ID !== 'f')) {
|
if (!(((ref = g.VIEW) === 'index' || ref === 'thread' || ref === 'archive') && g.BOARD.ID !== 'f')) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!(Conf['Image Prefetching'] || Conf['Replace JPG'] || Conf['Replace PNG'] || Conf['Replace GIF'] || Conf['Replace WEBM'])) {
|
if (!(Conf['Image Prefetching'] || Conf['Replace JPG'] || Conf['Replace PNG'] || Conf['Replace GIF'] || Conf['Replace WEBM'])) {
|
||||||
@ -13484,7 +13474,7 @@ ImageLoader = (function() {
|
|||||||
if (Conf['Replace WEBM']) {
|
if (Conf['Replace WEBM']) {
|
||||||
$.on(d, 'scroll visibilitychange 4chanXInitFinished PostsInserted', this.playVideos);
|
$.on(d, 'scroll visibilitychange 4chanXInitFinished PostsInserted', this.playVideos);
|
||||||
}
|
}
|
||||||
if (!Conf['Image Prefetching']) {
|
if (!(Conf['Image Prefetching'] && ((ref1 = g.VIEW) === 'index' || ref1 === 'thread'))) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
prefetch = $.el('label', {
|
prefetch = $.el('label', {
|
||||||
@ -13720,7 +13710,7 @@ RevealSpoilers = (function() {
|
|||||||
RevealSpoilers = {
|
RevealSpoilers = {
|
||||||
init: function() {
|
init: function() {
|
||||||
var ref;
|
var ref;
|
||||||
if (!(((ref = g.VIEW) === 'index' || ref === 'thread') && Conf['Reveal Spoiler Thumbnails'])) {
|
if (!(((ref = g.VIEW) === 'index' || ref === 'thread' || ref === 'archive') && Conf['Reveal Spoiler Thumbnails'])) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
return Callbacks.Post.push({
|
return Callbacks.Post.push({
|
||||||
@ -14093,7 +14083,7 @@ Embedding = (function() {
|
|||||||
Embedding = {
|
Embedding = {
|
||||||
init: function() {
|
init: function() {
|
||||||
var j, len, ref, ref1, type;
|
var j, len, ref, ref1, type;
|
||||||
if (!(((ref = g.VIEW) === 'index' || ref === 'thread') && Conf['Linkify'] && (Conf['Embedding'] || Conf['Link Title'] || Conf['Cover Preview']))) {
|
if (!(((ref = g.VIEW) === 'index' || ref === 'thread' || ref === 'archive') && Conf['Linkify'] && (Conf['Embedding'] || Conf['Link Title'] || Conf['Cover Preview']))) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this.types = {};
|
this.types = {};
|
||||||
@ -14102,7 +14092,7 @@ Embedding = (function() {
|
|||||||
type = ref1[j];
|
type = ref1[j];
|
||||||
this.types[type.key] = type;
|
this.types[type.key] = type;
|
||||||
}
|
}
|
||||||
if (Conf['Embedding']) {
|
if (Conf['Embedding'] && g.VIEW !== 'archive') {
|
||||||
this.dialog = UI.dialog('embedding', {
|
this.dialog = UI.dialog('embedding', {
|
||||||
innerHTML: "<div><div class=\"move\"></div><a href=\"javascript:;\" class=\"jump\" title=\"Jump to post\">→</a><a href=\"javascript:;\" class=\"close\" title=\"Close\">×</a></div><div id=\"media-embed\"><div></div></div>"
|
innerHTML: "<div><div class=\"move\"></div><a href=\"javascript:;\" class=\"jump\" title=\"Jump to post\">→</a><a href=\"javascript:;\" class=\"close\" title=\"Close\">×</a></div><div id=\"media-embed\"><div></div></div>"
|
||||||
});
|
});
|
||||||
@ -14138,6 +14128,9 @@ Embedding = (function() {
|
|||||||
},
|
},
|
||||||
events: function(post) {
|
events: function(post) {
|
||||||
var data, el, i, items;
|
var data, el, i, items;
|
||||||
|
if (g.VIEW === 'archive') {
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (Conf['Embedding']) {
|
if (Conf['Embedding']) {
|
||||||
i = 0;
|
i = 0;
|
||||||
items = post.nodes.embedlinks = $$('.embedder', post.nodes.comment);
|
items = post.nodes.embedlinks = $$('.embedder', post.nodes.comment);
|
||||||
@ -14168,13 +14161,13 @@ Embedding = (function() {
|
|||||||
}
|
}
|
||||||
if (data = Embedding.services(link)) {
|
if (data = Embedding.services(link)) {
|
||||||
data.post = post;
|
data.post = post;
|
||||||
if (Conf['Embedding']) {
|
if (Conf['Embedding'] && g.VIEW !== 'archive') {
|
||||||
Embedding.embed(data);
|
Embedding.embed(data);
|
||||||
}
|
}
|
||||||
if (Conf['Link Title']) {
|
if (Conf['Link Title']) {
|
||||||
Embedding.title(data);
|
Embedding.title(data);
|
||||||
}
|
}
|
||||||
if (Conf['Cover Preview']) {
|
if (Conf['Cover Preview'] && g.VIEW !== 'archive') {
|
||||||
return Embedding.preview(data);
|
return Embedding.preview(data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -14838,7 +14831,7 @@ Linkify = (function() {
|
|||||||
Linkify = {
|
Linkify = {
|
||||||
init: function() {
|
init: function() {
|
||||||
var ref;
|
var ref;
|
||||||
if (((ref = g.VIEW) !== 'index' && ref !== 'thread') || !Conf['Linkify']) {
|
if (((ref = g.VIEW) !== 'index' && ref !== 'thread' && ref !== 'archive') || !Conf['Linkify']) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (Conf['Comment Expansion']) {
|
if (Conf['Comment Expansion']) {
|
||||||
@ -16062,7 +16055,7 @@ FileInfo = (function() {
|
|||||||
FileInfo = {
|
FileInfo = {
|
||||||
init: function() {
|
init: function() {
|
||||||
var ref;
|
var ref;
|
||||||
if (((ref = g.VIEW) !== 'index' && ref !== 'thread') || !Conf['File Info Formatting']) {
|
if (((ref = g.VIEW) !== 'index' && ref !== 'thread' && ref !== 'archive') || !Conf['File Info Formatting']) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
return Callbacks.Post.push({
|
return Callbacks.Post.push({
|
||||||
@ -16258,7 +16251,7 @@ Fourchan = (function() {
|
|||||||
Fourchan = {
|
Fourchan = {
|
||||||
init: function() {
|
init: function() {
|
||||||
var ref;
|
var ref;
|
||||||
if ((ref = g.VIEW) !== 'index' && ref !== 'thread') {
|
if ((ref = g.VIEW) !== 'index' && ref !== 'thread' && ref !== 'archive') {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (g.BOARD.ID === 'g') {
|
if (g.BOARD.ID === 'g') {
|
||||||
@ -16709,13 +16702,13 @@ Keybinds = (function() {
|
|||||||
Gallery.cb.toggle();
|
Gallery.cb.toggle();
|
||||||
break;
|
break;
|
||||||
case Conf['fappeTyme']:
|
case Conf['fappeTyme']:
|
||||||
if (!(Conf['Fappe Tyme'] && ((ref2 = g.VIEW) === 'index' || ref2 === 'thread'))) {
|
if (!((ref2 = FappeTyme.nodes) != null ? ref2.fappe : void 0)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
FappeTyme.toggle('fappe');
|
FappeTyme.toggle('fappe');
|
||||||
break;
|
break;
|
||||||
case Conf['werkTyme']:
|
case Conf['werkTyme']:
|
||||||
if (!(Conf['Werk Tyme'] && ((ref3 = g.VIEW) === 'index' || ref3 === 'thread'))) {
|
if (!((ref3 = FappeTyme.nodes) != null ? ref3.werk : void 0)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
FappeTyme.toggle('werk');
|
FappeTyme.toggle('werk');
|
||||||
@ -17276,7 +17269,7 @@ RelativeDates = (function() {
|
|||||||
INTERVAL: $.MINUTE / 2,
|
INTERVAL: $.MINUTE / 2,
|
||||||
init: function() {
|
init: function() {
|
||||||
var ref;
|
var ref;
|
||||||
if (((ref = g.VIEW) === 'index' || ref === 'thread') && Conf['Relative Post Dates'] && !Conf['Relative Date Title'] || g.VIEW === 'index' && Conf['JSON Index'] && g.BOARD.ID !== 'f') {
|
if (((ref = g.VIEW) === 'index' || ref === 'thread' || ref === 'archive') && Conf['Relative Post Dates'] && !Conf['Relative Date Title'] || g.VIEW === 'index' && Conf['JSON Index'] && g.BOARD.ID !== 'f') {
|
||||||
this.flush();
|
this.flush();
|
||||||
$.on(d, 'visibilitychange ThreadUpdate', this.flush);
|
$.on(d, 'visibilitychange ThreadUpdate', this.flush);
|
||||||
}
|
}
|
||||||
@ -17510,7 +17503,7 @@ Report = (function() {
|
|||||||
});
|
});
|
||||||
} else if (message) {
|
} else if (message) {
|
||||||
enabled.checked = false;
|
enabled.checked = false;
|
||||||
fieldset.hidden = false;
|
fieldset.hidden = /Report submitted!/.test(message.textContent);
|
||||||
$.on(enabled, 'change', function() {
|
$.on(enabled, 'change', function() {
|
||||||
return submit.hidden = !this.checked;
|
return submit.hidden = !this.checked;
|
||||||
});
|
});
|
||||||
@ -17624,7 +17617,7 @@ Time = (function() {
|
|||||||
Time = {
|
Time = {
|
||||||
init: function() {
|
init: function() {
|
||||||
var ref;
|
var ref;
|
||||||
if (!(((ref = g.VIEW) === 'index' || ref === 'thread') && Conf['Time Formatting'])) {
|
if (!(((ref = g.VIEW) === 'index' || ref === 'thread' || ref === 'archive') && Conf['Time Formatting'])) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
return Callbacks.Post.push({
|
return Callbacks.Post.push({
|
||||||
@ -18591,7 +18584,7 @@ ThreadWatcher = (function() {
|
|||||||
|
|
||||||
ThreadWatcher = {
|
ThreadWatcher = {
|
||||||
init: function() {
|
init: function() {
|
||||||
var sc;
|
var ref, sc;
|
||||||
if (!(this.enabled = Conf['Thread Watcher'])) {
|
if (!(this.enabled = Conf['Thread Watcher'])) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -18662,6 +18655,9 @@ ThreadWatcher = (function() {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
if ((ref = g.VIEW) !== 'index' && ref !== 'thread') {
|
||||||
|
return;
|
||||||
|
}
|
||||||
Callbacks.Post.push({
|
Callbacks.Post.push({
|
||||||
name: 'Thread Watcher',
|
name: 'Thread Watcher',
|
||||||
cb: this.node
|
cb: this.node
|
||||||
@ -18935,7 +18931,7 @@ ThreadWatcher = (function() {
|
|||||||
return ThreadWatcher.requests.push(req);
|
return ThreadWatcher.requests.push(req);
|
||||||
},
|
},
|
||||||
parseStatus: function(arg) {
|
parseStatus: function(arg) {
|
||||||
var boardID, data, i, isDead, lastReadPost, len, match, postObj, quotesYou, quotingYou, ref, ref1, regexp, threadID, unread;
|
var boardID, data, i, isDead, lastReadPost, len, match, postObj, quotesYou, quotingYou, ref, ref1, ref2, regexp, threadID, unread, youOP;
|
||||||
boardID = arg.boardID, threadID = arg.threadID, data = arg.data;
|
boardID = arg.boardID, threadID = arg.threadID, data = arg.data;
|
||||||
ThreadWatcher.fetched++;
|
ThreadWatcher.fetched++;
|
||||||
if (ThreadWatcher.fetched === ThreadWatcher.requests.length) {
|
if (ThreadWatcher.fetched === ThreadWatcher.requests.length) {
|
||||||
@ -18958,14 +18954,20 @@ ThreadWatcher = (function() {
|
|||||||
threadID: threadID,
|
threadID: threadID,
|
||||||
defaultValue: 0
|
defaultValue: 0
|
||||||
});
|
});
|
||||||
unread = quotingYou = 0;
|
unread = 0;
|
||||||
ref = this.response.posts;
|
quotingYou = false;
|
||||||
for (i = 0, len = ref.length; i < len; i++) {
|
youOP = !!((ref = QuoteYou.db) != null ? ref.get({
|
||||||
postObj = ref[i];
|
boardID: boardID,
|
||||||
|
threadID: threadID,
|
||||||
|
postID: threadID
|
||||||
|
}) : void 0);
|
||||||
|
ref1 = this.response.posts;
|
||||||
|
for (i = 0, len = ref1.length; i < len; i++) {
|
||||||
|
postObj = ref1[i];
|
||||||
if (!(postObj.no > lastReadPost)) {
|
if (!(postObj.no > lastReadPost)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if ((ref1 = QuoteYou.db) != null ? ref1.get({
|
if ((ref2 = QuoteYou.db) != null ? ref2.get({
|
||||||
boardID: boardID,
|
boardID: boardID,
|
||||||
threadID: threadID,
|
threadID: threadID,
|
||||||
postID: postObj.no
|
postID: postObj.no
|
||||||
@ -18973,7 +18975,11 @@ ThreadWatcher = (function() {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
unread++;
|
unread++;
|
||||||
if (!(QuoteYou.db && postObj.com)) {
|
if (!quotingYou && youOP && !Filter.isHidden(Build.parseJSON(postObj, boardID))) {
|
||||||
|
quotingYou = true;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (!(!quotingYou && QuoteYou.db && postObj.com)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
quotesYou = false;
|
quotesYou = false;
|
||||||
@ -18989,7 +18995,7 @@ ThreadWatcher = (function() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (quotesYou && !Filter.isHidden(Build.parseJSON(postObj, boardID))) {
|
if (quotesYou && !Filter.isHidden(Build.parseJSON(postObj, boardID))) {
|
||||||
quotingYou++;
|
quotingYou = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (isDead !== data.isDead || unread !== data.unread || quotingYou !== data.quotingYou) {
|
if (isDead !== data.isDead || unread !== data.unread || quotingYou !== data.quotingYou) {
|
||||||
@ -19511,16 +19517,11 @@ Unread = (function() {
|
|||||||
return Unread.update();
|
return Unread.update();
|
||||||
},
|
},
|
||||||
addPost: function() {
|
addPost: function() {
|
||||||
var ref;
|
|
||||||
if (this.isFetchedQuote || this.isClone) {
|
if (this.isFetchedQuote || this.isClone) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Unread.order.push(this);
|
Unread.order.push(this);
|
||||||
if (this.ID <= Unread.lastReadPost || this.isHidden || ((ref = QuoteYou.db) != null ? ref.get({
|
if (this.ID <= Unread.lastReadPost || this.isHidden || QuoteYou.isYou(this)) {
|
||||||
boardID: this.board.ID,
|
|
||||||
threadID: this.thread.ID,
|
|
||||||
postID: this.ID
|
|
||||||
}) : void 0)) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Unread.posts.add(this.ID);
|
Unread.posts.add(this.ID);
|
||||||
@ -19579,7 +19580,7 @@ Unread = (function() {
|
|||||||
return Unread.update();
|
return Unread.update();
|
||||||
},
|
},
|
||||||
read: $.debounce(100, function(e) {
|
read: $.debounce(100, function(e) {
|
||||||
var ID, count, data, ref, ref1, root;
|
var ID, count, data, ref, root;
|
||||||
if (!Unread.posts.size && Unread.readCount !== Unread.thread.posts.keys.length) {
|
if (!Unread.posts.size && Unread.readCount !== Unread.thread.posts.keys.length) {
|
||||||
Unread.saveLastReadPost();
|
Unread.saveLastReadPost();
|
||||||
}
|
}
|
||||||
@ -19596,13 +19597,6 @@ Unread = (function() {
|
|||||||
count++;
|
count++;
|
||||||
Unread.posts["delete"](ID);
|
Unread.posts["delete"](ID);
|
||||||
Unread.postsQuotingYou["delete"](ID);
|
Unread.postsQuotingYou["delete"](ID);
|
||||||
if ((ref1 = QuoteYou.db) != null ? ref1.get({
|
|
||||||
boardID: data.board.ID,
|
|
||||||
threadID: data.thread.ID,
|
|
||||||
postID: ID
|
|
||||||
}) : void 0) {
|
|
||||||
QuoteYou.lastRead = root;
|
|
||||||
}
|
|
||||||
Unread.position = Unread.position.next;
|
Unread.position = Unread.position.next;
|
||||||
}
|
}
|
||||||
if (!count) {
|
if (!count) {
|
||||||
@ -19682,7 +19676,7 @@ Unread = (function() {
|
|||||||
return ThreadWatcher.update(Unread.thread.board.ID, Unread.thread.ID, {
|
return ThreadWatcher.update(Unread.thread.board.ID, Unread.thread.ID, {
|
||||||
isDead: Unread.thread.isDead,
|
isDead: Unread.thread.isDead,
|
||||||
unread: Unread.posts.size,
|
unread: Unread.posts.size,
|
||||||
quotingYou: Unread.postsQuotingYou.size
|
quotingYou: !!(QuoteYou.isYou(Unread.thread.OP) ? Unread.posts.size : Unread.postsQuotingYou.size)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@ -21435,10 +21429,10 @@ QR = (function() {
|
|||||||
$.on(d, 'click', QR.focus);
|
$.on(d, 'click', QR.focus);
|
||||||
if ($.engine === 'gecko' && !window.DataTransferItemList) {
|
if ($.engine === 'gecko' && !window.DataTransferItemList) {
|
||||||
nodes.pasteArea.hidden = false;
|
nodes.pasteArea.hidden = false;
|
||||||
new MutationObserver(QR.pasteFF).observe(nodes.pasteArea, {
|
|
||||||
childList: true
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
new MutationObserver(QR.pasteFF).observe(nodes.pasteArea, {
|
||||||
|
childList: true
|
||||||
|
});
|
||||||
items = ['thread', 'name', 'email', 'sub', 'com', 'filename'];
|
items = ['thread', 'name', 'email', 'sub', 'com', 'filename'];
|
||||||
i = 0;
|
i = 0;
|
||||||
save = function() {
|
save = function() {
|
||||||
@ -22851,15 +22845,11 @@ QuoteBacklink = (function() {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
firstNode: function() {
|
firstNode: function() {
|
||||||
var a, clone, container, containers, hash, i, j, k, len, len1, len2, link, markYours, nodes, post, quote, ref, ref1, ref2;
|
var a, clone, container, containers, hash, i, j, k, len, len1, len2, link, markYours, nodes, post, quote, ref, ref1;
|
||||||
if (this.isClone || !this.quotes.length || this.isRebuilt) {
|
if (this.isClone || !this.quotes.length || this.isRebuilt) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
markYours = Conf['Mark Quotes of You'] && ((ref = QuoteYou.db) != null ? ref.get({
|
markYours = Conf['Mark Quotes of You'] && QuoteYou.isYou(this);
|
||||||
boardID: this.board.ID,
|
|
||||||
threadID: this.thread.ID,
|
|
||||||
postID: this.ID
|
|
||||||
}) : void 0);
|
|
||||||
a = $.el('a', {
|
a = $.el('a', {
|
||||||
href: Build.postURL(this.board.ID, this.thread.ID, this.ID),
|
href: Build.postURL(this.board.ID, this.thread.ID, this.ID),
|
||||||
className: this.isHidden ? 'filtered backlink' : 'backlink',
|
className: this.isHidden ? 'filtered backlink' : 'backlink',
|
||||||
@ -22875,14 +22865,14 @@ QuoteBacklink = (function() {
|
|||||||
if (markYours) {
|
if (markYours) {
|
||||||
$.add(a, QuoteYou.mark.cloneNode(true));
|
$.add(a, QuoteYou.mark.cloneNode(true));
|
||||||
}
|
}
|
||||||
ref1 = this.quotes;
|
ref = this.quotes;
|
||||||
for (i = 0, len = ref1.length; i < len; i++) {
|
for (i = 0, len = ref.length; i < len; i++) {
|
||||||
quote = ref1[i];
|
quote = ref[i];
|
||||||
containers = [QuoteBacklink.getContainer(quote)];
|
containers = [QuoteBacklink.getContainer(quote)];
|
||||||
if ((post = g.posts[quote]) && post.nodes.backlinkContainer) {
|
if ((post = g.posts[quote]) && post.nodes.backlinkContainer) {
|
||||||
ref2 = post.clones;
|
ref1 = post.clones;
|
||||||
for (j = 0, len1 = ref2.length; j < len1; j++) {
|
for (j = 0, len1 = ref1.length; j < len1; j++) {
|
||||||
clone = ref2[j];
|
clone = ref1[j];
|
||||||
containers.push(clone.nodes.backlinkContainer);
|
containers.push(clone.nodes.backlinkContainer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -23174,7 +23164,17 @@ QuotePreview = (function() {
|
|||||||
QuotePreview = {
|
QuotePreview = {
|
||||||
init: function() {
|
init: function() {
|
||||||
var ref;
|
var ref;
|
||||||
if (!(((ref = g.VIEW) === 'index' || ref === 'thread') && Conf['Quote Previewing'])) {
|
if (!Conf['Quote Previewing']) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (g.VIEW === 'archive') {
|
||||||
|
$.on(d, 'mouseover', function(e) {
|
||||||
|
if (e.target.nodeName === 'A' && $.hasClass(e.target, 'quotelink')) {
|
||||||
|
return QuotePreview.mouseover.call(e.target, e);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if ((ref = g.VIEW) !== 'index' && ref !== 'thread') {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (Conf['Comment Expansion']) {
|
if (Conf['Comment Expansion']) {
|
||||||
@ -23524,7 +23524,7 @@ QuoteYou = (function() {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
if ((ref = g.VIEW) !== 'index' && ref !== 'thread') {
|
if ((ref = g.VIEW) !== 'index' && ref !== 'thread' && ref !== 'archive') {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (Conf['Highlight Own Posts']) {
|
if (Conf['Highlight Own Posts']) {
|
||||||
@ -23540,21 +23540,26 @@ QuoteYou = (function() {
|
|||||||
textContent: '\u00A0(You)',
|
textContent: '\u00A0(You)',
|
||||||
className: 'qmark-you'
|
className: 'qmark-you'
|
||||||
});
|
});
|
||||||
return Callbacks.Post.push({
|
Callbacks.Post.push({
|
||||||
name: 'Mark Quotes of You',
|
name: 'Mark Quotes of You',
|
||||||
cb: this.node
|
cb: this.node
|
||||||
});
|
});
|
||||||
|
return QuoteYou.menu.init();
|
||||||
|
},
|
||||||
|
isYou: function(post) {
|
||||||
|
var ref;
|
||||||
|
return !!((ref = QuoteYou.db) != null ? ref.get({
|
||||||
|
boardID: post.board.ID,
|
||||||
|
threadID: post.thread.ID,
|
||||||
|
postID: post.ID
|
||||||
|
}) : void 0);
|
||||||
},
|
},
|
||||||
node: function() {
|
node: function() {
|
||||||
var i, len, quotelink, ref;
|
var i, len, quotelink, ref;
|
||||||
if (this.isClone) {
|
if (this.isClone) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (QuoteYou.db.get({
|
if (QuoteYou.isYou(this)) {
|
||||||
boardID: this.board.ID,
|
|
||||||
threadID: this.thread.ID,
|
|
||||||
postID: this.ID
|
|
||||||
})) {
|
|
||||||
$.addClass(this.nodes.root, 'yourPost');
|
$.addClass(this.nodes.root, 'yourPost');
|
||||||
}
|
}
|
||||||
if (!this.quotes.length) {
|
if (!this.quotes.length) {
|
||||||
@ -23573,6 +23578,61 @@ QuoteYou = (function() {
|
|||||||
$.addClass(this.nodes.root, 'quotesYou');
|
$.addClass(this.nodes.root, 'quotesYou');
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
menu: {
|
||||||
|
init: function() {
|
||||||
|
var input, label, ref;
|
||||||
|
label = $.el('label', {
|
||||||
|
innerHTML: "<input type=\"checkbox\"> You"
|
||||||
|
});
|
||||||
|
input = $('input', label);
|
||||||
|
$.on(input, 'change', QuoteYou.menu.toggle);
|
||||||
|
return (ref = Menu.menu) != null ? ref.addEntry({
|
||||||
|
el: label,
|
||||||
|
order: 12,
|
||||||
|
open: function(post) {
|
||||||
|
QuoteYou.menu.post = post.origin || post;
|
||||||
|
input.checked = QuoteYou.isYou(post);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}) : void 0;
|
||||||
|
},
|
||||||
|
toggle: function() {
|
||||||
|
var clone, data, i, j, len, len1, post, quotelink, quoter, ref, ref1;
|
||||||
|
post = QuoteYou.menu.post;
|
||||||
|
data = {
|
||||||
|
boardID: post.board.ID,
|
||||||
|
threadID: post.thread.ID,
|
||||||
|
postID: post.ID,
|
||||||
|
val: true
|
||||||
|
};
|
||||||
|
if (this.checked) {
|
||||||
|
QuoteYou.db.set(data);
|
||||||
|
} else {
|
||||||
|
QuoteYou.db["delete"](data);
|
||||||
|
}
|
||||||
|
ref = [post].concat(post.clones);
|
||||||
|
for (i = 0, len = ref.length; i < len; i++) {
|
||||||
|
clone = ref[i];
|
||||||
|
clone.nodes.root.classList.toggle('yourPost', this.checked);
|
||||||
|
}
|
||||||
|
ref1 = Get.allQuotelinksLinkingTo(post);
|
||||||
|
for (j = 0, len1 = ref1.length; j < len1; j++) {
|
||||||
|
quotelink = ref1[j];
|
||||||
|
if (this.checked) {
|
||||||
|
if (Conf['Mark Quotes of You']) {
|
||||||
|
$.add(quotelink, QuoteYou.mark.cloneNode(true));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$.rm($('.qmark-you', quotelink));
|
||||||
|
}
|
||||||
|
quotelink.classList.toggle('you', this.checked);
|
||||||
|
if ($.hasClass(quotelink, 'quotelink')) {
|
||||||
|
quoter = Get.postFromNode(quotelink).nodes.root;
|
||||||
|
quoter.classList.toggle('quotesYou', !!$('.quotelink.you', quoter));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
cb: {
|
cb: {
|
||||||
seek: function(type) {
|
seek: function(type) {
|
||||||
var highlight, post, posts, result, str;
|
var highlight, post, posts, result, str;
|
||||||
|
|||||||
Binary file not shown.
@ -1,6 +1,6 @@
|
|||||||
// ==UserScript==
|
// ==UserScript==
|
||||||
// @name 4chan X
|
// @name 4chan X
|
||||||
// @version 1.13.5.2
|
// @version 1.13.6.0
|
||||||
// @minGMVer 1.14
|
// @minGMVer 1.14
|
||||||
// @minFFVer 26
|
// @minFFVer 26
|
||||||
// @namespace 4chan-X
|
// @namespace 4chan-X
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
// ==UserScript==
|
// ==UserScript==
|
||||||
// @name 4chan X
|
// @name 4chan X
|
||||||
// @version 1.13.5.2
|
// @version 1.13.6.0
|
||||||
// @minGMVer 1.14
|
// @minGMVer 1.14
|
||||||
// @minFFVer 26
|
// @minFFVer 26
|
||||||
// @namespace 4chan-X
|
// @namespace 4chan-X
|
||||||
@ -150,7 +150,7 @@ docSet = function() {
|
|||||||
};
|
};
|
||||||
|
|
||||||
g = {
|
g = {
|
||||||
VERSION: '1.13.5.2',
|
VERSION: '1.13.6.0',
|
||||||
NAMESPACE: '4chan X.',
|
NAMESPACE: '4chan X.',
|
||||||
boards: {}
|
boards: {}
|
||||||
};
|
};
|
||||||
@ -2617,6 +2617,24 @@ input[name=\"Default Volume\"] {\n\
|
|||||||
:root.thread-hide .party-hat {\n\
|
:root.thread-hide .party-hat {\n\
|
||||||
left: 19px;\n\
|
left: 19px;\n\
|
||||||
}\n\
|
}\n\
|
||||||
|
/* Anonymize */\n\
|
||||||
|
:root.anonymize .name,\n\
|
||||||
|
:root.anonymize .post-author:not([class*=capcode]) {\n\
|
||||||
|
font-size: 0;\n\
|
||||||
|
}\n\
|
||||||
|
:root.anonymize .postertrip,\n\
|
||||||
|
:root.anonymize .n-pu {\n\
|
||||||
|
display: none;\n\
|
||||||
|
}\n\
|
||||||
|
:root.anonymize .name::before,\n\
|
||||||
|
:root.anonymize .post-author:not([class*=capcode])::before {\n\
|
||||||
|
content: \"Anonymous\";\n\
|
||||||
|
font-size: 10pt;\n\
|
||||||
|
}\n\
|
||||||
|
:root.anonymize .flashListing .name::before,\n\
|
||||||
|
:root.anonymize .post-last > .post-author:not([class*=capcode])::before {\n\
|
||||||
|
font-size: 9pt;\n\
|
||||||
|
}\n\
|
||||||
/* QR */\n\
|
/* QR */\n\
|
||||||
:root.hide-original-post-form #togglePostFormLink,\n\
|
:root.hide-original-post-form #togglePostFormLink,\n\
|
||||||
#qr.autohide:not(.focus):not(:hover):not(:active) > form,\n\
|
#qr.autohide:not(.focus):not(:hover):not(:active) > form,\n\
|
||||||
@ -3697,6 +3715,10 @@ a:only-of-type > .remove {\n\
|
|||||||
:root.futaba .indicator {\n\
|
:root.futaba .indicator {\n\
|
||||||
color: #F0E0D6;\n\
|
color: #F0E0D6;\n\
|
||||||
}\n\
|
}\n\
|
||||||
|
/* Anonymize */\n\
|
||||||
|
:root.futaba.anonymize .name::before {\n\
|
||||||
|
font-size: 12pt;\n\
|
||||||
|
}\n\
|
||||||
/* QR */\n\
|
/* QR */\n\
|
||||||
.futaba #dump-list::-webkit-scrollbar-thumb {\n\
|
.futaba #dump-list::-webkit-scrollbar-thumb {\n\
|
||||||
background-color: #F0E0D6;\n\
|
background-color: #F0E0D6;\n\
|
||||||
@ -3782,6 +3804,10 @@ a:only-of-type > .remove {\n\
|
|||||||
:root.burichan .indicator {\n\
|
:root.burichan .indicator {\n\
|
||||||
color: #D6DAF0;\n\
|
color: #D6DAF0;\n\
|
||||||
}\n\
|
}\n\
|
||||||
|
/* Anonymize */\n\
|
||||||
|
:root.burichan.anonymize .name::before {\n\
|
||||||
|
font-size: 12pt;\n\
|
||||||
|
}\n\
|
||||||
/* QR */\n\
|
/* QR */\n\
|
||||||
.burichan #dump-list::-webkit-scrollbar-thumb {\n\
|
.burichan #dump-list::-webkit-scrollbar-thumb {\n\
|
||||||
background-color: #D6DAF0;\n\
|
background-color: #D6DAF0;\n\
|
||||||
@ -5670,6 +5696,7 @@ Fetcher = (function() {
|
|||||||
if (!this.root.parentNode) {
|
if (!this.root.parentNode) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
this.quoter || (this.quoter = post);
|
||||||
clone = post.addClone(this.quoter.context, $.hasClass(this.root, 'dialog'));
|
clone = post.addClone(this.quoter.context, $.hasClass(this.root, 'dialog'));
|
||||||
Main.callbackNodes('Post', [clone]);
|
Main.callbackNodes('Post', [clone]);
|
||||||
nodes = clone.nodes;
|
nodes = clone.nodes;
|
||||||
@ -5866,6 +5893,12 @@ Fetcher = (function() {
|
|||||||
return 'Admin';
|
return 'Admin';
|
||||||
case 'D':
|
case 'D':
|
||||||
return 'Developer';
|
return 'Developer';
|
||||||
|
case 'V':
|
||||||
|
return 'Verified';
|
||||||
|
case 'F':
|
||||||
|
return 'Founder';
|
||||||
|
case 'G':
|
||||||
|
return 'Manager';
|
||||||
}
|
}
|
||||||
})(),
|
})(),
|
||||||
uniqueID: data.poster_hash,
|
uniqueID: data.poster_hash,
|
||||||
@ -7092,7 +7125,8 @@ Redirect = (function() {
|
|||||||
type = type === 'name' ? 'username' : type === 'MD5' ? 'image' : type;
|
type = type === 'name' ? 'username' : type === 'MD5' ? 'image' : type;
|
||||||
if (type === 'capcode') {
|
if (type === 'capcode') {
|
||||||
value = {
|
value = {
|
||||||
'Developer': 'dev'
|
'Developer': 'dev',
|
||||||
|
'Verified': 'ver'
|
||||||
}[value] || value.toLowerCase();
|
}[value] || value.toLowerCase();
|
||||||
} else if (type === 'image') {
|
} else if (type === 'image') {
|
||||||
value = value.replace(/[+\/=]/g, function(c) {
|
value = value.replace(/[+\/=]/g, function(c) {
|
||||||
@ -7146,54 +7180,10 @@ Anonymize = (function() {
|
|||||||
|
|
||||||
Anonymize = {
|
Anonymize = {
|
||||||
init: function() {
|
init: function() {
|
||||||
var ref;
|
if (!Conf['Anonymize']) {
|
||||||
if (!(((ref = g.VIEW) === 'index' || ref === 'thread' || ref === 'archive') && Conf['Anonymize'])) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (g.VIEW === 'archive') {
|
return $.addClass(doc, 'anonymize');
|
||||||
return this.archive();
|
|
||||||
}
|
|
||||||
return Callbacks.Post.push({
|
|
||||||
name: 'Anonymize',
|
|
||||||
cb: this.node
|
|
||||||
});
|
|
||||||
},
|
|
||||||
node: function() {
|
|
||||||
var email, name, pass, ref, tripcode;
|
|
||||||
if (this.info.capcode || this.isClone) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
ref = this.nodes, name = ref.name, tripcode = ref.tripcode, pass = ref.pass, email = ref.email;
|
|
||||||
if (this.info.name !== 'Anonymous') {
|
|
||||||
name.textContent = 'Anonymous';
|
|
||||||
}
|
|
||||||
if (tripcode) {
|
|
||||||
$.rm(tripcode);
|
|
||||||
delete this.nodes.tripcode;
|
|
||||||
}
|
|
||||||
if (pass) {
|
|
||||||
$.rm(pass);
|
|
||||||
delete this.nodes.pass;
|
|
||||||
}
|
|
||||||
if (email) {
|
|
||||||
$.replace(email, name);
|
|
||||||
return delete this.nodes.email;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
archive: function() {
|
|
||||||
return $.ready(function() {
|
|
||||||
var i, j, len, len1, name, ref, ref1, trip;
|
|
||||||
ref = $$('.name');
|
|
||||||
for (i = 0, len = ref.length; i < len; i++) {
|
|
||||||
name = ref[i];
|
|
||||||
name.textContent = 'Anonymous';
|
|
||||||
}
|
|
||||||
ref1 = $$('.postertrip');
|
|
||||||
for (j = 0, len1 = ref1.length; j < len1; j++) {
|
|
||||||
trip = ref1[j];
|
|
||||||
$.rm(trip);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -12140,7 +12130,7 @@ FappeTyme = (function() {
|
|||||||
FappeTyme = {
|
FappeTyme = {
|
||||||
init: function() {
|
init: function() {
|
||||||
var el, i, indicator, lc, len, ref, ref1, type;
|
var el, i, indicator, lc, len, ref, ref1, type;
|
||||||
if (!((Conf['Fappe Tyme'] || Conf['Werk Tyme']) && ((ref = g.VIEW) === 'index' || ref === 'thread'))) {
|
if (!((Conf['Fappe Tyme'] || Conf['Werk Tyme']) && ((ref = g.VIEW) === 'index' || ref === 'thread' || ref === 'archive'))) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this.nodes = {};
|
this.nodes = {};
|
||||||
@ -13467,8 +13457,8 @@ ImageLoader = (function() {
|
|||||||
|
|
||||||
ImageLoader = {
|
ImageLoader = {
|
||||||
init: function() {
|
init: function() {
|
||||||
var prefetch, ref;
|
var prefetch, ref, ref1;
|
||||||
if (!(((ref = g.VIEW) === 'index' || ref === 'thread') && g.BOARD.ID !== 'f')) {
|
if (!(((ref = g.VIEW) === 'index' || ref === 'thread' || ref === 'archive') && g.BOARD.ID !== 'f')) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!(Conf['Image Prefetching'] || Conf['Replace JPG'] || Conf['Replace PNG'] || Conf['Replace GIF'] || Conf['Replace WEBM'])) {
|
if (!(Conf['Image Prefetching'] || Conf['Replace JPG'] || Conf['Replace PNG'] || Conf['Replace GIF'] || Conf['Replace WEBM'])) {
|
||||||
@ -13484,7 +13474,7 @@ ImageLoader = (function() {
|
|||||||
if (Conf['Replace WEBM']) {
|
if (Conf['Replace WEBM']) {
|
||||||
$.on(d, 'scroll visibilitychange 4chanXInitFinished PostsInserted', this.playVideos);
|
$.on(d, 'scroll visibilitychange 4chanXInitFinished PostsInserted', this.playVideos);
|
||||||
}
|
}
|
||||||
if (!Conf['Image Prefetching']) {
|
if (!(Conf['Image Prefetching'] && ((ref1 = g.VIEW) === 'index' || ref1 === 'thread'))) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
prefetch = $.el('label', {
|
prefetch = $.el('label', {
|
||||||
@ -13720,7 +13710,7 @@ RevealSpoilers = (function() {
|
|||||||
RevealSpoilers = {
|
RevealSpoilers = {
|
||||||
init: function() {
|
init: function() {
|
||||||
var ref;
|
var ref;
|
||||||
if (!(((ref = g.VIEW) === 'index' || ref === 'thread') && Conf['Reveal Spoiler Thumbnails'])) {
|
if (!(((ref = g.VIEW) === 'index' || ref === 'thread' || ref === 'archive') && Conf['Reveal Spoiler Thumbnails'])) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
return Callbacks.Post.push({
|
return Callbacks.Post.push({
|
||||||
@ -14093,7 +14083,7 @@ Embedding = (function() {
|
|||||||
Embedding = {
|
Embedding = {
|
||||||
init: function() {
|
init: function() {
|
||||||
var j, len, ref, ref1, type;
|
var j, len, ref, ref1, type;
|
||||||
if (!(((ref = g.VIEW) === 'index' || ref === 'thread') && Conf['Linkify'] && (Conf['Embedding'] || Conf['Link Title'] || Conf['Cover Preview']))) {
|
if (!(((ref = g.VIEW) === 'index' || ref === 'thread' || ref === 'archive') && Conf['Linkify'] && (Conf['Embedding'] || Conf['Link Title'] || Conf['Cover Preview']))) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this.types = {};
|
this.types = {};
|
||||||
@ -14102,7 +14092,7 @@ Embedding = (function() {
|
|||||||
type = ref1[j];
|
type = ref1[j];
|
||||||
this.types[type.key] = type;
|
this.types[type.key] = type;
|
||||||
}
|
}
|
||||||
if (Conf['Embedding']) {
|
if (Conf['Embedding'] && g.VIEW !== 'archive') {
|
||||||
this.dialog = UI.dialog('embedding', {
|
this.dialog = UI.dialog('embedding', {
|
||||||
innerHTML: "<div><div class=\"move\"></div><a href=\"javascript:;\" class=\"jump\" title=\"Jump to post\">→</a><a href=\"javascript:;\" class=\"close\" title=\"Close\">×</a></div><div id=\"media-embed\"><div></div></div>"
|
innerHTML: "<div><div class=\"move\"></div><a href=\"javascript:;\" class=\"jump\" title=\"Jump to post\">→</a><a href=\"javascript:;\" class=\"close\" title=\"Close\">×</a></div><div id=\"media-embed\"><div></div></div>"
|
||||||
});
|
});
|
||||||
@ -14138,6 +14128,9 @@ Embedding = (function() {
|
|||||||
},
|
},
|
||||||
events: function(post) {
|
events: function(post) {
|
||||||
var data, el, i, items;
|
var data, el, i, items;
|
||||||
|
if (g.VIEW === 'archive') {
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (Conf['Embedding']) {
|
if (Conf['Embedding']) {
|
||||||
i = 0;
|
i = 0;
|
||||||
items = post.nodes.embedlinks = $$('.embedder', post.nodes.comment);
|
items = post.nodes.embedlinks = $$('.embedder', post.nodes.comment);
|
||||||
@ -14168,13 +14161,13 @@ Embedding = (function() {
|
|||||||
}
|
}
|
||||||
if (data = Embedding.services(link)) {
|
if (data = Embedding.services(link)) {
|
||||||
data.post = post;
|
data.post = post;
|
||||||
if (Conf['Embedding']) {
|
if (Conf['Embedding'] && g.VIEW !== 'archive') {
|
||||||
Embedding.embed(data);
|
Embedding.embed(data);
|
||||||
}
|
}
|
||||||
if (Conf['Link Title']) {
|
if (Conf['Link Title']) {
|
||||||
Embedding.title(data);
|
Embedding.title(data);
|
||||||
}
|
}
|
||||||
if (Conf['Cover Preview']) {
|
if (Conf['Cover Preview'] && g.VIEW !== 'archive') {
|
||||||
return Embedding.preview(data);
|
return Embedding.preview(data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -14838,7 +14831,7 @@ Linkify = (function() {
|
|||||||
Linkify = {
|
Linkify = {
|
||||||
init: function() {
|
init: function() {
|
||||||
var ref;
|
var ref;
|
||||||
if (((ref = g.VIEW) !== 'index' && ref !== 'thread') || !Conf['Linkify']) {
|
if (((ref = g.VIEW) !== 'index' && ref !== 'thread' && ref !== 'archive') || !Conf['Linkify']) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (Conf['Comment Expansion']) {
|
if (Conf['Comment Expansion']) {
|
||||||
@ -16062,7 +16055,7 @@ FileInfo = (function() {
|
|||||||
FileInfo = {
|
FileInfo = {
|
||||||
init: function() {
|
init: function() {
|
||||||
var ref;
|
var ref;
|
||||||
if (((ref = g.VIEW) !== 'index' && ref !== 'thread') || !Conf['File Info Formatting']) {
|
if (((ref = g.VIEW) !== 'index' && ref !== 'thread' && ref !== 'archive') || !Conf['File Info Formatting']) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
return Callbacks.Post.push({
|
return Callbacks.Post.push({
|
||||||
@ -16258,7 +16251,7 @@ Fourchan = (function() {
|
|||||||
Fourchan = {
|
Fourchan = {
|
||||||
init: function() {
|
init: function() {
|
||||||
var ref;
|
var ref;
|
||||||
if ((ref = g.VIEW) !== 'index' && ref !== 'thread') {
|
if ((ref = g.VIEW) !== 'index' && ref !== 'thread' && ref !== 'archive') {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (g.BOARD.ID === 'g') {
|
if (g.BOARD.ID === 'g') {
|
||||||
@ -16709,13 +16702,13 @@ Keybinds = (function() {
|
|||||||
Gallery.cb.toggle();
|
Gallery.cb.toggle();
|
||||||
break;
|
break;
|
||||||
case Conf['fappeTyme']:
|
case Conf['fappeTyme']:
|
||||||
if (!(Conf['Fappe Tyme'] && ((ref2 = g.VIEW) === 'index' || ref2 === 'thread'))) {
|
if (!((ref2 = FappeTyme.nodes) != null ? ref2.fappe : void 0)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
FappeTyme.toggle('fappe');
|
FappeTyme.toggle('fappe');
|
||||||
break;
|
break;
|
||||||
case Conf['werkTyme']:
|
case Conf['werkTyme']:
|
||||||
if (!(Conf['Werk Tyme'] && ((ref3 = g.VIEW) === 'index' || ref3 === 'thread'))) {
|
if (!((ref3 = FappeTyme.nodes) != null ? ref3.werk : void 0)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
FappeTyme.toggle('werk');
|
FappeTyme.toggle('werk');
|
||||||
@ -17276,7 +17269,7 @@ RelativeDates = (function() {
|
|||||||
INTERVAL: $.MINUTE / 2,
|
INTERVAL: $.MINUTE / 2,
|
||||||
init: function() {
|
init: function() {
|
||||||
var ref;
|
var ref;
|
||||||
if (((ref = g.VIEW) === 'index' || ref === 'thread') && Conf['Relative Post Dates'] && !Conf['Relative Date Title'] || g.VIEW === 'index' && Conf['JSON Index'] && g.BOARD.ID !== 'f') {
|
if (((ref = g.VIEW) === 'index' || ref === 'thread' || ref === 'archive') && Conf['Relative Post Dates'] && !Conf['Relative Date Title'] || g.VIEW === 'index' && Conf['JSON Index'] && g.BOARD.ID !== 'f') {
|
||||||
this.flush();
|
this.flush();
|
||||||
$.on(d, 'visibilitychange ThreadUpdate', this.flush);
|
$.on(d, 'visibilitychange ThreadUpdate', this.flush);
|
||||||
}
|
}
|
||||||
@ -17510,7 +17503,7 @@ Report = (function() {
|
|||||||
});
|
});
|
||||||
} else if (message) {
|
} else if (message) {
|
||||||
enabled.checked = false;
|
enabled.checked = false;
|
||||||
fieldset.hidden = false;
|
fieldset.hidden = /Report submitted!/.test(message.textContent);
|
||||||
$.on(enabled, 'change', function() {
|
$.on(enabled, 'change', function() {
|
||||||
return submit.hidden = !this.checked;
|
return submit.hidden = !this.checked;
|
||||||
});
|
});
|
||||||
@ -17624,7 +17617,7 @@ Time = (function() {
|
|||||||
Time = {
|
Time = {
|
||||||
init: function() {
|
init: function() {
|
||||||
var ref;
|
var ref;
|
||||||
if (!(((ref = g.VIEW) === 'index' || ref === 'thread') && Conf['Time Formatting'])) {
|
if (!(((ref = g.VIEW) === 'index' || ref === 'thread' || ref === 'archive') && Conf['Time Formatting'])) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
return Callbacks.Post.push({
|
return Callbacks.Post.push({
|
||||||
@ -18591,7 +18584,7 @@ ThreadWatcher = (function() {
|
|||||||
|
|
||||||
ThreadWatcher = {
|
ThreadWatcher = {
|
||||||
init: function() {
|
init: function() {
|
||||||
var sc;
|
var ref, sc;
|
||||||
if (!(this.enabled = Conf['Thread Watcher'])) {
|
if (!(this.enabled = Conf['Thread Watcher'])) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -18662,6 +18655,9 @@ ThreadWatcher = (function() {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
if ((ref = g.VIEW) !== 'index' && ref !== 'thread') {
|
||||||
|
return;
|
||||||
|
}
|
||||||
Callbacks.Post.push({
|
Callbacks.Post.push({
|
||||||
name: 'Thread Watcher',
|
name: 'Thread Watcher',
|
||||||
cb: this.node
|
cb: this.node
|
||||||
@ -18935,7 +18931,7 @@ ThreadWatcher = (function() {
|
|||||||
return ThreadWatcher.requests.push(req);
|
return ThreadWatcher.requests.push(req);
|
||||||
},
|
},
|
||||||
parseStatus: function(arg) {
|
parseStatus: function(arg) {
|
||||||
var boardID, data, i, isDead, lastReadPost, len, match, postObj, quotesYou, quotingYou, ref, ref1, regexp, threadID, unread;
|
var boardID, data, i, isDead, lastReadPost, len, match, postObj, quotesYou, quotingYou, ref, ref1, ref2, regexp, threadID, unread, youOP;
|
||||||
boardID = arg.boardID, threadID = arg.threadID, data = arg.data;
|
boardID = arg.boardID, threadID = arg.threadID, data = arg.data;
|
||||||
ThreadWatcher.fetched++;
|
ThreadWatcher.fetched++;
|
||||||
if (ThreadWatcher.fetched === ThreadWatcher.requests.length) {
|
if (ThreadWatcher.fetched === ThreadWatcher.requests.length) {
|
||||||
@ -18958,14 +18954,20 @@ ThreadWatcher = (function() {
|
|||||||
threadID: threadID,
|
threadID: threadID,
|
||||||
defaultValue: 0
|
defaultValue: 0
|
||||||
});
|
});
|
||||||
unread = quotingYou = 0;
|
unread = 0;
|
||||||
ref = this.response.posts;
|
quotingYou = false;
|
||||||
for (i = 0, len = ref.length; i < len; i++) {
|
youOP = !!((ref = QuoteYou.db) != null ? ref.get({
|
||||||
postObj = ref[i];
|
boardID: boardID,
|
||||||
|
threadID: threadID,
|
||||||
|
postID: threadID
|
||||||
|
}) : void 0);
|
||||||
|
ref1 = this.response.posts;
|
||||||
|
for (i = 0, len = ref1.length; i < len; i++) {
|
||||||
|
postObj = ref1[i];
|
||||||
if (!(postObj.no > lastReadPost)) {
|
if (!(postObj.no > lastReadPost)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if ((ref1 = QuoteYou.db) != null ? ref1.get({
|
if ((ref2 = QuoteYou.db) != null ? ref2.get({
|
||||||
boardID: boardID,
|
boardID: boardID,
|
||||||
threadID: threadID,
|
threadID: threadID,
|
||||||
postID: postObj.no
|
postID: postObj.no
|
||||||
@ -18973,7 +18975,11 @@ ThreadWatcher = (function() {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
unread++;
|
unread++;
|
||||||
if (!(QuoteYou.db && postObj.com)) {
|
if (!quotingYou && youOP && !Filter.isHidden(Build.parseJSON(postObj, boardID))) {
|
||||||
|
quotingYou = true;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (!(!quotingYou && QuoteYou.db && postObj.com)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
quotesYou = false;
|
quotesYou = false;
|
||||||
@ -18989,7 +18995,7 @@ ThreadWatcher = (function() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (quotesYou && !Filter.isHidden(Build.parseJSON(postObj, boardID))) {
|
if (quotesYou && !Filter.isHidden(Build.parseJSON(postObj, boardID))) {
|
||||||
quotingYou++;
|
quotingYou = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (isDead !== data.isDead || unread !== data.unread || quotingYou !== data.quotingYou) {
|
if (isDead !== data.isDead || unread !== data.unread || quotingYou !== data.quotingYou) {
|
||||||
@ -19511,16 +19517,11 @@ Unread = (function() {
|
|||||||
return Unread.update();
|
return Unread.update();
|
||||||
},
|
},
|
||||||
addPost: function() {
|
addPost: function() {
|
||||||
var ref;
|
|
||||||
if (this.isFetchedQuote || this.isClone) {
|
if (this.isFetchedQuote || this.isClone) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Unread.order.push(this);
|
Unread.order.push(this);
|
||||||
if (this.ID <= Unread.lastReadPost || this.isHidden || ((ref = QuoteYou.db) != null ? ref.get({
|
if (this.ID <= Unread.lastReadPost || this.isHidden || QuoteYou.isYou(this)) {
|
||||||
boardID: this.board.ID,
|
|
||||||
threadID: this.thread.ID,
|
|
||||||
postID: this.ID
|
|
||||||
}) : void 0)) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Unread.posts.add(this.ID);
|
Unread.posts.add(this.ID);
|
||||||
@ -19579,7 +19580,7 @@ Unread = (function() {
|
|||||||
return Unread.update();
|
return Unread.update();
|
||||||
},
|
},
|
||||||
read: $.debounce(100, function(e) {
|
read: $.debounce(100, function(e) {
|
||||||
var ID, count, data, ref, ref1, root;
|
var ID, count, data, ref, root;
|
||||||
if (!Unread.posts.size && Unread.readCount !== Unread.thread.posts.keys.length) {
|
if (!Unread.posts.size && Unread.readCount !== Unread.thread.posts.keys.length) {
|
||||||
Unread.saveLastReadPost();
|
Unread.saveLastReadPost();
|
||||||
}
|
}
|
||||||
@ -19596,13 +19597,6 @@ Unread = (function() {
|
|||||||
count++;
|
count++;
|
||||||
Unread.posts["delete"](ID);
|
Unread.posts["delete"](ID);
|
||||||
Unread.postsQuotingYou["delete"](ID);
|
Unread.postsQuotingYou["delete"](ID);
|
||||||
if ((ref1 = QuoteYou.db) != null ? ref1.get({
|
|
||||||
boardID: data.board.ID,
|
|
||||||
threadID: data.thread.ID,
|
|
||||||
postID: ID
|
|
||||||
}) : void 0) {
|
|
||||||
QuoteYou.lastRead = root;
|
|
||||||
}
|
|
||||||
Unread.position = Unread.position.next;
|
Unread.position = Unread.position.next;
|
||||||
}
|
}
|
||||||
if (!count) {
|
if (!count) {
|
||||||
@ -19682,7 +19676,7 @@ Unread = (function() {
|
|||||||
return ThreadWatcher.update(Unread.thread.board.ID, Unread.thread.ID, {
|
return ThreadWatcher.update(Unread.thread.board.ID, Unread.thread.ID, {
|
||||||
isDead: Unread.thread.isDead,
|
isDead: Unread.thread.isDead,
|
||||||
unread: Unread.posts.size,
|
unread: Unread.posts.size,
|
||||||
quotingYou: Unread.postsQuotingYou.size
|
quotingYou: !!(QuoteYou.isYou(Unread.thread.OP) ? Unread.posts.size : Unread.postsQuotingYou.size)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@ -21435,10 +21429,10 @@ QR = (function() {
|
|||||||
$.on(d, 'click', QR.focus);
|
$.on(d, 'click', QR.focus);
|
||||||
if ($.engine === 'gecko' && !window.DataTransferItemList) {
|
if ($.engine === 'gecko' && !window.DataTransferItemList) {
|
||||||
nodes.pasteArea.hidden = false;
|
nodes.pasteArea.hidden = false;
|
||||||
new MutationObserver(QR.pasteFF).observe(nodes.pasteArea, {
|
|
||||||
childList: true
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
new MutationObserver(QR.pasteFF).observe(nodes.pasteArea, {
|
||||||
|
childList: true
|
||||||
|
});
|
||||||
items = ['thread', 'name', 'email', 'sub', 'com', 'filename'];
|
items = ['thread', 'name', 'email', 'sub', 'com', 'filename'];
|
||||||
i = 0;
|
i = 0;
|
||||||
save = function() {
|
save = function() {
|
||||||
@ -22851,15 +22845,11 @@ QuoteBacklink = (function() {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
firstNode: function() {
|
firstNode: function() {
|
||||||
var a, clone, container, containers, hash, i, j, k, len, len1, len2, link, markYours, nodes, post, quote, ref, ref1, ref2;
|
var a, clone, container, containers, hash, i, j, k, len, len1, len2, link, markYours, nodes, post, quote, ref, ref1;
|
||||||
if (this.isClone || !this.quotes.length || this.isRebuilt) {
|
if (this.isClone || !this.quotes.length || this.isRebuilt) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
markYours = Conf['Mark Quotes of You'] && ((ref = QuoteYou.db) != null ? ref.get({
|
markYours = Conf['Mark Quotes of You'] && QuoteYou.isYou(this);
|
||||||
boardID: this.board.ID,
|
|
||||||
threadID: this.thread.ID,
|
|
||||||
postID: this.ID
|
|
||||||
}) : void 0);
|
|
||||||
a = $.el('a', {
|
a = $.el('a', {
|
||||||
href: Build.postURL(this.board.ID, this.thread.ID, this.ID),
|
href: Build.postURL(this.board.ID, this.thread.ID, this.ID),
|
||||||
className: this.isHidden ? 'filtered backlink' : 'backlink',
|
className: this.isHidden ? 'filtered backlink' : 'backlink',
|
||||||
@ -22875,14 +22865,14 @@ QuoteBacklink = (function() {
|
|||||||
if (markYours) {
|
if (markYours) {
|
||||||
$.add(a, QuoteYou.mark.cloneNode(true));
|
$.add(a, QuoteYou.mark.cloneNode(true));
|
||||||
}
|
}
|
||||||
ref1 = this.quotes;
|
ref = this.quotes;
|
||||||
for (i = 0, len = ref1.length; i < len; i++) {
|
for (i = 0, len = ref.length; i < len; i++) {
|
||||||
quote = ref1[i];
|
quote = ref[i];
|
||||||
containers = [QuoteBacklink.getContainer(quote)];
|
containers = [QuoteBacklink.getContainer(quote)];
|
||||||
if ((post = g.posts[quote]) && post.nodes.backlinkContainer) {
|
if ((post = g.posts[quote]) && post.nodes.backlinkContainer) {
|
||||||
ref2 = post.clones;
|
ref1 = post.clones;
|
||||||
for (j = 0, len1 = ref2.length; j < len1; j++) {
|
for (j = 0, len1 = ref1.length; j < len1; j++) {
|
||||||
clone = ref2[j];
|
clone = ref1[j];
|
||||||
containers.push(clone.nodes.backlinkContainer);
|
containers.push(clone.nodes.backlinkContainer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -23174,7 +23164,17 @@ QuotePreview = (function() {
|
|||||||
QuotePreview = {
|
QuotePreview = {
|
||||||
init: function() {
|
init: function() {
|
||||||
var ref;
|
var ref;
|
||||||
if (!(((ref = g.VIEW) === 'index' || ref === 'thread') && Conf['Quote Previewing'])) {
|
if (!Conf['Quote Previewing']) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (g.VIEW === 'archive') {
|
||||||
|
$.on(d, 'mouseover', function(e) {
|
||||||
|
if (e.target.nodeName === 'A' && $.hasClass(e.target, 'quotelink')) {
|
||||||
|
return QuotePreview.mouseover.call(e.target, e);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if ((ref = g.VIEW) !== 'index' && ref !== 'thread') {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (Conf['Comment Expansion']) {
|
if (Conf['Comment Expansion']) {
|
||||||
@ -23524,7 +23524,7 @@ QuoteYou = (function() {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
if ((ref = g.VIEW) !== 'index' && ref !== 'thread') {
|
if ((ref = g.VIEW) !== 'index' && ref !== 'thread' && ref !== 'archive') {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (Conf['Highlight Own Posts']) {
|
if (Conf['Highlight Own Posts']) {
|
||||||
@ -23540,21 +23540,26 @@ QuoteYou = (function() {
|
|||||||
textContent: '\u00A0(You)',
|
textContent: '\u00A0(You)',
|
||||||
className: 'qmark-you'
|
className: 'qmark-you'
|
||||||
});
|
});
|
||||||
return Callbacks.Post.push({
|
Callbacks.Post.push({
|
||||||
name: 'Mark Quotes of You',
|
name: 'Mark Quotes of You',
|
||||||
cb: this.node
|
cb: this.node
|
||||||
});
|
});
|
||||||
|
return QuoteYou.menu.init();
|
||||||
|
},
|
||||||
|
isYou: function(post) {
|
||||||
|
var ref;
|
||||||
|
return !!((ref = QuoteYou.db) != null ? ref.get({
|
||||||
|
boardID: post.board.ID,
|
||||||
|
threadID: post.thread.ID,
|
||||||
|
postID: post.ID
|
||||||
|
}) : void 0);
|
||||||
},
|
},
|
||||||
node: function() {
|
node: function() {
|
||||||
var i, len, quotelink, ref;
|
var i, len, quotelink, ref;
|
||||||
if (this.isClone) {
|
if (this.isClone) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (QuoteYou.db.get({
|
if (QuoteYou.isYou(this)) {
|
||||||
boardID: this.board.ID,
|
|
||||||
threadID: this.thread.ID,
|
|
||||||
postID: this.ID
|
|
||||||
})) {
|
|
||||||
$.addClass(this.nodes.root, 'yourPost');
|
$.addClass(this.nodes.root, 'yourPost');
|
||||||
}
|
}
|
||||||
if (!this.quotes.length) {
|
if (!this.quotes.length) {
|
||||||
@ -23573,6 +23578,61 @@ QuoteYou = (function() {
|
|||||||
$.addClass(this.nodes.root, 'quotesYou');
|
$.addClass(this.nodes.root, 'quotesYou');
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
menu: {
|
||||||
|
init: function() {
|
||||||
|
var input, label, ref;
|
||||||
|
label = $.el('label', {
|
||||||
|
innerHTML: "<input type=\"checkbox\"> You"
|
||||||
|
});
|
||||||
|
input = $('input', label);
|
||||||
|
$.on(input, 'change', QuoteYou.menu.toggle);
|
||||||
|
return (ref = Menu.menu) != null ? ref.addEntry({
|
||||||
|
el: label,
|
||||||
|
order: 12,
|
||||||
|
open: function(post) {
|
||||||
|
QuoteYou.menu.post = post.origin || post;
|
||||||
|
input.checked = QuoteYou.isYou(post);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}) : void 0;
|
||||||
|
},
|
||||||
|
toggle: function() {
|
||||||
|
var clone, data, i, j, len, len1, post, quotelink, quoter, ref, ref1;
|
||||||
|
post = QuoteYou.menu.post;
|
||||||
|
data = {
|
||||||
|
boardID: post.board.ID,
|
||||||
|
threadID: post.thread.ID,
|
||||||
|
postID: post.ID,
|
||||||
|
val: true
|
||||||
|
};
|
||||||
|
if (this.checked) {
|
||||||
|
QuoteYou.db.set(data);
|
||||||
|
} else {
|
||||||
|
QuoteYou.db["delete"](data);
|
||||||
|
}
|
||||||
|
ref = [post].concat(post.clones);
|
||||||
|
for (i = 0, len = ref.length; i < len; i++) {
|
||||||
|
clone = ref[i];
|
||||||
|
clone.nodes.root.classList.toggle('yourPost', this.checked);
|
||||||
|
}
|
||||||
|
ref1 = Get.allQuotelinksLinkingTo(post);
|
||||||
|
for (j = 0, len1 = ref1.length; j < len1; j++) {
|
||||||
|
quotelink = ref1[j];
|
||||||
|
if (this.checked) {
|
||||||
|
if (Conf['Mark Quotes of You']) {
|
||||||
|
$.add(quotelink, QuoteYou.mark.cloneNode(true));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$.rm($('.qmark-you', quotelink));
|
||||||
|
}
|
||||||
|
quotelink.classList.toggle('you', this.checked);
|
||||||
|
if ($.hasClass(quotelink, 'quotelink')) {
|
||||||
|
quoter = Get.postFromNode(quotelink).nodes.root;
|
||||||
|
quoter.classList.toggle('quotesYou', !!$('.quotelink.you', quoter));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
cb: {
|
cb: {
|
||||||
seek: function(type) {
|
seek: function(type) {
|
||||||
var highlight, post, posts, result, str;
|
var highlight, post, posts, result, str;
|
||||||
|
|||||||
Binary file not shown.
@ -1,7 +1,7 @@
|
|||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>
|
<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>
|
||||||
<app appid='lacclbnghgdicfifcamcmcnilckjamag'>
|
<app appid='lacclbnghgdicfifcamcmcnilckjamag'>
|
||||||
<updatecheck codebase='https://www.4chan-x.net/builds/4chan-X-beta.crx' version='1.13.5.2' />
|
<updatecheck codebase='https://www.4chan-x.net/builds/4chan-X-beta.crx' version='1.13.6.0' />
|
||||||
</app>
|
</app>
|
||||||
</gupdate>
|
</gupdate>
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>
|
<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>
|
||||||
<app appid='lacclbnghgdicfifcamcmcnilckjamag'>
|
<app appid='lacclbnghgdicfifcamcmcnilckjamag'>
|
||||||
<updatecheck codebase='https://www.4chan-x.net/builds/4chan-X.crx' version='1.13.5.2' />
|
<updatecheck codebase='https://www.4chan-x.net/builds/4chan-X.crx' version='1.13.6.0' />
|
||||||
</app>
|
</app>
|
||||||
</gupdate>
|
</gupdate>
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
{
|
{
|
||||||
"version": "1.13.5.2",
|
"version": "1.13.6.0",
|
||||||
"date": "2017-01-27T14:50:16.872Z"
|
"date": "2017-01-30T02:34:11.336Z"
|
||||||
}
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user