1
0
Fork 0
mirror of https://github.com/FrankerFaceZ/FrankerFaceZ.git synced 2025-06-28 23:37:41 +00:00
FrankerFaceZ/script.min.js

2 lines
52 KiB
JavaScript
Raw Normal View History

!function(e){!function t(e,n,i){function s(a,r){if(!n[a]){if(!e[a]){var l="function"==typeof require&&require;if(!r&&l)return l(a,!0);if(o)return o(a,!0);throw new Error("Cannot find module '"+a+"'")}var c=n[a]={exports:{}};e[a][0].call(c.exports,function(t){var n=e[a][1][t];return s(n?n:t)},c,c.exports,t,e,n,i)}return n[a].exports}for(var o="function"==typeof require&&require,a=0;a<i.length;a++)s(i[a]);return s}({1:[function(t){var n=e.FrankerFaceZ,i=t("./constants"),s=t("./utils");n.prototype.setup_badges=function(){this.log("Preparing badge system."),this.badges={},this.log("Creating badge style element.");var e=this._badge_style=document.createElement("style");e.id="ffz-badge-css",document.head.appendChild(e),this.log("Adding legacy donor badges."),this._legacy_add_donors()};var o=function(e){return".badges .ffz-badge-"+e.id+" { background-color: "+e.color+'; background-image: url("'+e.image+'"); '+(e.extra_css||"")+"}"};n.prototype.bttv_badges=function(e){var t=e.sender,n=this.users[t],i=[],s=-1;if(n&&n.badges){for(var o=0;o<e.badges.length;o++){var a=e.badges[o];if("subscriber"==a.type||"turbo"==a.type){s=o;break}}for(var r in n.badges)if(n.badges.hasOwnProperty(r)){var a=n.badges[r],l=this.badges[a.id]||{},c=a.title||l.title,h="",u=BetterTTV.settings.get("alphaTags");a.image&&(h+='background-image: url(\\"'+a.image+'\\"); '),a.color&&!u&&(h+="background-color: "+a.color+"; "),a.extra_css&&(h+=a.extra_css),h&&(c+='" style="'+h),i.push([(-1==s?1:-1)*r,{type:"ffz-badge-"+a.id+(u?" alpha":""),name:"",description:c}])}if(i.sort(function(e,t){return e[0]-t[0]}),-1==s)for(;i.length;)e.badges.push(i.shift()[1]);else for(;i.length;)e.badges.insertAt(s,i.shift()[1])}},n.prototype.render_badge=function(e){var t=e.get("context.model.from"),n=(e.get("context.parentController.content.id"),e.$(".badges")),i=this.users[t];if(i&&i.badges){var s=n.find(".badge").filter(function(){var e=this.title.toLowerCase();return"subscriber"==e||"turbo"==e}).first(),o=[],a=!!s.length;for(var r in i.badges)if(i.badges.hasOwnProperty(r)){var l=i.badges[r],c=this.badges[l.id]||{},h=document.createElement("div");h.className="badge float-left tooltip ffz-badge-"+l.id,h.setAttribute("title",l.title||c.title),l.image&&(h.style.backgroundImage='url("'+l.image+'")'),l.color&&(h.style.backgroundColor=l.color),l.extra_css&&(h.style.cssText+=l.extra_css),o.push([(a?1:-1)*r,h])}if(o.sort(function(e,t){return e[0]-t[0]}),a)for(;o.length;)s.before(o.shift()[1]);else for(;o.length;)n.append(o.shift()[1])}},n.prototype._legacy_add_donors=function(e){this.badges[1]={id:1,title:"FFZ Donor",color:"#755000",image:"//cdn.frankerfacez.com/channel/global/donoricon.png"},s.update_css(this._badge_style,1,o(this.badges[1])),this.badges[0]={id:0,title:"FFZ Developer",color:"#FAAF19",image:"//cdn.frankerfacez.com/channel/global/devicon.png"},s.update_css(this._badge_style,0,o(this.badges[0])),this.users.sirstendec={badges:{0:{id:0}}},jQuery.ajax(i.SERVER+"script/donors.txt",{cache:!1,context:this}).done(function(e){this._legacy_parse_donors(e)}).fail(function(t){return 404!=t.status?(e=(e||0)+1,10>e?this._legacy_add_donors(e):void 0):void 0})},n.prototype._legacy_parse_donors=function(e){var t=0;if(null!=e)for(var n=e.trim().split(/\W+/),i=0;i<n.length;i++){var o=n[i],a=this.users[o]=this.users[o]||{},r=a.badges=a.badges||{};r[0]||(r[0]={id:1},t+=1)}this.log("Added donor badge to "+s.number_commas(t)+" users.")}},{"./constants":3,"./utils":25}],2:[function(){var t=e.FrankerFaceZ;t.chat_commands.massunmod=function(e,t){if(t=t.join(" ").trim(),!t.length)return"You must provide a list of users to unmod.";t=t.split(/\W*,\W*/);var n=this.get_user();if(!n||!n.login==e.id)return"You must be the broadcaster to use massunmod.";if(t.length>50)return"Each user you unmod counts as a single message. To avoid being globally banned, please limit yourself to 50 at a time and wait between uses.";for(var i=t.length;t.length;){var s=t.shift();e.room.tmiRoom.sendMessage("/unmod "+s)}return"Sent unmod command for "+i+" users."},t.chat_commands.massunmod.help="Usage: /ffz massunmod <list, of,
},t.prototype._setting_update=function(n){if(n||(n=e.event),this.log("Storage Event",n),n.key&&"ffz_setting_"===n.key.substr(0,12)){var i=n.key,s=i.substr(12),o=void 0,a=t.settings_info[s];this.log("Updated Setting: "+s);try{o=JSON.parse(n.newValue)}catch(r){this.log('Error loading new value for "'+s+'": '+r),o=a.value||void 0}if(this.settings[s]=o,a.on_update)try{a.on_update.bind(this)(o,!1)}catch(r){this.log('Error running updater for setting "'+s+'": '+r)}}},t.prototype._setting_get=function(e){return this.settings[e]},t.prototype._setting_set=function(e,i){var s=n(e),o=t.settings_info[e],a=JSON.stringify(i);if(this.settings[e]=i,localStorage.setItem(s,a),this.log('Changed Setting "'+e+'" to: '+a),o.on_update)try{o.on_update.bind(this)(i,!0)}catch(r){this.log('Error running updater for setting "'+e+'": '+r)}},t.prototype._setting_del=function(e){var i=n(e),s=t.settings_info[e],o=void 0;if(localStorage.hasOwnProperty(i)&&localStorage.removeItem(i),delete this.settings[e],s&&(o=this.settings[e]=s.hasOwnProperty("value")?s.value:void 0),s.on_update)try{s.on_update.bind(this)(o,!0)}catch(a){this.log('Error running updater for setting "'+e+'": '+a)}}},{}],16:[function(){Array.prototype.equals=function(e){if(!e)return!1;if(this.length!=e.length)return!1;for(var t=0,n=this.length;n>t;t++)if(this[t]instanceof Array&&e[t]instanceof Array){if(!this[t].equals(e[t]))return!1}else if(this[t]!=e[t])return!1;return!0}},{}],17:[function(){var t=e.FrankerFaceZ;t.prototype._ws_open=!1,t.prototype._ws_delay=0,t.ws_commands={},t.ws_on_close=[],t.prototype.ws_create=function(){var e,n=this;this._ws_last_req=0,this._ws_callbacks={},this._ws_pending=this._ws_pending||[];try{e=this._ws_sock=new WebSocket("ws://ffz.stendec.me/")}catch(i){return this._ws_exists=!1,this.log("Error Creating WebSocket: "+i)}this._ws_exists=!0,e.onopen=function(){n._ws_open=!0,n._ws_delay=0,n.log("Socket connected.");var e=n.get_user();e&&n.ws_send("setuser",e.login);for(var t in n.rooms)n.ws_send("sub",t);var i=n._ws_pending;n._ws_pending=[];for(var s=0;s<i.length;s++){var o=i[s];n.ws_send(o[0],o[1],o[2])}},e.onclose=function(){n.log("Socket closed."),n._ws_open=!1;for(var e=0;e<t.ws_on_close.length;e++)try{t.ws_on_close[e].bind(n)()}catch(i){n.log("Error on Socket Close Callback: "+i)}n._ws_delay<3e4&&(n._ws_delay+=5e3),setTimeout(n.ws_create.bind(n),n._ws_delay)},e.onmessage=function(e){var i,s,o=e.data.indexOf(" "),a=e.data.substr(o+1),r=parseInt(e.data.slice(0,o));if(o=a.indexOf(" "),-1===o&&(o=a.length),i=a.slice(0,o),a=a.substr(o+1),a&&(s=JSON.parse(a)),-1===r){var l=t.ws_commands[i];l?l.bind(n)(s):n.log("Invalid command: "+i,s)}else{var c="True"===i,h=n._ws_callbacks[r];n.log("Socket Reply to "+r+" - "+(c?"SUCCESS":"FAIL"),s),h&&(delete n._ws_callbacks[r],h(c,s))}}},t.prototype.ws_send=function(e,t,n,i){if(!this._ws_open){if(i){var s=this._ws_pending=this._ws_pending||[];return s.push([e,t,n]),!0}return!1}var o=++this._ws_last_req;return t=void 0!==t?" "+JSON.stringify(t):"",n&&(this._ws_callbacks[o]=n),this._ws_sock.send(o+" "+e+t),o}},{}],18:[function(t){var n=e.FrankerFaceZ,i=(t("./constants"),("https:"==document.location.protocol?"https:":"http:")+"//sir.stendec.me/ffz_piwik/");n.prototype.setup_piwik=function(){if(void 0!=e._paq)return this.log("Piwik is already present. Disabling analytics."),void(this._tracking=!1);if("false"==localStorage.ffzTracking)return this.log("The user has opted out of tracking. Disabling analytics."),void(this._tracking=!1);this.log("Initializing Piwik."),this._tracking=!0;var t=e._paq=[];t.push(["setSiteId",1]),t.push(["setTrackerUrl",i+"piwik.php"]),this.has_bttv&&t.push(["setCustomVariable","3","BetterTTV",BetterTTV.info.versionString()]);var n=this.get_user(),s=this;n?(t.push(["setCustomVariable","1","Partnered",n.is_partner?"Yes":"No"]),t.push(["setCustomVariable","2","User Type",n.is_staff?"Staff":n.is_admin?"Admin":"User"]),t.push(["setUserId",n.login]),Twitch.api.get("channels/"+n.login).done(function(e){e.logo&&s.track("setCustomVariable","4","Avatar",e.logo)}).always(function(){s.track_page()})):this.track_page()