BetterDiscordApp-rauenzi/js/main.min.js

52 lines
61 KiB
JavaScript
Raw Normal View History

2017-12-22 02:02:35 +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/",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 c=d;c.setItem=function(u,h){c[u]=h,this.save()},c.getItem=function(u){return c[u]||null},c.save=function(){s.writeFileSync(`${o}/localStorage.json`,JSON.stringify(this),null,4)};var l=new Proxy(c,{set:function(u,h,g){c[h]=g,c.save()},get:function(u,h){return c[h]||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>
2017-12-22 02:02:35 +01:00
</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 d=$(`<div class="errors">`);for(let c of o){let l=$(`<div class="error">
<div class="table-column column-name">${c.name?c.name:c.file}</div>
<div class="table-column column-reason">${c.reason}</div>
<div class="table-column column-error"><a class="error-link" href="">${c.error?c.error.message:""}</a></div>
</div>`);d.append(l),c.error&&l.find("a").on("click",u=>{u.preventDefault(),utils.err(`Error details for ${c.name?c.name:c.file}.`,c.error)})}return d}if(bdpluginErrors&&bdthemeErrors&&(bdpluginErrors.length||bdthemeErrors.length)){let r=$(`<div class="bd-modal-wrapper theme-dark">
2017-11-04 16:04:50 +01:00
<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>
2017-12-22 02:02:35 +01:00
</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 u=document.querySelector(".chat form, #friends, .noChannel-2EQ0a9, .activityFeed-HeiGwL");l.style.setProperty("left",u?u.getBoundingClientRect().left+"px":"0px"),l.style.setProperty("width",u?u.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:d=3e3}=r;let c=document.createElement("div");c.classList.add("bd-toast"),n&&c.classList.add("toast-"+n),n&&o&&c.classList.add("icon"),c.innerText=s,document.querySelector(".bd-toasts").appendChild(c),setTimeout(()=>{c.classList.add("closing"),setTimeout(()=>{c.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,r=this,n=0;n<s.addedNodes.length;++n)if(o=s.addedNodes.item(n),o){var d=r.getNodes(o);for(var c in d)if(d.hasOwnProperty(c)){var l=d[c].parentElement;l&&l.classList.contains("edited")?r.injectEmote(l):r.injectEmote(d[c])}}},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 d=o.contents();d.each(function(c){if(void 0!=d[c]){var l=d[c].nodeValue;if(null!=l&&8!=d[c].nodeType){d.splice(c,1);var u=l.split(/([^\s]+)([\s]|$)/g).filter(function(E){return E}),h=0,g=!1,b=null;if(u.forEach(function(E,k,C){-1<E.indexOf("[!s]")&&(E=E.replace("[!s]",""),o.data("spoilered",!1),o.addClass("spoiler"));var N="",T=!1,D=E;if(-1<E.indexOf(":")){var j=E.split(":");""!=j[0]&&""!=j[1]&&(-1<["flip","spin","pulse","spin2","spin3","1spin","2spin","3spin","tr","bl","br","shake","shake2","shake3","flap"].indexOf(j[1])&&(D=j[0],N=settingsCookie["bda-es-8"]?"emote"+j[1]:""),"bttv"==j[1]&&(D=j[0],T=!0))}if(-1==$.inArray(D,bemotes)){if(settingsCookie["bda-es-7"]&&emotesTwitch.hasOwnProperty(D)&&4<=D.length){null!=b&&(d.splice(c+h++,0,document.createTextNode(b)),b=null);let P=twitchEmoteUrlStart+emotesTwitch[D].id+twitchEmoteUrlEnd;return d.splice(c+h++,0,n.createEmoteElement(D,P,N)),void(g=!0)}if(settingsCookie["bda-es-7"]&&subEmotesTwitch.hasOwnProperty(D)&&4<=D.length){null!=b&&(d.splice(c+h++,0,document.createTextNode(b)),b=null);let P=twitchEmoteUrlStart+subEmotesTwitch[D]+twitchEmoteUrlEnd;return d.splice(c+h++,0,n.createEmoteElement(D,P,N)),void(g=!0)}if(settingsCookie["bda-es-2"]&&emotesBTTV.hasOwnProperty(D)&&4<=D.length){null!=b&&(d.splice(c+h++,0,document.createTextNode(b)),b=null);let P=emotesBTTV[D];return d.splice(c+h++,0,n.createEmoteElement(D,P,N)),void(g=!0)}if(settingsCookie["bda-es-1"]&&(!T||!emotesBTTV2.hasOwnProperty(D))&&emotesFfz.hasOwnProperty(D)&&4<=D.length){null!=b&&(d.splice(c+h++,0,document.createTextNode(b)),b=null);let P=ffzEmoteUrlStart+emotesFfz[D]+ffzEmoteUrlEnd;return d.splice(c+h++,0,n.createEmoteElement(D,P,N)),void(g=!0)}if(settingsCookie["bda-es-2"]&&emotesBTTV2.hasOwnProperty(D)&&4<=D.length){null!=b&&(d.splice(c+h++,0,