1
0
Fork 0
mirror of https://github.com/FrankerFaceZ/FrankerFaceZ.git synced 2025-06-27 21:05:53 +00:00

3.5.431. Make badge replacement more flexible.

This commit is contained in:
SirStendec 2017-02-17 13:54:17 -05:00
parent c3cca7de64
commit 81945e601d
4 changed files with 72 additions and 25 deletions

View file

@ -1,3 +1,13 @@
<div class="list-header">3.5.431 <time datetime="2017-02-17">(2017-02-17)</time></div>
<ul class="chat-menu-content menu-side-padding">
<li>API Changed: Add different modes for merging badges.</li>
</ul>
<div class="list-header">3.5.430 <time datetime="2017-02-17">(2017-02-17)</time></div>
<ul class="chat-menu-content menu-side-padding">
<li>Fixed: Bug with the API because constants isn't defined.</li>
</ul>
<div class="list-header">3.5.429 <time datetime="2017-02-16">(2017-02-16)</time></div>
<ul class="chat-menu-content menu-side-padding">
<li>Fixed: CSS tweaks for the dark theme.</li>

View file

@ -413,14 +413,26 @@ FFZ.prototype.get_badges = function(user, room_id, badges, msg) {
}
if ( old_badge ) {
var replaces = badge.hasOwnProperty('replaces') ? badge.replaces : full_badge.replaces;
var replaces = badge.hasOwnProperty('replaces') ? badge.replaces : full_badge.replaces,
replace_mode = badge.replace_mode || full_badge.replace_mode || 'merge';
if ( ! replaces )
continue;
old_badge.image = badge.image || null;
old_badge.klass += ' ffz-badge-replacement ffz-replacer-ffz-badge-' + (badge_id || full_badge_id);
old_badge.title += ', ' + (badge.title || full_badge.title);
continue;
if ( replace_mode === 'merge' ) {
old_badge.image = badge.image || null;
old_badge.klass += ' ffz-badge-replacement ffz-replacer-ffz-badge-' + (badge_id || full_badge_id);
old_badge.title += ', ' + (badge.title || full_badge.title);
continue;
} else if ( replace_mode === 'keep_title' ) {
var b = badges[slot] = this._get_badge_object(badge, full_badge);
b.title = old_badge.title + ', ' + b.title;
continue;
} else if ( replace_mode === 'title_only' ) {
old_badge.title += ', ' + (badge.title || full_badge.title);
continue;
}
}
badges[slot] = this._get_badge_object(badge, full_badge);
@ -665,6 +677,7 @@ FFZ.prototype.bttv_badges = function(data) {
full_badge_id = full_badge.real_id || full_badge.id,
desc = badge.title || full_badge.title,
style = "",
klass = 'ffz-badge-' + badge_id + (alpha ? ' alpha' : ''),
hide_key = (full_badge.source_ext ? this._apis[full_badge.source_ext].name_key : 'ffz') + '-' + (full_badge.name || full_badge.id);
@ -680,23 +693,6 @@ FFZ.prototype.bttv_badges = function(data) {
continue;
}
if ( full_badge.replaces ) {
var replaced = false;
for(var i=0; i < data.badges.length; i++) {
var b = data.badges[i];
if ( b.type === full_badge.replaces_type ) {
b.type += " ffz-badge-replacement ffz-replacer-ffz-badge-" + (badge_id || full_badge_id);
b.description += ", " + (badge.title || full_badge.title) +
(badge.image ? '" style="background-image: url(' + utils.quote_attr('"' + badge.image + '"') + ')' : '');
replaced = true;
break;
}
}
if ( replaced )
continue;
}
if ( alpha && badge.transparent_image )
style += 'background-image: url("' + badge.transparent_image + '");';
else if ( badge.image )
@ -711,7 +707,42 @@ FFZ.prototype.bttv_badges = function(data) {
if ( style )
desc += '" style="' + utils.quote_attr(style);
badges_out.push([(insert_at == -1 ? 1 : -1) * slot, {type: "ffz-badge-" + badge_id + (alpha ? " alpha" : ""), name: "", description: desc}]);
var replaces = badge.hasOwnProperty('replaces') ? badge.replaces : full_badge.replaces,
replace_mode = badge.replace_mode || full_badge.replace_mode || 'merge';
if ( replaces ) {
var replaced = false;
for(var i=0; i < data.badges.length; i++) {
var b = data.badges[i];
if ( b.type === full_badge.replaces_type ) {
if ( replace_mode === 'merge' ) {
b.type += " ffz-badge-replacement ffz-replacer-ffz-badge-" + (badge_id || full_badge_id);
b.description += ", " + (badge.title || full_badge.title) +
(badge.image ? '" style="background-image: url(' + utils.quote_attr('"' + badge.image + '"') + ')' : '');
} else if ( replace_mode === 'keep_title' ) {
data.badges[i] = {
type: klass,
name: '',
description: b.description + ', ' + desc
};
} else if ( replace_mode === 'title_only' ) {
b.description += ', ' + (badge.title || full_badge.title);
} else {
data.badges[i] = {type: klass, name: '', description: desc};
}
replaced = true;
break;
}
}
if ( replaced )
continue;
}
badges_out.push([(insert_at == -1 ? 1 : -1) * slot, {type: klass, name: "", description: desc}]);
}
badges_out.sort(function(a,b){return a[0] - b[0]});

View file

@ -1,5 +1,6 @@
var FFZ = window.FrankerFaceZ,
utils = require('../utils');
utils = require('../utils'),
constants = require('../constants');
// ---------------------
@ -482,6 +483,11 @@ API.prototype.add_badge = function(badge_id, badge) {
badge.source_ext = this.id,
badge.real_id = exact_id;
if ( badge.replaces && badge.replaces !== true && ! badge.replaces_type ) {
badge.replaces_type = badge.replaces;
badge.replaces = true;
}
if ( ! badge.color )
badge.color = "transparent";

View file

@ -61,7 +61,7 @@ FFZ.channel_metadata = {};
// Version
var VER = FFZ.version_info = {
major: 3, minor: 5, revision: 429,
major: 3, minor: 5, revision: 431,
toString: function() {
return [VER.major, VER.minor, VER.revision].join(".") + (VER.extra || "");
}