diff --git a/src/ember/conversations.js b/src/ember/conversations.js
index 06bee1d0..6490dbe9 100644
--- a/src/ember/conversations.js
+++ b/src/ember/conversations.js
@@ -142,18 +142,22 @@ FFZ.prototype._modify_conversation_line = function(component) {
return this._super(e);
},
- render: function(e) {
- var user = this.get('message.from.username'),
+ didUpdate: function() { this.ffzRender() },
+ didInsertElement: function() { this.ffzRender() },
+
+ ffzRender: function() {
+ var el = this.get('element'),
+ e = [],
+
+ user = this.get('message.from.username'),
raw_color = this.get('message.from.color'),
colors = raw_color && f._handle_color(raw_color),
is_dark = (Layout && Layout.get('isTheatreMode')) || f.settings.dark_twitch,
myself = f.get_user(),
- from_me = myself && myself.login === user;
+ from_me = myself && myself.login === user,
- e.push('
');
-
- var alias = f.aliases[user],
+ alias = f.aliases[user],
name = this.get('message.from.displayName') || (user && user.capitalize()) || "unknown user",
style = colors && 'color:' + (is_dark ? colors[1] : colors[0]),
colored = style ? ' has-color' : '';
@@ -173,6 +177,7 @@ FFZ.prototype._modify_conversation_line = function(component) {
e.push('');
e.push(f.render_tokens(this.get('tokenizedMessage'), true, f.settings.filter_whispered_links && !from_me));
e.push('');
+ el.innerHTML = e.join('');
}
});
}
\ No newline at end of file
diff --git a/src/ember/line.js b/src/ember/line.js
index 95e3590a..6d86543e 100644
--- a/src/ember/line.js
+++ b/src/ember/line.js
@@ -937,6 +937,19 @@ FFZ.prototype._modify_vod_line = function(component) {
this.$(".deleted").replaceWith(this.buildMessageHTML());
}),*/
+ tokenizedMessage: function() {
+ try {
+ return f.tokenize_vod_line(this.get('msgObject'), !(this.get('enableLinkification') || this.get('isModeratorOrHigher')));
+ } catch(err) {
+ f.error("vod-chat-line tokenizedMessage: " + err);
+ return this._super();
+ }
+ }.property("msgObject.message", "currentUserNick", "msgObject.from", "msgObject.tags.emotes"),
+
+ buildHorizontalLineHTML: function() {
+ return '' + this.get('msgObject.timestamp') + '
';
+ },
+
buildModIconsHTML: function() {
if ( ! this.get("isViewerModeratorOrHigher") || this.get("isModeratorOrHigher") )
return "";
@@ -951,16 +964,23 @@ FFZ.prototype._modify_vod_line = function(component) {
return '<message deleted>';
},
- render: function(e) {
+ didUpdate: function() { this.ffzRender() },
+ didInsertElement: function() { this.ffzRender() },
+
+ ffzRender: function() {
+ var el = this.get('element'), output;
+
if ( this.get('msgObject.isHorizontalLine') )
- e.push(this.buildHorizontalLineHTML());
+ output = this.buildHorizontalLineHTML();
else {
- e.push(this.buildSenderHTML());
- if ( this.get("msgObject.deleted") )
- e.push(this.buildDeletedMessageHTML())
+ output = this.buildSenderHTML();
+ if ( this.get('msgObject.deleted') )
+ output += this.buildDeletedMessageHTML()
else
- e.push(this.buildMessageHTML());
+ output += this.buildMessageHTML();
}
+
+ el.innerHTML = output;
},
click: function(e) {
@@ -968,12 +988,6 @@ FFZ.prototype._modify_vod_line = function(component) {
e.preventDefault();
this.sendAction("timeoutUser", this.get("msgObject.id"));
}
- },
-
- didInsertElement: function() {
- this._super();
- if ( this.get("msgObject.ffz_has_mention") )
- this.get("element").classList.add("ffz-mentioned");
}
});
}
diff --git a/src/main.js b/src/main.js
index 2611e658..d5281e24 100644
--- a/src/main.js
+++ b/src/main.js
@@ -35,7 +35,7 @@ FFZ.msg_commands = {};
// Version
var VER = FFZ.version_info = {
- major: 3, minor: 5, revision: 138,
+ major: 3, minor: 5, revision: 139,
toString: function() {
return [VER.major, VER.minor, VER.revision].join(".") + (VER.extra || "");
}
diff --git a/src/tokenize.js b/src/tokenize.js
index e9960b79..23567312 100644
--- a/src/tokenize.js
+++ b/src/tokenize.js
@@ -417,16 +417,66 @@ FFZ.prototype.tokenize_conversation_line = function(message, prevent_notificatio
return tokens;
}
+
+FFZ.prototype.tokenize_vod_line = function(msgObject, delete_links) {
+ var cached = msgObject.get('cachedTokens');
+ if ( cached )
+ return cached;
+
+ var msg = msgObject.get('message'),
+ room_id = msgObject.get('room'),
+ from_user = msgObject.get('from'),
+ user = this.get_user(),
+ from_me = user && from_user === user.login,
+ emotes = msgObject.get('tags.emotes'),
+ tokens = [msg];
+
+ if ( helpers && helpers.linkifyMessage )
+ tokens = helpers.linkifyMessage(tokens, delete_links);
+
+ if ( user && user.login && helpers && helpers.mentionizeMessage )
+ tokens = helpers.mentionizeMessage(tokens, user.login, from_me);
+
+ if ( helpers && helpers.emoticonizeMessage && emotes )
+ tokens = helpers.emoticonizeMessage(tokens, emotes);
+
+ // FrankerFaceZ Extras
+ tokens = this._remove_banned(tokens);
+ tokens = this.tokenize_emotes(from_user, room_id, tokens, from_me);
+
+ if ( this.settings.parse_emoji )
+ tokens = this.tokenize_emoji(tokens);
+
+ var display = msgObject.get('tags.display-name');
+ if ( display && display.length )
+ FFZ.capitalization[from_user] = [display.trim(), Date.now()];
+
+ if ( ! from_me ) {
+ tokens = this.tokenize_mentions(tokens);
+ for(var i=0; i < tokens.length; i++) {
+ var token = tokens[i];
+ if ( token.type === 'mention' && ! token.isOwnMessage ) {
+ msgObject.set('ffz_has_mention', true);
+ break;
+ }
+ }
+ }
+
+ msgObject.set('cachedTokens', tokens);
+ return tokens;
+}
+
+
FFZ.prototype.tokenize_chat_line = function(msgObject, prevent_notification, delete_links) {
if ( msgObject.cachedTokens )
return msgObject.cachedTokens;
- var msg = msgObject.get && (msgObject.get('message') || msgObject.get('body')) || msgObject.message,
- room_id = msgObject.get && msgObject.get('room') || msgObject.room,
- from_user = msgObject.get && msgObject.get('from') || msgObject.from,
+ var msg = msgObject.message,
+ room_id = msgObject.room,
+ from_user = msgObject.from,
user = this.get_user(),
from_me = user && from_user === user.login,
- emotes = msgObject.get && msgObject.get('tags.emotes') || msgObject.tags && msgObject.tags.emotes,
+ emotes = msgObject.tags && msgObject.tags.emotes,
tokens = [msg];
// Standard tokenization
@@ -474,7 +524,7 @@ FFZ.prototype.tokenize_chat_line = function(msgObject, prevent_notification, del
continue;
// We have a mention!
- msgObject.ffz_has_mention = true;
+ msgObject.ffz_has_mention = true;
// If we have chat tabs/rows, update the status.
if ( room_id && ! this.has_bttv && this._chatv ) {