BetterDiscordApp-rauenzi/js/main.min.js

52 lines
65 KiB
JavaScript
Raw Normal View History

2017-12-24 07:51:24 +01:00
(function(){let s=window.require("fs"),n=window.require("process"),r=n.platform,o=("win32"===r?n.env.APPDATA:"darwin"===r?n.env.HOME+"/Library/Preferences":process.env.HOME+"/.config")+"/BetterDiscord/",d={};if(s.existsSync(`${o}localStorage.json`))try{d=JSON.parse(s.readFileSync(`${o}localStorage.json`))}catch(u){console.log(u)}else if(s.existsSync("localStorage.json"))try{d=JSON.parse(s.readFileSync("localStorage.json"))}catch(u){console.log(u)}var l=d;l.setItem=function(u,h){l[u]=h,this.save()},l.getItem=function(u){return l[u]||null},l.save=function(){s.writeFileSync(`${o}/localStorage.json`,JSON.stringify(this),null,4)};var c=new Proxy(l,{set:function(u,h,g){l[h]=g,l.save()},get:function(u,h){return l[h]||null}});window.localStorage=c})(),(()=>{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,n){betterDiscordIPC.sendSync("synchronous-message",{arg:"storage",cmd:"set","var":s,data:n})},window.bdPluginStorage={},window.bdPluginStorage.get=function(s,n){return betterDiscordIPC.sendSync("synchronous-message",{arg:"pluginstorage",cmd:"get",pn:s,"var":n})},window.bdPluginStorage.set=function(s,n,r){betterDiscordIPC.sendSync("synchronous-message",{arg:"pluginstorage",cmd:"set",pn:s,"var":n,data:r})},betterDiscordIPC.on("asynchronous-reply",(s,n)=>{console.log(s),console.log(n)});var settingsPanel,emoteModule,utils,quickEmoteMenu,voiceMode,pluginModule,themeModule,dMode,jsVersion=1.792,supportedVersion="0.2.81",bbdVersion="0.0.1",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={"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"},"Startup Error Modal":{id:"fork-ps-1",info:"Show a modal with plugin/theme errors on startup",implemented:!0,hidden:!1,cat:"fork"},"Show Toasts":{id:"fork-ps-2",info:"Shows a small notification for starting and stopping plugins & themes",implemented:!0,hidden:!1,cat:"fork"},"Scroll To Settings":{id:"fork-ps-3",info:"Auto-scrolls to plugin settins when opened (only if out of view)",implemented:!0,hidden:!1,cat:"fork"},"Emote Modifier Tooltip":{id:"fork-es-1",info:"Shows the emote modifier in the tooltip.",implemented:!0,hidden:!1,cat:"fork"},"Animate On Hover":{id:"fork-es-2",info:"Only animate the emote modif
<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">
${n}
</div>
</div>
</div>
<div class="footer footer-1PYmcw">
<button type="button">Okay</button>
</div>
</div>
</div>
2017-12-24 07:51:24 +01:00
</div>`);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")},Core.prototype.showStartupErrors=function(){function s(o){let d=$(`<div class="errors">`);for(let l of o){let c=$(`<div class="error">
<div class="table-column column-name">${l.name?l.name:l.file}</div>
<div class="table-column column-reason">${l.reason}</div>
<div class="table-column column-error"><a class="error-link" href="">${l.error?l.error.message:""}</a></div>
</div>`);d.append(c),l.error&&c.find("a").on("click",u=>{u.preventDefault(),utils.err(`Error details for ${l.name?l.name:l.file}.`,l.error)})}return d}if(bdpluginErrors&&bdthemeErrors&&(bdpluginErrors.length||bdthemeErrors.length)){let n=$(`<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">
2017-11-04 16:04:50 +01:00
</div>
</div>
</div>
<div class="footer footer-1PYmcw">
<button type="button">Okay</button>
</div>
</div>
</div>
2017-12-24 07:51:24 +01:00
</div>`),r=[s(bdpluginErrors),s(bdthemeErrors)];n.find(".tab-bar-item").on("click",o=>{o.preventDefault(),n.find(".tab-bar-item").removeClass("selected"),$(o.target).addClass("selected"),n.find(".scroller").empty().append(r[$(o.target).index()])}),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"),n.find(".tab-bar-item")[0].click()}},Core.prototype.showToast=function(s,n={}){if(!document.querySelector(".bd-toasts")){let c=document.createElement("div");c.classList.add("bd-toasts");let u=document.querySelector(".chat form, #friends, .noChannel-2EQ0a9, .activityFeed-HeiGwL");c.style.setProperty("left",u?u.getBoundingClientRect().left+"px":"0px"),c.style.setProperty("width",u?u.offsetWidth+"px":"100%"),c.style.setProperty("bottom",(document.querySelector(".chat form")?document.querySelector(".chat form").offsetHeight:80)+"px"),document.querySelector(".app").appendChild(c)}const{type:r="",icon:o=!0,timeout:d=3e3}=n;let l=document.createElement("div");l.classList.add("bd-toast"),r&&l.classList.add("toast-"+r),r&&o&&l.classList.add("icon"),l.innerText=s,document.querySelector(".bd-toasts").appendChild(l),setTimeout(()=>{l.classList.add("closing"),setTimeout(()=>{l.remove(),document.querySelectorAll(".bd-toasts .bd-toast").length||document.querySelector(".bd-toasts").remove()},300)},d)};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,n=this,r=0;r<s.addedNodes.length;++r)if(o=s.addedNodes.item(r),o){var d=n.getNodes(o);for(var l in d)if(d.hasOwnProperty(l)){var c=d[l].parentElement;c&&c.classList.contains("edited")?n.injectEmote(c):n.injectEmote(d[l])}}},EmoteModule.prototype.getNodes=function(s){for(var n,r=[],o=document.createTreeWalker(s,NodeFilter.SHOW_TEXT,null,!1);n=o.nextNode();)r.push(n);return r};var bemotes=[];EmoteModule.prototype.injectEmote=function(s){function n(){var d=o.contents();d.each(function(l){if(void 0!=d[l]){var c=d[l].nodeValue;if(null!=c&&8!=d[l].nodeType){d.splice(l,1);var u=c.split(/([^\s]+)([\s]|$)/g).filter(function(k){return k}),h=0,g=!1,f=null;if(u.forEach(function(k,E,C){-1<k.indexOf("[!s]")&&(k=k.replace("[!s]",""),o.data("spoilered",!1),o.addClass("spoiler"));var N="",T=!1,D=k;if(-1<k.indexOf(":")){var P=k.split(":");""!=P[0]&&""!=P[1]&&(-1<["flip","spin","pulse","spin2","spin3","1spin","2spin","3spin","tr","bl","br","shake","shake2","shake3","flap"].indexOf(P[1])&&(D=P[0],N=settingsCookie["bda-es-8"]?"emote"+P[1]:""),"bttv"==P[1]&&(D=P[0],T=!0))}if(-1==$.inArray(D,bemotes)){if(settingsCookie["bda-es-7"]&&emotesTwitch.hasOwnProperty(D)&&4<=D.length){null!=f&&(d.splice(l+h++,0,document.createTextNode(f)),f=null);let j=twitchEmoteUrlStart+emotesTwitch[D].id+twitchEmoteUrlEnd;return d.splice(l+h++,0,r.createEmoteElement(D,j,N)),void(g=!0)}if(settingsCookie["bda-es-7"]&&subEmotesTwitch.hasOwnProperty(D)&&4<=D.length){null!=f&&(d.splice(l+h++,0,document.createTextNode(f)),f=null);let j=twitchEmoteUrlStart+subEmotesTwitch[D]+twitchEmoteUrlEnd;return d.splice(l+h++,0,r.createEmoteElement(D,j,N)),void(g=!0)}if(settingsCookie["bda-es-2"]&&emotesBTTV.hasOwnProperty(D)&&4<=D.length){null!=f&&(d.splice(l+h++,0,document.createTextNode(f)),f=null);let j=emotesBTTV[D];return d.splice(l+h++,0,r.createEmoteElement(D,j,N)),void(g=!0)}if(settingsCookie["bda-es-1"]&&(!T||!emotesBTTV2.hasOwnProperty(D))&&emotesFfz.hasOwnProperty(D)&&4<=D.length){null!=f&&(d.splice(l+h++,0,document.createTextNode(f)),f=null);let j=ffzEmoteUrlStart+emotesFfz[D]+ffzEmoteUrlEnd;return d.splice(l+h++,0,r.createEmoteElement(D,j,N)),void(g=!0)}if(settingsCookie["bda-es-2"]&&emotesBTTV2.hasOwnProperty(D)&&4<=D.length){null!=f&&(d