mirror of
https://github.com/FrankerFaceZ/FrankerFaceZ.git
synced 2025-06-27 12:55:55 +00:00
105 lines
No EOL
2.6 KiB
JavaScript
105 lines
No EOL
2.6 KiB
JavaScript
var FFZ = window.FrankerFaceZ,
|
|
utils = require('../utils'),
|
|
|
|
VIEWER_CATEGORIES = [
|
|
['staff', 'Staff'],
|
|
['admins', 'Admins'],
|
|
['global_mods', 'Global Moderators'],
|
|
['moderators', 'Moderators'],
|
|
['viewers', 'Viewers']
|
|
];
|
|
|
|
|
|
// --------------------
|
|
// Settings
|
|
// --------------------
|
|
|
|
FFZ.settings_info.sort_viewers = {
|
|
type: "boolean",
|
|
value: true,
|
|
|
|
category: "Chat Appearance",
|
|
name: "Sort Viewer List",
|
|
help: "Make sure the viewer list is alphabetically sorted and place the Broadcaster in their own category."
|
|
};
|
|
|
|
|
|
// --------------------
|
|
// Initialization
|
|
// --------------------
|
|
|
|
FFZ.prototype.setup_viewers = function() {
|
|
this.update_views('component:chat/twitch-chat-viewers', this.modify_viewer_list);
|
|
}
|
|
|
|
|
|
FFZ.prototype.modify_viewer_list = function(component) {
|
|
var f = this;
|
|
|
|
utils.ember_reopen_view(component, {
|
|
lines: function() {
|
|
var viewers = this._super();
|
|
if ( ! f.settings.sort_viewers )
|
|
return this._super();
|
|
|
|
try {
|
|
var viewers = [],
|
|
has_broadcaster = false,
|
|
raw_viewers = this.get('model.chatters') || {};
|
|
|
|
// Get the broadcaster name.
|
|
var Channel = utils.ember_lookup('controller:channel'),
|
|
broadcaster = room_id = this.get('model.id');
|
|
|
|
// We can get capitalization for the broadcaster from the channel.
|
|
if ( Channel && Channel.get('channelModel.id') === room_id ) {
|
|
var display_name = Channel.get('channelModel.displayName');
|
|
if ( display_name && display_name !== 'jtv' )
|
|
FFZ.capitalization[broadcaster] = [display_name, Date.now()];
|
|
}
|
|
|
|
// Iterate over everything~!
|
|
for(var i=0; i < VIEWER_CATEGORIES.length; i++) {
|
|
var data = raw_viewers[VIEWER_CATEGORIES[i][0]],
|
|
label = VIEWER_CATEGORIES[i][1],
|
|
first_user = true;
|
|
|
|
if ( ! data || ! data.length )
|
|
continue;
|
|
|
|
for(var x=0; x < data.length; x++) {
|
|
if ( data[x] === broadcaster ) {
|
|
has_broadcaster = true;
|
|
continue;
|
|
}
|
|
|
|
if ( first_user ) {
|
|
viewers.push({category: i18n(label)});
|
|
viewers.push({chatter: ""});
|
|
first_user = false;
|
|
}
|
|
|
|
var display_name = FFZ.get_capitalization(data[x]);
|
|
if ( display_name.trim().toLowerCase() !== data[x] )
|
|
display_name = data[x];
|
|
|
|
viewers.push({chatter: display_name});
|
|
}
|
|
}
|
|
|
|
if ( has_broadcaster )
|
|
viewers.splice(0, 0,
|
|
{category: i18n("Broadcaster")},
|
|
{chatter: ""},
|
|
{chatter: FFZ.get_capitalization(broadcaster)});
|
|
|
|
return viewers;
|
|
|
|
} catch(err) {
|
|
f.error("ViewersController lines: " + err);
|
|
return this._super();
|
|
}
|
|
|
|
}.property("model.chatters")
|
|
});
|
|
} |