2015-01-15 16:42:21 -05:00
|
|
|
var FFZ = window.FrankerFaceZ;
|
|
|
|
|
|
|
|
|
2015-10-27 21:22:54 -04:00
|
|
|
// --------------------
|
|
|
|
// 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."
|
|
|
|
};
|
|
|
|
|
|
|
|
|
2015-01-15 16:42:21 -05:00
|
|
|
// --------------------
|
|
|
|
// Initialization
|
|
|
|
// --------------------
|
|
|
|
|
|
|
|
FFZ.prototype.setup_viewers = function() {
|
|
|
|
this.log("Hooking the Ember Viewers controller.");
|
|
|
|
var Viewers = App.__container__.resolve('controller:viewers');
|
2015-12-12 13:28:35 -05:00
|
|
|
if ( Viewers )
|
|
|
|
this._modify_viewers(Viewers);
|
|
|
|
|
|
|
|
/* Disable for now because Twitch reverted this change
|
|
|
|
this.log("Hooking the Ember Viewers view.");
|
|
|
|
var ViewerView = App.__container__.resolve('view:viewers');
|
|
|
|
if ( ViewerView )
|
|
|
|
this._modify_viewer_view(ViewerView);*/
|
2015-01-15 16:42:21 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2015-12-12 13:28:35 -05:00
|
|
|
/*FFZ.prototype._modify_viewer_view = function(view) {
|
|
|
|
view.reopen({
|
|
|
|
setListDimensions: function(e) {
|
|
|
|
// Don't set the stupid scroll thing. Don't use the stupid height thing.
|
|
|
|
this.$(".js-chatters-container").width(e.width).height(e.height);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}*/
|
|
|
|
|
|
|
|
|
2015-01-15 16:42:21 -05:00
|
|
|
FFZ.prototype._modify_viewers = function(controller) {
|
|
|
|
var f = this;
|
|
|
|
|
|
|
|
controller.reopen({
|
|
|
|
lines: function() {
|
2015-02-10 01:34:23 -05:00
|
|
|
var viewers = this._super();
|
2015-10-27 21:22:54 -04:00
|
|
|
if ( ! f.settings.sort_viewers )
|
|
|
|
return viewers;
|
|
|
|
|
2015-02-10 01:34:23 -05:00
|
|
|
try {
|
|
|
|
var categories = [],
|
|
|
|
data = {},
|
|
|
|
last_category = null;
|
|
|
|
|
|
|
|
// Get the broadcaster name.
|
|
|
|
var Channel = App.__container__.lookup('controller:channel'),
|
|
|
|
room_id = this.get('parentController.model.id'),
|
|
|
|
broadcaster = Channel && Channel.get('id');
|
|
|
|
|
|
|
|
// We can get capitalization for the broadcaster from the channel.
|
|
|
|
if ( broadcaster ) {
|
|
|
|
var display_name = Channel.get('display_name');
|
|
|
|
if ( display_name )
|
|
|
|
FFZ.capitalization[broadcaster] = [display_name, Date.now()];
|
|
|
|
}
|
|
|
|
|
|
|
|
// If the current room isn't the channel's chat, then we shouldn't
|
|
|
|
// display them as the broadcaster.
|
2015-12-12 13:28:35 -05:00
|
|
|
if ( room_id !== broadcaster )
|
2015-02-10 01:34:23 -05:00
|
|
|
broadcaster = null;
|
|
|
|
|
|
|
|
// Now, break the viewer array down into something we can use.
|
|
|
|
for(var i=0; i < viewers.length; i++) {
|
|
|
|
var entry = viewers[i];
|
|
|
|
if ( entry.category ) {
|
|
|
|
last_category = entry.category;
|
|
|
|
categories.push(last_category);
|
|
|
|
data[last_category] = [];
|
|
|
|
|
|
|
|
} else {
|
|
|
|
var viewer = entry.chatter.toLowerCase();
|
|
|
|
if ( ! viewer )
|
|
|
|
continue;
|
|
|
|
|
|
|
|
// If the viewer is the broadcaster, give them their own
|
|
|
|
// group. Don't put them with normal mods!
|
|
|
|
if ( viewer == broadcaster ) {
|
|
|
|
categories.unshift("Broadcaster");
|
|
|
|
data["Broadcaster"] = [viewer];
|
|
|
|
|
|
|
|
} else if ( data.hasOwnProperty(last_category) )
|
|
|
|
data[last_category].push(viewer);
|
|
|
|
}
|
|
|
|
}
|
2015-01-15 16:42:21 -05:00
|
|
|
|
2015-02-10 01:34:23 -05:00
|
|
|
// Now, rebuild the viewer list. However, we're going to actually
|
|
|
|
// sort it this time.
|
|
|
|
viewers = [];
|
|
|
|
for(var i=0; i < categories.length; i++) {
|
|
|
|
var category = categories[i],
|
|
|
|
chatters = data[category];
|
|
|
|
|
|
|
|
if ( ! chatters || ! chatters.length )
|
2015-01-15 16:42:21 -05:00
|
|
|
continue;
|
|
|
|
|
2015-02-10 01:34:23 -05:00
|
|
|
viewers.push({category: category});
|
|
|
|
viewers.push({chatter: ""});
|
2015-01-15 16:42:21 -05:00
|
|
|
|
2015-02-10 01:34:23 -05:00
|
|
|
// Push the chatters, capitalizing them as we go.
|
|
|
|
chatters.sort();
|
|
|
|
while(chatters.length) {
|
|
|
|
var viewer = chatters.shift();
|
|
|
|
viewer = FFZ.get_capitalization(viewer);
|
|
|
|
viewers.push({chatter: viewer});
|
|
|
|
}
|
2015-01-15 16:42:21 -05:00
|
|
|
}
|
|
|
|
|
2015-02-10 01:34:23 -05:00
|
|
|
} catch(err) {
|
|
|
|
f.error("ViewersController lines: " + err);
|
2015-01-15 16:42:21 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
return viewers;
|
|
|
|
}.property("content.chatters")
|
|
|
|
});
|
|
|
|
}
|