BetterDiscordApp-rauenzi/js/main.min.js

52 lines
60 KiB
JavaScript
Raw Normal View History

2017-11-17 15:46:41 +01:00
(function(){let s=window.require("fs"),r=window.require("process"),n=r.platform,o=("win32"===n?r.env.APPDATA:"darwin"===n?r.env.HOME+"/Library/Preferences":process.env.HOME+"/.config")+"/BetterDiscord/",c={};if(s.existsSync(`${o}localStorage.json`))try{c=JSON.parse(s.readFileSync(`${o}localStorage.json`))}catch(m){console.log(m)}else if(s.existsSync("localStorage.json"))try{c=JSON.parse(s.readFileSync("localStorage.json"))}catch(m){console.log(m)}var d=c;d.setItem=function(m,u){d[m]=u,this.save()},d.getItem=function(m){return d[m]||null},d.save=function(){s.writeFileSync(`${o}/localStorage.json`,JSON.stringify(this),null,4)};var l=new Proxy(d,{set:function(m,u,h){d[u]=h,d.save()},get:function(m,u){return d[u]||null}});window.localStorage=l})(),(()=>{let s=document.createElement("div");s.className="bd-loaderv2",s.title="BetterDiscord is loading...",document.body.appendChild(s)})(),window.bdStorage={},window.bdStorage.get=function(s){return betterDiscordIPC.sendSync("synchronous-message",{arg:"storage",cmd:"get","var":s})},window.bdStorage.set=function(s,r){betterDiscordIPC.sendSync("synchronous-message",{arg:"storage",cmd:"set","var":s,data:r})},window.bdPluginStorage={},window.bdPluginStorage.get=function(s,r){return betterDiscordIPC.sendSync("synchronous-message",{arg:"pluginstorage",cmd:"get",pn:s,"var":r})},window.bdPluginStorage.set=function(s,r,n){betterDiscordIPC.sendSync("synchronous-message",{arg:"pluginstorage",cmd:"set",pn:s,"var":r,data:n})},betterDiscordIPC.on("asynchronous-reply",(s,r)=>{console.log(s),console.log(r)});var settingsPanel,emoteModule,utils,quickEmoteMenu,voiceMode,pluginModule,themeModule,dMode,jsVersion=1.792,supportedVersion="0.2.81",mainObserver,twitchEmoteUrlStart="https://static-cdn.jtvnw.net/emoticons/v1/",twitchEmoteUrlEnd="/1.0",ffzEmoteUrlStart="https://cdn.frankerfacez.com/emoticon/",ffzEmoteUrlEnd="/1",bttvEmoteUrlStart="https://cdn.betterttv.net/emote/",bttvEmoteUrlEnd="/1x",mainCore,settings={"Startup Error Modal":{id:"bda-gs-9",info:"Show a modal with plugin/theme errors on startup.",implemented:!0,hidden:!1,cat:"core"},"Show Toasts":{id:"bda-gs-10",info:"Shows a small notification for starting and stopping plugins & themes.",implemented:!0,hidden:!1,cat:"core"},"Save logs locally":{id:"bda-gs-0",info:"Saves chat logs locally",implemented:!1,hidden:!1,cat:"core"},"Public Servers":{id:"bda-gs-1",info:"Display public servers button",implemented:!1,hidden:!1,cat:"core"},"Minimal Mode":{id:"bda-gs-2",info:"Hide elements and reduce the size of elements.",implemented:!0,hidden:!1,cat:"core"},"Voice Mode":{id:"bda-gs-4",info:"Only show voice chat",implemented:!0,hidden:!1,cat:"core"},"Hide Channels":{id:"bda-gs-3",info:"Hide channels in minimal mode",implemented:!0,hidden:!1,cat:"core"},"Dark Mode":{id:"bda-gs-5",info:"Make certain elements dark by default(wip)",implemented:!0,hidden:!1,cat:"core"},"Override Default Emotes":{id:"bda-es-5",info:"Override default emotes",implemented:!1,hidden:!1,cat:"core"},"Voice Disconnect":{id:"bda-dc-0",info:"Disconnect from voice server when closing Discord",implemented:!0,hidden:!1,cat:"core"},"Custom css live update":{id:"bda-css-0",info:"",implemented:!0,hidden:!0,cat:"core"},"Custom css auto udpate":{id:"bda-css-1",info:"",implemented:!0,hidden:!0,cat:"core"},"24 Hour Timestamps":{id:"bda-gs-6",info:"Replace 12hr timestamps with proper ones",implemented:!0,hidden:!1,cat:"core"},"Coloured Text":{id:"bda-gs-7",info:"Make text colour the same as role colour",implemented:!0,hidden:!1,cat:"core"},"BetterDiscord Blue":{id:"bda-gs-b",info:"Replace Discord blue with BD Blue",implemented:!0,hidden:!1,cat:"core"},"Developer Mode":{id:"bda-gs-8",info:"Developer Mode",implemented:!0,hidden:!1,cat:"core"},"Twitch Emotes":{id:"bda-es-7",info:"Show Twitch emotes",implemented:!0,hidden:!1,cat:"emote"},"FrankerFaceZ Emotes":{id:"bda-es-1",info:"Show FrankerFaceZ Emotes",implemented:!0,hidden:!1,cat:"emote"},"BetterTTV Emotes":{id:"bda-es-2",info:"Show BetterTTV Emotes",implemented:!0,hidden:!1,cat:"emote"},"Emote Menu":{id:"bda-es-0",info:"Show Twitch/Favourite
2017-11-04 16:04:50 +01:00
<div class="bd-backdrop backdrop-2ohBEd"></div>
<div class="bd-modal modal-2LIEKY">
<div class="bd-modal-inner inner-1_1f7b">
<div class="header header-3sp3cE">
<div class="title">${s}</div>
</div>
<div class="bd-modal-body">
<div class="scroller-wrap fade">
<div class="scroller">
${r}
</div>
</div>
</div>
<div class="footer footer-1PYmcw">
<button type="button">Okay</button>
</div>
</div>
</div>
</div>`);n.find(".footer button").on("click",()=>{n.addClass("closing"),setTimeout(()=>{n.remove()},300)}),n.find(".bd-backdrop").on("click",()=>{n.addClass("closing"),setTimeout(()=>{n.remove()},300)}),n.appendTo("#app-mount")},Core.prototype.showStartupErrors=function(){function s(o){let c=$(`<div class="errors">`);for(let d of o){let l=$(`<div class="error">
<div class="table-column column-name">${d.name?d.name:d.file}</div>
<div class="table-column column-reason">${d.reason}</div>
<div class="table-column column-error"><a class="error-link" href="">${d.error?d.error.message:""}</a></div>
</div>`);c.append(l),d.error&&l.find("a").on("click",m=>{m.preventDefault(),utils.err(`Error details for ${d.name?d.name:d.file}.`,d.error)})}return c}if(bdpluginErrors&&bdthemeErrors&&(bdpluginErrors.length||bdthemeErrors.length)){let r=$(`<div class="bd-modal-wrapper theme-dark">
<div class="bd-backdrop backdrop-2ohBEd"></div>
<div class="bd-modal bd-startup-modal modal-2LIEKY">
<div class="bd-modal-inner inner-1_1f7b">
<div class="header header-3sp3cE"><div class="title">Startup Errors</div></div>
<div class="bd-modal-body">
<div class="tab-bar-container">
<div class="tab-bar TOP">
<div class="tab-bar-item">Plugins</div>
<div class="tab-bar-item">Themes</div>
</div>
</div>
<div class="table-header">
<div class="table-column column-name">Name</div>
<div class="table-column column-reason">Reason</div>
<div class="table-column column-error">Error</div>
</div>
<div class="scroller-wrap fade">
<div class="scroller">
</div>
</div>
</div>
<div class="footer footer-1PYmcw">
<button type="button">Okay</button>
</div>
</div>
</div>
</div>`),n=[s(bdpluginErrors),s(bdthemeErrors)];r.find(".tab-bar-item").on("click",o=>{o.preventDefault(),r.find(".tab-bar-item").removeClass("selected"),$(o.target).addClass("selected"),r.find(".scroller").empty().append(n[$(o.target).index()])}),r.find(".footer button").on("click",()=>{r.addClass("closing"),setTimeout(()=>{r.remove()},300)}),r.find(".bd-backdrop").on("click",()=>{r.addClass("closing"),setTimeout(()=>{r.remove()},300)}),r.appendTo("#app-mount"),r.find(".tab-bar-item")[0].click()}},Core.prototype.showToast=function(s,r={}){if(!document.querySelector(".bd-toasts")){let l=document.createElement("div");l.classList.add("bd-toasts");let m=document.querySelector(".chat form, #friends, .noChannel-2EQ0a9, .activityFeed-HeiGwL");l.style.setProperty("left",m?m.getBoundingClientRect().left+"px":"0px"),l.style.setProperty("width",m?m.offsetWidth+"px":"100%"),l.style.setProperty("bottom",(document.querySelector(".chat form")?document.querySelector(".chat form").offsetHeight:80)+"px"),document.querySelector(".app").appendChild(l)}const{type:n="",icon:o=!0,timeout:c=3e3}=r;let d=document.createElement("div");d.classList.add("bd-toast"),n&&d.classList.add("toast-"+n),n&&o&&d.classList.add("icon"),d.innerText=s,document.querySelector(".bd-toasts").appendChild(d),setTimeout(()=>{d.classList.add("closing"),setTimeout(()=>{d.remove(),document.querySelectorAll(".bd-toasts .bd-toast").length||document.querySelector(".bd-toasts").remove()},300)},c)};var emotesFfz={},emotesBTTV={},emotesBTTV2={},emotesTwitch={emote:{id:0}},subEmotesTwitch={};function EmoteModule(){}EmoteModule.prototype.init=function(){},EmoteModule.prototype.getBlacklist=function(){$.getJSON("https://cdn.rawgit.com/Jiiks/betterDiscordApp/"+_hash+"/data/emotefilter.json",function(s){bemotes=s.blacklist})},EmoteModule.prototype.obsCallback=function(s){for(var o,r=this,n=0;n<s.addedNodes.length;++n)if(o=s.addedNodes.item(n),o){var c=r.getNodes(o);for(var d in c)if(c.hasOwnProperty(d)){var l=c[d].parentElement;l&&l.classList.contains("edited")?r.injectEmote(l):r.injectEmote(c[d])}}},EmoteModule.prototype.getNodes=function(s){for(var r,n=[],o=document.createTreeWalker(s,NodeFilter.SHOW_TEXT,null,!1);r=o.nextNode();)n.push(r);return n};var bemotes=[];EmoteModule.prototype.injectEmote=function(s){function r(){var c=o.contents();c.each(function(d){if(void 0!=c[d]){var l=c[d].nodeValue;if(null!=l&&8!=c[d].nodeType){c.splice(d,1);var m=l.split(/([^\s]+)([\s]|$)/g).filter(function(y){return y}),u=0,h=!1,g=null;if(m.forEach(function(y,E,k){-1<y.indexOf("[!s]")&&(y=y.replace("[!s]",""),o.data("spoilered",!1),o.addClass("spoiler"));var S="",N=!1,T=y;if(-1<y.indexOf(":")){var D=y.split(":");""!=D[0]&&""!=D[1]&&(-1<["flip","spin","pulse","spin2","spin3","1spin","2spin","3spin","tr","bl","br","shake","shake2","shake3","flap"].indexOf(D[1])&&(T=D[0],S=settingsCookie["bda-es-8"]?"emote"+D[1]:""),"bttv"==D[1]&&(T=D[0],N=!0))}if(-1==$.inArray(T,bemotes)){if(settingsCookie["bda-es-7"]&&emotesTwitch.hasOwnProperty(T)&&4<=T.length){null!=g&&(c.splice(d+u++,0,document.createTextNode(g)),g=null);let j=twitchEmoteUrlStart+emotesTwitch[T].id+twitchEmoteUrlEnd;return c.splice(d+u++,0,n.createEmoteElement(T,j,S)),void(h=!0)}if(settingsCookie["bda-es-7"]&&subEmotesTwitch.hasOwnProperty(T)&&4<=T.length){null!=g&&(c.splice(d+u++,0,document.createTextNode(g)),g=null);let j=twitchEmoteUrlStart+subEmotesTwitch[T]+twitchEmoteUrlEnd;return c.splice(d+u++,0,n.createEmoteElement(T,j,S)),void(h=!0)}if(settingsCookie["bda-es-2"]&&emotesBTTV.hasOwnProperty(T)&&4<=T.length){null!=g&&(c.splice(d+u++,0,document.createTextNode(g)),g=null);let j=emotesBTTV[T];return c.splice(d+u++,0,n.createEmoteElement(T,j,S)),void(h=!0)}if(settingsCookie["bda-es-1"]&&(!N||!emotesBTTV2.hasOwnProperty(T))&&emotesFfz.hasOwnProperty(T)&&4<=T.length){null!=g&&(c.splice(d+u++,0,document.createTextNode(g)),g=null);let j=ffzEmoteUrlStart+emotesFfz[T]+ffzEmoteUrlEnd;return c.splice(d+u++,0,n.createEmoteElement(T,j,S)),void(h=!0)}if(settingsCookie["bda-es-2"]&&emotesBTTV2.hasOwnProperty(T)&&4<=T.length){null!=g&&(c.splice(d+u++,0,