mirror of
https://github.com/FrankerFaceZ/FrankerFaceZ.git
synced 2025-08-02 16:08:31 +00:00
Rough support for the updated BetterTTV. It's kind of messy, so I'll investigate a better way to hook into it with less chance of breaking.
Other minor changes.
This commit is contained in:
parent
a0ab653e8f
commit
216a82aa5a
10 changed files with 205 additions and 89 deletions
144
script.js
144
script.js
|
@ -247,10 +247,22 @@ FFZ.prototype._legacy_add_donors = function() {
|
||||||
visible: function(r,user) { return this.settings.bot_badges && !(this.has_bttv && FFZ.bttv_known_bots.indexOf(user)!==-1); }};
|
visible: function(r,user) { return this.settings.bot_badges && !(this.has_bttv && FFZ.bttv_known_bots.indexOf(user)!==-1); }};
|
||||||
utils.update_css(this._badge_style, 2, badge_css(this.badges[2]));
|
utils.update_css(this._badge_style, 2, badge_css(this.badges[2]));
|
||||||
|
|
||||||
|
// Load BTTV Bots
|
||||||
|
for(var i=0; i < FFZ.bttv_known_bots.length; i++) {
|
||||||
|
var name = FFZ.bttv_known_bots[i],
|
||||||
|
user = this.users[name] = this.users[name] || {},
|
||||||
|
badges = user.badges = user.badges || {};
|
||||||
|
|
||||||
|
if ( ! badges[0] )
|
||||||
|
badges[0] = {id:2};
|
||||||
|
}
|
||||||
|
|
||||||
// Special Badges
|
// Special Badges
|
||||||
this.users.sirstendec = {badges: {1: {id:0}}};
|
this.users.sirstendec = {badges: {1: {id:0}}};
|
||||||
this.users.zenwan = {badges: {0: {id:2, image: "//cdn.frankerfacez.com/channel/global/momiglee_badge.png", title: "WAN"}}};
|
this.users.zenwan = {badges: {0: {id:2, image: "//cdn.frankerfacez.com/channel/global/momiglee_badge.png", title: "WAN"}}};
|
||||||
|
|
||||||
|
this.load_set(".donor");
|
||||||
|
|
||||||
this._legacy_load_bots();
|
this._legacy_load_bots();
|
||||||
this._legacy_load_donors();
|
this._legacy_load_donors();
|
||||||
}
|
}
|
||||||
|
@ -287,13 +299,20 @@ FFZ.prototype._legacy_load_donors = function(tries) {
|
||||||
|
|
||||||
|
|
||||||
FFZ.prototype._legacy_parse_badges = function(data, slot, badge_id) {
|
FFZ.prototype._legacy_parse_badges = function(data, slot, badge_id) {
|
||||||
var count = 0;
|
var title = this.badges[badge_id].title,
|
||||||
|
count = 0;
|
||||||
|
ds = badge_id == 1 ? ".donor" : "";
|
||||||
|
|
||||||
if ( data != null ) {
|
if ( data != null ) {
|
||||||
var lines = data.trim().split(/\W+/);
|
var lines = data.trim().split(/\W+/);
|
||||||
for(var i=0; i < lines.length; i++) {
|
for(var i=0; i < lines.length; i++) {
|
||||||
var user_id = lines[i],
|
var user_id = lines[i],
|
||||||
user = this.users[user_id] = this.users[user_id] || {},
|
user = this.users[user_id] = this.users[user_id] || {},
|
||||||
badges = user.badges = user.badges || {};
|
badges = user.badges = user.badges || {},
|
||||||
|
sets = user.sets = user.sets || [];
|
||||||
|
|
||||||
|
if ( sets.indexOf(ds) === -1 )
|
||||||
|
sets.push(ds);
|
||||||
|
|
||||||
if ( badges[slot] )
|
if ( badges[slot] )
|
||||||
continue;
|
continue;
|
||||||
|
@ -303,7 +322,6 @@ FFZ.prototype._legacy_parse_badges = function(data, slot, badge_id) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var title = this.badges[badge_id].title;
|
|
||||||
this.log('Added "' + title + '" badge to ' + utils.number_commas(count) + " users.");
|
this.log('Added "' + title + '" badge to ' + utils.number_commas(count) + " users.");
|
||||||
}
|
}
|
||||||
},{"./constants":3,"./utils":27}],2:[function(require,module,exports){
|
},{"./constants":3,"./utils":27}],2:[function(require,module,exports){
|
||||||
|
@ -748,7 +766,7 @@ FFZ.prototype.setup_line = function() {
|
||||||
|
|
||||||
var end = performance.now();
|
var end = performance.now();
|
||||||
if ( end - start > 5 )
|
if ( end - start > 5 )
|
||||||
f.log("Tokenizing Message Took Too Long - " + (end-start) + "ms - " + JSON.stringify(tokens));
|
f.log("Tokenizing Message Took Too Long - " + (end-start) + "ms", tokens, false, true);
|
||||||
|
|
||||||
} catch(err) {
|
} catch(err) {
|
||||||
try {
|
try {
|
||||||
|
@ -913,22 +931,14 @@ FFZ.prototype.setup_line = function() {
|
||||||
set = f.emote_sets[set_id],
|
set = f.emote_sets[set_id],
|
||||||
emote = set ? set.emotes[id] : null,
|
emote = set ? set.emotes[id] : null,
|
||||||
|
|
||||||
set_name = set.id,
|
set_name = set ? (set.title || set.id) : "Unknown FFZ Set",
|
||||||
set_type = "FFZ Channel";
|
set_type = (set && set.title) ? "FrankerFaceZ" : "FFZ Channel";
|
||||||
|
|
||||||
if ( set.id == "global" ) {
|
if ( set && f.feature_friday && set.id == f.feature_friday.set )
|
||||||
set_name = "FrankerFaceZ Global";
|
|
||||||
set_type = null;
|
|
||||||
|
|
||||||
} else if ( set.id == "globalevent" ) {
|
|
||||||
set_name = "FrankerFaceZ Event";
|
|
||||||
set_type = null;
|
|
||||||
|
|
||||||
} else if ( f.feature_friday && set.id == f.feature_friday.set )
|
|
||||||
set_name = "Feature Friday - " + f.feature_friday.channel;
|
set_name = "Feature Friday - " + f.feature_friday.channel;
|
||||||
|
|
||||||
img.title = data_to_tooltip({
|
img.title = data_to_tooltip({
|
||||||
code: emote.hidden ? "???" : emote.name,
|
code: emote ? (emote.hidden ? "???" : emote.name) : name,
|
||||||
set: set_name,
|
set: set_name,
|
||||||
set_type: set_type
|
set_type: set_type
|
||||||
});
|
});
|
||||||
|
@ -940,7 +950,7 @@ FFZ.prototype.setup_line = function() {
|
||||||
|
|
||||||
var duration = performance.now() - start;
|
var duration = performance.now() - start;
|
||||||
if ( duration > 5 )
|
if ( duration > 5 )
|
||||||
f.log("Line Took Too Long - " + duration + "ms - " + el.innerHTML);
|
f.log("Line Took Too Long - " + duration + "ms", el.innerHTML, false, true);
|
||||||
|
|
||||||
} catch(err) {
|
} catch(err) {
|
||||||
try {
|
try {
|
||||||
|
@ -2128,6 +2138,13 @@ FFZ.prototype._legacy_load_set = function(set_id, callback, tries) {
|
||||||
FFZ.prototype._legacy_load_css = function(set_id, callback, data) {
|
FFZ.prototype._legacy_load_css = function(set_id, callback, data) {
|
||||||
var emotes = {}, output = {id: set_id, emotes: emotes, extra_css: null}, f = this;
|
var emotes = {}, output = {id: set_id, emotes: emotes, extra_css: null}, f = this;
|
||||||
|
|
||||||
|
if ( set_id == "global" )
|
||||||
|
output.title = "Global";
|
||||||
|
else if ( set_id == "globalevent" )
|
||||||
|
output.title = "Global Event";
|
||||||
|
else if ( set_id == ".donor" )
|
||||||
|
output.title = "Donor";
|
||||||
|
|
||||||
data = data.replace(CSS, function(match, klass, name, path, height, width, margins, extra) {
|
data = data.replace(CSS, function(match, klass, name, path, height, width, margins, extra) {
|
||||||
height = parseInt(height); width = parseInt(width);
|
height = parseInt(height); width = parseInt(width);
|
||||||
margins = check_margins(margins, height);
|
margins = check_margins(margins, height);
|
||||||
|
@ -2175,6 +2192,8 @@ FFZ.prototype.setup_bttv = function(delay) {
|
||||||
this.log("BetterTTV was detected after " + delay + "ms. Hooking.");
|
this.log("BetterTTV was detected after " + delay + "ms. Hooking.");
|
||||||
this.has_bttv = true;
|
this.has_bttv = true;
|
||||||
|
|
||||||
|
this.log("WOO");
|
||||||
|
|
||||||
// this.track('setCustomVariable', '3', 'BetterTTV', BetterTTV.info.versionString());
|
// this.track('setCustomVariable', '3', 'BetterTTV', BetterTTV.info.versionString());
|
||||||
|
|
||||||
// Disable Dark if it's enabled.
|
// Disable Dark if it's enabled.
|
||||||
|
@ -2201,11 +2220,13 @@ FFZ.prototype.setup_bttv = function(delay) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Ugly Hack for Current Room
|
// Ugly Hack for Current Room, as this is stripped out before we get to
|
||||||
var original_handler = BetterTTV.chat.handlers.privmsg,
|
// the actual privmsg renderer.
|
||||||
|
var original_handler = BetterTTV.chat.handlers.onPrivmsg,
|
||||||
received_room;
|
received_room;
|
||||||
BetterTTV.chat.handlers.privmsg = function(room, data) {
|
BetterTTV.chat.handlers.onPrivmsg = function(room, data) {
|
||||||
received_room = room;
|
received_room = room;
|
||||||
|
f.log("Room: " + room);
|
||||||
var output = original_handler(room, data);
|
var output = original_handler(room, data);
|
||||||
received_room = null;
|
received_room = null;
|
||||||
return output;
|
return output;
|
||||||
|
@ -2215,23 +2236,56 @@ FFZ.prototype.setup_bttv = function(delay) {
|
||||||
// Message Display Behavior
|
// Message Display Behavior
|
||||||
var original_privmsg = BetterTTV.chat.templates.privmsg;
|
var original_privmsg = BetterTTV.chat.templates.privmsg;
|
||||||
BetterTTV.chat.templates.privmsg = function(highlight, action, server, isMod, data) {
|
BetterTTV.chat.templates.privmsg = function(highlight, action, server, isMod, data) {
|
||||||
// Handle badges.
|
try {
|
||||||
f.bttv_badges(data);
|
// Handle badges.
|
||||||
|
f.log("Got Message", data);
|
||||||
|
f.bttv_badges(data);
|
||||||
|
|
||||||
var output = original_privmsg(highlight, action, server, isMod, data);
|
// Now, do everything else manually because things are hard-coded.
|
||||||
return output.replace(SENDER_REGEX, '$1 data-room="' + received_room + '"');
|
return '<div class="chat-line'+(highlight?' highlight':'')+(action?' action':'')+(server?' admin':'')+'" data-sender="'+data.sender+'" data-room="'+received_room+'">'+
|
||||||
|
BetterTTV.chat.templates.timestamp(data.time)+' '+
|
||||||
|
(isMod?BetterTTV.chat.templates.modicons():'')+' '+
|
||||||
|
BetterTTV.chat.templates.badges(data.badges)+
|
||||||
|
BetterTTV.chat.templates.from(data.nickname, data.color)+
|
||||||
|
BetterTTV.chat.templates.message(data.sender, data.message, data.emotes, action?data.color:false)+
|
||||||
|
'</div>';
|
||||||
|
} catch(err) {
|
||||||
|
f.log("Error: ", err);
|
||||||
|
return original_privmsg(highlight, action, server, isMod, data);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Message Renderer. I had to completely rewrite this method to get it to
|
||||||
// Ugly Hack for Current Sender
|
// use my replacement emoticonizer.
|
||||||
var original_template = BetterTTV.chat.templates.message,
|
var original_message = BetterTTV.chat.templates.message,
|
||||||
received_sender;
|
received_sender;
|
||||||
BetterTTV.chat.templates.message = function(sender, message, emotes, colored) {
|
BetterTTV.chat.templates.message = function(sender, message, emotes, colored) {
|
||||||
received_sender = sender;
|
try {
|
||||||
var output = original_template(sender, message, emotes, colored);
|
colored = colored || false;
|
||||||
received_sender = null;
|
var rawMessage = encodeURIComponent(message);
|
||||||
return output;
|
|
||||||
}
|
if(sender !== 'jtv') {
|
||||||
|
received_sender = sender;
|
||||||
|
var tokenizedMessage = BetterTTV.chat.templates.emoticonize(message, emotes);
|
||||||
|
received_sender = null;
|
||||||
|
|
||||||
|
for(var i=0; i<tokenizedMessage.length; i++) {
|
||||||
|
if(typeof tokenizedMessage[i] === 'string') {
|
||||||
|
tokenizedMessage[i] = BetterTTV.chat.templates.bttvMessageTokenize(sender, tokenizedMessage[i]);
|
||||||
|
} else {
|
||||||
|
tokenizedMessage[i] = tokenizedMessage[i][0];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
message = tokenizedMessage.join(' ');
|
||||||
|
}
|
||||||
|
|
||||||
|
return '<span class="message" '+(colored?'style="color: '+colored+'" ':'')+'data-raw="'+rawMessage+'">'+message+'</span>';
|
||||||
|
} catch(err) {
|
||||||
|
f.log("Error: ", err);
|
||||||
|
return original_message(sender, message, emotes, colored);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
// Emoticonize
|
// Emoticonize
|
||||||
|
@ -2357,7 +2411,8 @@ FFZ.prototype._emote_menu_enumerator = function() {
|
||||||
|
|
||||||
else
|
else
|
||||||
title = "FrankerFaceZ Set: " + FFZ.get_capitalization(set.id);
|
title = "FrankerFaceZ Set: " + FFZ.get_capitalization(set.id);
|
||||||
}
|
} else
|
||||||
|
title = "FrankerFaceZ: " + title;
|
||||||
|
|
||||||
emotes.push({text: emote.name, url: emote.url,
|
emotes.push({text: emote.name, url: emote.url,
|
||||||
hidden: false, channel: title, badge: badge});
|
hidden: false, channel: title, badge: badge});
|
||||||
|
@ -2391,7 +2446,7 @@ FFZ.get = function() { return FFZ.instance; }
|
||||||
|
|
||||||
// Version
|
// Version
|
||||||
var VER = FFZ.version_info = {
|
var VER = FFZ.version_info = {
|
||||||
major: 3, minor: 2, revision: 4,
|
major: 3, minor: 2, revision: 5,
|
||||||
toString: function() {
|
toString: function() {
|
||||||
return [VER.major, VER.minor, VER.revision].join(".") + (VER.extra || "");
|
return [VER.major, VER.minor, VER.revision].join(".") + (VER.extra || "");
|
||||||
}
|
}
|
||||||
|
@ -2400,9 +2455,9 @@ var VER = FFZ.version_info = {
|
||||||
|
|
||||||
// Logging
|
// Logging
|
||||||
|
|
||||||
FFZ.prototype.log = function(msg, data, to_json) {
|
FFZ.prototype.log = function(msg, data, to_json, log_json) {
|
||||||
msg = "FFZ: " + msg + (to_json ? " -- " + JSON.stringify(data) : "");
|
msg = "FFZ: " + msg + (to_json ? " -- " + JSON.stringify(data) : "");
|
||||||
this._log_data.push(msg);
|
this._log_data.push(msg + ((!to_json && log_json) ? " -- " + JSON.stringify(data) : ""));
|
||||||
|
|
||||||
if ( data !== undefined && console.groupCollapsed && console.dir ) {
|
if ( data !== undefined && console.groupCollapsed && console.dir ) {
|
||||||
console.groupCollapsed(msg);
|
console.groupCollapsed(msg);
|
||||||
|
@ -2510,6 +2565,8 @@ require('./ui/races');
|
||||||
require('./ui/my_emotes');
|
require('./ui/my_emotes');
|
||||||
require('./ui/about_page');
|
require('./ui/about_page');
|
||||||
|
|
||||||
|
//require('./ui/group_chat');
|
||||||
|
|
||||||
require('./commands');
|
require('./commands');
|
||||||
|
|
||||||
|
|
||||||
|
@ -2573,6 +2630,7 @@ FFZ.prototype.setup_ember = function(delay) {
|
||||||
this.setup_menu();
|
this.setup_menu();
|
||||||
this.setup_my_emotes();
|
this.setup_my_emotes();
|
||||||
this.setup_races();
|
this.setup_races();
|
||||||
|
//this.setup_group_chat();
|
||||||
|
|
||||||
this.find_bttv(10);
|
this.find_bttv(10);
|
||||||
this.find_emote_menu(10);
|
this.find_emote_menu(10);
|
||||||
|
@ -3071,7 +3129,7 @@ FFZ.prototype.ws_create = function() {
|
||||||
this._ws_pending = this._ws_pending || [];
|
this._ws_pending = this._ws_pending || [];
|
||||||
|
|
||||||
try {
|
try {
|
||||||
ws = this._ws_sock = new WebSocket("ws://ffz.stendec.me/");
|
ws = this._ws_sock = new WebSocket("ws://catbag.frankerfacez.com/");
|
||||||
} catch(err) {
|
} catch(err) {
|
||||||
this._ws_exists = false;
|
this._ws_exists = false;
|
||||||
return this.log("Error Creating WebSocket: " + err);
|
return this.log("Error Creating WebSocket: " + err);
|
||||||
|
@ -3103,7 +3161,7 @@ FFZ.prototype.ws_create = function() {
|
||||||
}
|
}
|
||||||
|
|
||||||
ws.onclose = function(e) {
|
ws.onclose = function(e) {
|
||||||
f.log("Socket closed.");
|
f.log("Socket closed. (Code: " + e.code + ", Reason: " + e.reason + ")");
|
||||||
f._ws_open = false;
|
f._ws_open = false;
|
||||||
|
|
||||||
// When the connection closes, run our callbacks.
|
// When the connection closes, run our callbacks.
|
||||||
|
@ -3146,14 +3204,14 @@ FFZ.prototype.ws_create = function() {
|
||||||
if ( command )
|
if ( command )
|
||||||
command.bind(f)(data);
|
command.bind(f)(data);
|
||||||
else
|
else
|
||||||
f.log("Invalid command: " + cmd, data);
|
f.log("Invalid command: " + cmd, data, false, true);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
var success = cmd === 'True',
|
var success = cmd === 'True',
|
||||||
callback = f._ws_callbacks[request];
|
callback = f._ws_callbacks[request];
|
||||||
|
|
||||||
if ( ! success || ! callback )
|
if ( ! success || ! callback )
|
||||||
f.log("Socket Reply to " + request + " - " + (success ? "SUCCESS" : "FAIL"), data);
|
f.log("Socket Reply to " + request + " - " + (success ? "SUCCESS" : "FAIL"), data, false, true);
|
||||||
|
|
||||||
if ( callback ) {
|
if ( callback ) {
|
||||||
delete f._ws_callbacks[request];
|
delete f._ws_callbacks[request];
|
||||||
|
@ -3910,7 +3968,7 @@ FFZ.menu_pages.my_emotes = {
|
||||||
if ( ! set.channel )
|
if ( ! set.channel )
|
||||||
set.channel = name;
|
set.channel = name;
|
||||||
dn();
|
dn();
|
||||||
}.bind(this,set,name,dn), 5000);
|
}.bind(this,set,name,dn), 2000);
|
||||||
}.bind(this, set, lname, name)));
|
}.bind(this, set, lname, name)));
|
||||||
},
|
},
|
||||||
handle_promises = function() {
|
handle_promises = function() {
|
||||||
|
@ -3952,7 +4010,7 @@ FFZ.menu_pages.my_emotes = {
|
||||||
setTimeout(function() {
|
setTimeout(function() {
|
||||||
if ( needed_sets.length )
|
if ( needed_sets.length )
|
||||||
handle_promises();
|
handle_promises();
|
||||||
}, 5000);
|
}, 2000);
|
||||||
|
|
||||||
} else
|
} else
|
||||||
handle_promises();
|
handle_promises();
|
||||||
|
@ -4038,7 +4096,7 @@ FFZ.menu_pages.my_emotes = {
|
||||||
if ( set.id === "global" )
|
if ( set.id === "global" )
|
||||||
title = "Global Emoticons";
|
title = "Global Emoticons";
|
||||||
else
|
else
|
||||||
title = set.id;
|
title = set.title || set.id;
|
||||||
|
|
||||||
badge = set.icon || "http://cdn.frankerfacez.com/channel/global/devicon.png";
|
badge = set.icon || "http://cdn.frankerfacez.com/channel/global/devicon.png";
|
||||||
|
|
||||||
|
|
6
script.min.js
vendored
6
script.min.js
vendored
File diff suppressed because one or more lines are too long
|
@ -246,10 +246,22 @@ FFZ.prototype._legacy_add_donors = function() {
|
||||||
visible: function(r,user) { return this.settings.bot_badges && !(this.has_bttv && FFZ.bttv_known_bots.indexOf(user)!==-1); }};
|
visible: function(r,user) { return this.settings.bot_badges && !(this.has_bttv && FFZ.bttv_known_bots.indexOf(user)!==-1); }};
|
||||||
utils.update_css(this._badge_style, 2, badge_css(this.badges[2]));
|
utils.update_css(this._badge_style, 2, badge_css(this.badges[2]));
|
||||||
|
|
||||||
|
// Load BTTV Bots
|
||||||
|
for(var i=0; i < FFZ.bttv_known_bots.length; i++) {
|
||||||
|
var name = FFZ.bttv_known_bots[i],
|
||||||
|
user = this.users[name] = this.users[name] || {},
|
||||||
|
badges = user.badges = user.badges || {};
|
||||||
|
|
||||||
|
if ( ! badges[0] )
|
||||||
|
badges[0] = {id:2};
|
||||||
|
}
|
||||||
|
|
||||||
// Special Badges
|
// Special Badges
|
||||||
this.users.sirstendec = {badges: {1: {id:0}}};
|
this.users.sirstendec = {badges: {1: {id:0}}};
|
||||||
this.users.zenwan = {badges: {0: {id:2, image: "//cdn.frankerfacez.com/channel/global/momiglee_badge.png", title: "WAN"}}};
|
this.users.zenwan = {badges: {0: {id:2, image: "//cdn.frankerfacez.com/channel/global/momiglee_badge.png", title: "WAN"}}};
|
||||||
|
|
||||||
|
this.load_set(".donor");
|
||||||
|
|
||||||
this._legacy_load_bots();
|
this._legacy_load_bots();
|
||||||
this._legacy_load_donors();
|
this._legacy_load_donors();
|
||||||
}
|
}
|
||||||
|
@ -286,13 +298,20 @@ FFZ.prototype._legacy_load_donors = function(tries) {
|
||||||
|
|
||||||
|
|
||||||
FFZ.prototype._legacy_parse_badges = function(data, slot, badge_id) {
|
FFZ.prototype._legacy_parse_badges = function(data, slot, badge_id) {
|
||||||
var count = 0;
|
var title = this.badges[badge_id].title,
|
||||||
|
count = 0;
|
||||||
|
ds = badge_id == 1 ? ".donor" : "";
|
||||||
|
|
||||||
if ( data != null ) {
|
if ( data != null ) {
|
||||||
var lines = data.trim().split(/\W+/);
|
var lines = data.trim().split(/\W+/);
|
||||||
for(var i=0; i < lines.length; i++) {
|
for(var i=0; i < lines.length; i++) {
|
||||||
var user_id = lines[i],
|
var user_id = lines[i],
|
||||||
user = this.users[user_id] = this.users[user_id] || {},
|
user = this.users[user_id] = this.users[user_id] || {},
|
||||||
badges = user.badges = user.badges || {};
|
badges = user.badges = user.badges || {},
|
||||||
|
sets = user.sets = user.sets || [];
|
||||||
|
|
||||||
|
if ( sets.indexOf(ds) === -1 )
|
||||||
|
sets.push(ds);
|
||||||
|
|
||||||
if ( badges[slot] )
|
if ( badges[slot] )
|
||||||
continue;
|
continue;
|
||||||
|
@ -302,6 +321,5 @@ FFZ.prototype._legacy_parse_badges = function(data, slot, badge_id) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var title = this.badges[badge_id].title;
|
|
||||||
this.log('Added "' + title + '" badge to ' + utils.number_commas(count) + " users.");
|
this.log('Added "' + title + '" badge to ' + utils.number_commas(count) + " users.");
|
||||||
}
|
}
|
|
@ -234,7 +234,7 @@ FFZ.prototype.setup_line = function() {
|
||||||
|
|
||||||
var end = performance.now();
|
var end = performance.now();
|
||||||
if ( end - start > 5 )
|
if ( end - start > 5 )
|
||||||
f.log("Tokenizing Message Took Too Long - " + (end-start) + "ms - " + JSON.stringify(tokens));
|
f.log("Tokenizing Message Took Too Long - " + (end-start) + "ms", tokens, false, true);
|
||||||
|
|
||||||
} catch(err) {
|
} catch(err) {
|
||||||
try {
|
try {
|
||||||
|
@ -399,22 +399,14 @@ FFZ.prototype.setup_line = function() {
|
||||||
set = f.emote_sets[set_id],
|
set = f.emote_sets[set_id],
|
||||||
emote = set ? set.emotes[id] : null,
|
emote = set ? set.emotes[id] : null,
|
||||||
|
|
||||||
set_name = set.id,
|
set_name = set ? (set.title || set.id) : "Unknown FFZ Set",
|
||||||
set_type = "FFZ Channel";
|
set_type = (set && set.title) ? "FrankerFaceZ" : "FFZ Channel";
|
||||||
|
|
||||||
if ( set.id == "global" ) {
|
if ( set && f.feature_friday && set.id == f.feature_friday.set )
|
||||||
set_name = "FrankerFaceZ Global";
|
|
||||||
set_type = null;
|
|
||||||
|
|
||||||
} else if ( set.id == "globalevent" ) {
|
|
||||||
set_name = "FrankerFaceZ Event";
|
|
||||||
set_type = null;
|
|
||||||
|
|
||||||
} else if ( f.feature_friday && set.id == f.feature_friday.set )
|
|
||||||
set_name = "Feature Friday - " + f.feature_friday.channel;
|
set_name = "Feature Friday - " + f.feature_friday.channel;
|
||||||
|
|
||||||
img.title = data_to_tooltip({
|
img.title = data_to_tooltip({
|
||||||
code: emote.hidden ? "???" : emote.name,
|
code: emote ? (emote.hidden ? "???" : emote.name) : name,
|
||||||
set: set_name,
|
set: set_name,
|
||||||
set_type: set_type
|
set_type: set_type
|
||||||
});
|
});
|
||||||
|
@ -426,7 +418,7 @@ FFZ.prototype.setup_line = function() {
|
||||||
|
|
||||||
var duration = performance.now() - start;
|
var duration = performance.now() - start;
|
||||||
if ( duration > 5 )
|
if ( duration > 5 )
|
||||||
f.log("Line Took Too Long - " + duration + "ms - " + el.innerHTML);
|
f.log("Line Took Too Long - " + duration + "ms", el.innerHTML, false, true);
|
||||||
|
|
||||||
} catch(err) {
|
} catch(err) {
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -174,6 +174,13 @@ FFZ.prototype._legacy_load_set = function(set_id, callback, tries) {
|
||||||
FFZ.prototype._legacy_load_css = function(set_id, callback, data) {
|
FFZ.prototype._legacy_load_css = function(set_id, callback, data) {
|
||||||
var emotes = {}, output = {id: set_id, emotes: emotes, extra_css: null}, f = this;
|
var emotes = {}, output = {id: set_id, emotes: emotes, extra_css: null}, f = this;
|
||||||
|
|
||||||
|
if ( set_id == "global" )
|
||||||
|
output.title = "Global";
|
||||||
|
else if ( set_id == "globalevent" )
|
||||||
|
output.title = "Global Event";
|
||||||
|
else if ( set_id == ".donor" )
|
||||||
|
output.title = "Donor";
|
||||||
|
|
||||||
data = data.replace(CSS, function(match, klass, name, path, height, width, margins, extra) {
|
data = data.replace(CSS, function(match, klass, name, path, height, width, margins, extra) {
|
||||||
height = parseInt(height); width = parseInt(width);
|
height = parseInt(height); width = parseInt(width);
|
||||||
margins = check_margins(margins, height);
|
margins = check_margins(margins, height);
|
||||||
|
|
|
@ -23,6 +23,8 @@ FFZ.prototype.setup_bttv = function(delay) {
|
||||||
this.log("BetterTTV was detected after " + delay + "ms. Hooking.");
|
this.log("BetterTTV was detected after " + delay + "ms. Hooking.");
|
||||||
this.has_bttv = true;
|
this.has_bttv = true;
|
||||||
|
|
||||||
|
this.log("WOO");
|
||||||
|
|
||||||
// this.track('setCustomVariable', '3', 'BetterTTV', BetterTTV.info.versionString());
|
// this.track('setCustomVariable', '3', 'BetterTTV', BetterTTV.info.versionString());
|
||||||
|
|
||||||
// Disable Dark if it's enabled.
|
// Disable Dark if it's enabled.
|
||||||
|
@ -49,11 +51,13 @@ FFZ.prototype.setup_bttv = function(delay) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Ugly Hack for Current Room
|
// Ugly Hack for Current Room, as this is stripped out before we get to
|
||||||
var original_handler = BetterTTV.chat.handlers.privmsg,
|
// the actual privmsg renderer.
|
||||||
|
var original_handler = BetterTTV.chat.handlers.onPrivmsg,
|
||||||
received_room;
|
received_room;
|
||||||
BetterTTV.chat.handlers.privmsg = function(room, data) {
|
BetterTTV.chat.handlers.onPrivmsg = function(room, data) {
|
||||||
received_room = room;
|
received_room = room;
|
||||||
|
f.log("Room: " + room);
|
||||||
var output = original_handler(room, data);
|
var output = original_handler(room, data);
|
||||||
received_room = null;
|
received_room = null;
|
||||||
return output;
|
return output;
|
||||||
|
@ -63,23 +67,56 @@ FFZ.prototype.setup_bttv = function(delay) {
|
||||||
// Message Display Behavior
|
// Message Display Behavior
|
||||||
var original_privmsg = BetterTTV.chat.templates.privmsg;
|
var original_privmsg = BetterTTV.chat.templates.privmsg;
|
||||||
BetterTTV.chat.templates.privmsg = function(highlight, action, server, isMod, data) {
|
BetterTTV.chat.templates.privmsg = function(highlight, action, server, isMod, data) {
|
||||||
// Handle badges.
|
try {
|
||||||
f.bttv_badges(data);
|
// Handle badges.
|
||||||
|
f.log("Got Message", data);
|
||||||
|
f.bttv_badges(data);
|
||||||
|
|
||||||
var output = original_privmsg(highlight, action, server, isMod, data);
|
// Now, do everything else manually because things are hard-coded.
|
||||||
return output.replace(SENDER_REGEX, '$1 data-room="' + received_room + '"');
|
return '<div class="chat-line'+(highlight?' highlight':'')+(action?' action':'')+(server?' admin':'')+'" data-sender="'+data.sender+'" data-room="'+received_room+'">'+
|
||||||
|
BetterTTV.chat.templates.timestamp(data.time)+' '+
|
||||||
|
(isMod?BetterTTV.chat.templates.modicons():'')+' '+
|
||||||
|
BetterTTV.chat.templates.badges(data.badges)+
|
||||||
|
BetterTTV.chat.templates.from(data.nickname, data.color)+
|
||||||
|
BetterTTV.chat.templates.message(data.sender, data.message, data.emotes, action?data.color:false)+
|
||||||
|
'</div>';
|
||||||
|
} catch(err) {
|
||||||
|
f.log("Error: ", err);
|
||||||
|
return original_privmsg(highlight, action, server, isMod, data);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Message Renderer. I had to completely rewrite this method to get it to
|
||||||
// Ugly Hack for Current Sender
|
// use my replacement emoticonizer.
|
||||||
var original_template = BetterTTV.chat.templates.message,
|
var original_message = BetterTTV.chat.templates.message,
|
||||||
received_sender;
|
received_sender;
|
||||||
BetterTTV.chat.templates.message = function(sender, message, emotes, colored) {
|
BetterTTV.chat.templates.message = function(sender, message, emotes, colored) {
|
||||||
received_sender = sender;
|
try {
|
||||||
var output = original_template(sender, message, emotes, colored);
|
colored = colored || false;
|
||||||
received_sender = null;
|
var rawMessage = encodeURIComponent(message);
|
||||||
return output;
|
|
||||||
}
|
if(sender !== 'jtv') {
|
||||||
|
received_sender = sender;
|
||||||
|
var tokenizedMessage = BetterTTV.chat.templates.emoticonize(message, emotes);
|
||||||
|
received_sender = null;
|
||||||
|
|
||||||
|
for(var i=0; i<tokenizedMessage.length; i++) {
|
||||||
|
if(typeof tokenizedMessage[i] === 'string') {
|
||||||
|
tokenizedMessage[i] = BetterTTV.chat.templates.bttvMessageTokenize(sender, tokenizedMessage[i]);
|
||||||
|
} else {
|
||||||
|
tokenizedMessage[i] = tokenizedMessage[i][0];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
message = tokenizedMessage.join(' ');
|
||||||
|
}
|
||||||
|
|
||||||
|
return '<span class="message" '+(colored?'style="color: '+colored+'" ':'')+'data-raw="'+rawMessage+'">'+message+'</span>';
|
||||||
|
} catch(err) {
|
||||||
|
f.log("Error: ", err);
|
||||||
|
return original_message(sender, message, emotes, colored);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
// Emoticonize
|
// Emoticonize
|
||||||
|
|
|
@ -63,7 +63,8 @@ FFZ.prototype._emote_menu_enumerator = function() {
|
||||||
|
|
||||||
else
|
else
|
||||||
title = "FrankerFaceZ Set: " + FFZ.get_capitalization(set.id);
|
title = "FrankerFaceZ Set: " + FFZ.get_capitalization(set.id);
|
||||||
}
|
} else
|
||||||
|
title = "FrankerFaceZ: " + title;
|
||||||
|
|
||||||
emotes.push({text: emote.name, url: emote.url,
|
emotes.push({text: emote.name, url: emote.url,
|
||||||
hidden: false, channel: title, badge: badge});
|
hidden: false, channel: title, badge: badge});
|
||||||
|
|
|
@ -22,7 +22,7 @@ FFZ.get = function() { return FFZ.instance; }
|
||||||
|
|
||||||
// Version
|
// Version
|
||||||
var VER = FFZ.version_info = {
|
var VER = FFZ.version_info = {
|
||||||
major: 3, minor: 2, revision: 4,
|
major: 3, minor: 2, revision: 5,
|
||||||
toString: function() {
|
toString: function() {
|
||||||
return [VER.major, VER.minor, VER.revision].join(".") + (VER.extra || "");
|
return [VER.major, VER.minor, VER.revision].join(".") + (VER.extra || "");
|
||||||
}
|
}
|
||||||
|
@ -31,9 +31,9 @@ var VER = FFZ.version_info = {
|
||||||
|
|
||||||
// Logging
|
// Logging
|
||||||
|
|
||||||
FFZ.prototype.log = function(msg, data, to_json) {
|
FFZ.prototype.log = function(msg, data, to_json, log_json) {
|
||||||
msg = "FFZ: " + msg + (to_json ? " -- " + JSON.stringify(data) : "");
|
msg = "FFZ: " + msg + (to_json ? " -- " + JSON.stringify(data) : "");
|
||||||
this._log_data.push(msg);
|
this._log_data.push(msg + ((!to_json && log_json) ? " -- " + JSON.stringify(data) : ""));
|
||||||
|
|
||||||
if ( data !== undefined && console.groupCollapsed && console.dir ) {
|
if ( data !== undefined && console.groupCollapsed && console.dir ) {
|
||||||
console.groupCollapsed(msg);
|
console.groupCollapsed(msg);
|
||||||
|
@ -141,6 +141,8 @@ require('./ui/races');
|
||||||
require('./ui/my_emotes');
|
require('./ui/my_emotes');
|
||||||
require('./ui/about_page');
|
require('./ui/about_page');
|
||||||
|
|
||||||
|
//require('./ui/group_chat');
|
||||||
|
|
||||||
require('./commands');
|
require('./commands');
|
||||||
|
|
||||||
|
|
||||||
|
@ -204,6 +206,7 @@ FFZ.prototype.setup_ember = function(delay) {
|
||||||
this.setup_menu();
|
this.setup_menu();
|
||||||
this.setup_my_emotes();
|
this.setup_my_emotes();
|
||||||
this.setup_races();
|
this.setup_races();
|
||||||
|
//this.setup_group_chat();
|
||||||
|
|
||||||
this.find_bttv(10);
|
this.find_bttv(10);
|
||||||
this.find_emote_menu(10);
|
this.find_emote_menu(10);
|
||||||
|
|
|
@ -19,7 +19,7 @@ FFZ.prototype.ws_create = function() {
|
||||||
this._ws_pending = this._ws_pending || [];
|
this._ws_pending = this._ws_pending || [];
|
||||||
|
|
||||||
try {
|
try {
|
||||||
ws = this._ws_sock = new WebSocket("ws://ffz.stendec.me/");
|
ws = this._ws_sock = new WebSocket("ws://catbag.frankerfacez.com/");
|
||||||
} catch(err) {
|
} catch(err) {
|
||||||
this._ws_exists = false;
|
this._ws_exists = false;
|
||||||
return this.log("Error Creating WebSocket: " + err);
|
return this.log("Error Creating WebSocket: " + err);
|
||||||
|
@ -51,7 +51,7 @@ FFZ.prototype.ws_create = function() {
|
||||||
}
|
}
|
||||||
|
|
||||||
ws.onclose = function(e) {
|
ws.onclose = function(e) {
|
||||||
f.log("Socket closed.");
|
f.log("Socket closed. (Code: " + e.code + ", Reason: " + e.reason + ")");
|
||||||
f._ws_open = false;
|
f._ws_open = false;
|
||||||
|
|
||||||
// When the connection closes, run our callbacks.
|
// When the connection closes, run our callbacks.
|
||||||
|
@ -94,14 +94,14 @@ FFZ.prototype.ws_create = function() {
|
||||||
if ( command )
|
if ( command )
|
||||||
command.bind(f)(data);
|
command.bind(f)(data);
|
||||||
else
|
else
|
||||||
f.log("Invalid command: " + cmd, data);
|
f.log("Invalid command: " + cmd, data, false, true);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
var success = cmd === 'True',
|
var success = cmd === 'True',
|
||||||
callback = f._ws_callbacks[request];
|
callback = f._ws_callbacks[request];
|
||||||
|
|
||||||
if ( ! success || ! callback )
|
if ( ! success || ! callback )
|
||||||
f.log("Socket Reply to " + request + " - " + (success ? "SUCCESS" : "FAIL"), data);
|
f.log("Socket Reply to " + request + " - " + (success ? "SUCCESS" : "FAIL"), data, false, true);
|
||||||
|
|
||||||
if ( callback ) {
|
if ( callback ) {
|
||||||
delete f._ws_callbacks[request];
|
delete f._ws_callbacks[request];
|
||||||
|
|
|
@ -187,7 +187,7 @@ FFZ.menu_pages.my_emotes = {
|
||||||
if ( ! set.channel )
|
if ( ! set.channel )
|
||||||
set.channel = name;
|
set.channel = name;
|
||||||
dn();
|
dn();
|
||||||
}.bind(this,set,name,dn), 5000);
|
}.bind(this,set,name,dn), 2000);
|
||||||
}.bind(this, set, lname, name)));
|
}.bind(this, set, lname, name)));
|
||||||
},
|
},
|
||||||
handle_promises = function() {
|
handle_promises = function() {
|
||||||
|
@ -229,7 +229,7 @@ FFZ.menu_pages.my_emotes = {
|
||||||
setTimeout(function() {
|
setTimeout(function() {
|
||||||
if ( needed_sets.length )
|
if ( needed_sets.length )
|
||||||
handle_promises();
|
handle_promises();
|
||||||
}, 5000);
|
}, 2000);
|
||||||
|
|
||||||
} else
|
} else
|
||||||
handle_promises();
|
handle_promises();
|
||||||
|
@ -315,7 +315,7 @@ FFZ.menu_pages.my_emotes = {
|
||||||
if ( set.id === "global" )
|
if ( set.id === "global" )
|
||||||
title = "Global Emoticons";
|
title = "Global Emoticons";
|
||||||
else
|
else
|
||||||
title = set.id;
|
title = set.title || set.id;
|
||||||
|
|
||||||
badge = set.icon || "http://cdn.frankerfacez.com/channel/global/devicon.png";
|
badge = set.icon || "http://cdn.frankerfacez.com/channel/global/devicon.png";
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue