BetterDiscordApp-rauenzi/js/main.min.js

52 lines
86 KiB
JavaScript
Raw Normal View History

(function(){let t=window.require("fs"),a=window.require("process"),o=a.platform,l=("win32"===o?a.env.APPDATA:"darwin"===o?a.env.HOME+"/Library/Preferences":process.env.HOME+"/.config")+"/BetterDiscord/",d="localStorage.json",u={};if(t.existsSync(`${l}${d}`))try{u=JSON.parse(t.readFileSync(`${l}${d}`))}catch(b){console.log(b)}else if(t.existsSync(d))try{u=JSON.parse(t.readFileSync(d))}catch(b){console.log(b)}var h=u;h.setItem=function(b,f){h[b]=f,this.save()},h.getItem=function(b){return h[b]||null},h.save=function(){t.writeFileSync(`${l}${d}`,JSON.stringify(this),null,4)};var g=new Proxy(h,{set:function(b,f,y){h[f]=y,h.save()},get:function(b,f){return h[f]||null}});window.localStorage=g})(),(()=>{let t=document.createElement("div");t.className="bd-loaderv2",t.title="BetterDiscord is loading...",document.body.appendChild(t)})(),window.bdStorage={},window.bdStorage.get=function(t){return betterDiscordIPC.sendSync("synchronous-message",{arg:"storage",cmd:"get","var":t})},window.bdStorage.set=function(t,a){betterDiscordIPC.sendSync("synchronous-message",{arg:"storage",cmd:"set","var":t,data:a})},window.bdPluginStorage={},window.bdPluginStorage.get=function(t,a){return betterDiscordIPC.sendSync("synchronous-message",{arg:"pluginstorage",cmd:"get",pn:t,"var":a})},window.bdPluginStorage.set=function(t,a,o){betterDiscordIPC.sendSync("synchronous-message",{arg:"pluginstorage",cmd:"set",pn:t,"var":a,data:o})};var bdSettings={},bdSettingsStorage={},releaseChannel=DiscordNative.globals.releaseChannel;bdSettingsStorage.initialize=function(){let t=require("fs"),a={stable:{},canary:{},ptb:{}};if(t.existsSync(bdConfig.dataPath+"/bdsettings.json"))try{a=JSON.parse(t.readFileSync(bdConfig.dataPath+"/bdsettings.json")),a.hasOwnProperty("settings")&&(a={[releaseChannel]:a})}catch(o){a={stable:{},canary:{},ptb:{}}}bdSettings=a?a:{stable:{},canary:{},ptb:{}}},bdSettingsStorage.get=function(t){return bdSettings[releaseChannel][t]?bdSettings[releaseChannel][t]:null},bdSettingsStorage.set=function(t,a){let o=require("fs");bdSettings[releaseChannel][t]=a;try{return o.writeFileSync(bdConfig.dataPath+"/bdsettings.json",JSON.stringify(bdSettings,null,4)),!0}catch(l){return Utils.err(l),!1}};var settingsPanel,emoteModule,quickEmoteMenu,voiceMode,pluginModule,themeModule,dMode,publicServersModule,jsVersion=1.792,supportedVersion="0.2.81",bbdVersion="0.1.1",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:!0,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 stop
2018-08-19 23:15:23 +02:00
<div class="bd-backdrop backdrop-1wrmKB"></div>
2018-05-05 16:54:21 +02:00
<div class="bd-modal modal-1UGdnR">
<div class="bd-modal-inner inner-1JeGVc">
<div class="header header-1R_AjF">
<div class="title">${t}</div>
</div>
<div class="bd-modal-body">
<div class="scroller-wrap fade">
<div class="scroller">
${a}
</div>
</div>
</div>
2018-05-05 16:54:21 +02:00
<div class="footer footer-2yfCgX">
<button type="button">Okay</button>
</div>
</div>
</div>
</div>`);o.find(".footer button").on("click",()=>{o.addClass("closing"),setTimeout(()=>{o.remove()},300)}),o.find(".bd-backdrop").on("click",()=>{o.addClass("closing"),setTimeout(()=>{o.remove()},300)}),o.appendTo("#app-mount")},Core.prototype.showStartupErrors=function(){function t(l){let d=$(`<div class="errors">`);for(let u of l){let h=$(`<div class="error">
<div class="table-column column-name">${u.name?u.name:u.file}</div>
<div class="table-column column-reason">${u.reason}</div>
<div class="table-column column-error"><a class="error-link" href="">${u.error?u.error.message:""}</a></div>
</div>`);d.append(h),u.error&&h.find("a").on("click",g=>{g.preventDefault(),Utils.err(`Error details for ${u.name?u.name:u.file}.`,u.error)})}return d}if(bdpluginErrors&&bdthemeErrors&&(bdpluginErrors.length||bdthemeErrors.length)){let a=$(`<div class="bd-modal-wrapper theme-dark">
2018-08-19 23:15:23 +02:00
<div class="bd-backdrop backdrop-1wrmKB"></div>
2018-05-05 16:54:21 +02:00
<div class="bd-modal bd-startup-modal modal-1UGdnR">
<div class="bd-modal-inner inner-1JeGVc">
<div class="header header-1R_AjF"><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>
2018-05-05 16:54:21 +02:00
<div class="footer footer-2yfCgX">
<button type="button">Okay</button>
</div>
</div>
</div>
</div>`),o=[t(bdpluginErrors),t(bdthemeErrors)];a.find(".tab-bar-item").on("click",l=>{l.preventDefault(),a.find(".tab-bar-item").removeClass("selected"),$(l.target).addClass("selected"),a.find(".scroller").empty().append(o[$(l.target).index()])}),a.find(".footer button").on("click",()=>{a.addClass("closing"),setTimeout(()=>{a.remove()},300)}),a.find(".bd-backdrop").on("click",()=>{a.addClass("closing"),setTimeout(()=>{a.remove()},300)}),a.appendTo("#app-mount"),a.find(".tab-bar-item")[0].click()}},Core.prototype.showToast=function(t,a={}){if(bdConfig.deferLoaded){if(!document.querySelector(".bd-toasts")){let h=document.createElement("div");h.classList.add("bd-toasts");let g=document.querySelector(".chat-3bRxxu form, #friends, .noChannel-Z1DQK7, .activityFeed-28jde9");h.style.setProperty("left",g?g.getBoundingClientRect().left+"px":"0px"),h.style.setProperty("width",g?g.offsetWidth+"px":"100%"),h.style.setProperty("bottom",(document.querySelector(".chat-3bRxxu form")?document.querySelector(".chat-3bRxxu form").offsetHeight:80)+"px"),document.querySelector(".app").appendChild(h)}const{type:o="",icon:l=!0,timeout:d=3e3}=a;let u=document.createElement("div");u.classList.add("bd-toast"),o&&u.classList.add("toast-"+o),o&&l&&u.classList.add("icon"),u.innerText=t,document.querySelector(".bd-toasts").appendChild(u),setTimeout(()=>{u.classList.add("closing"),setTimeout(()=>{u.remove(),document.querySelectorAll(".bd-toasts .bd-toast").length||document.querySelector(".bd-toasts").remove()},300)},d)}},window.emotesFfz={},window.emotesBTTV={},window.emotesBTTV2={},window.emotesTwitch={},window.subEmotesTwitch={},window.bdEmotes={TwitchGlobal:{},TwitchSubscriber:{},BTTV:{},FrankerFaceZ:{},BTTV2:{}},window.bdEmoteSettingIDs={TwitchGlobal:"bda-es-7",TwitchSubscriber:"bda-es-7",BTTV:"bda-es-2",FrankerFaceZ:"bda-es-1",BTTV2:"bda-es-2"};function EmoteModule(){}EmoteModule.prototype.init=async function(){this.modifiers=["flip","spin","pulse","spin2","spin3","1spin","2spin","3spin","tr","bl","br","shake","shake2","shake3","flap"],this.overrides=["twitch","bttv","ffz"],this.categories=["TwitchGlobal","TwitchSubscriber","BTTV","BTTV2","FrankerFaceZ"];let t={TwitchGlobal:{url:"https://twitchemotes.com/api_cache/v3/global.json",backup:"https://cdn.staticaly.com/gh/rauenzi/BetterDiscordApp/master/data/emotedata_twitch_global.json",variable:"TwitchGlobal",oldVariable:"emotesTwitch",getEmoteURL:a=>`https://static-cdn.jtvnw.net/emoticons/v1/${a.id}/1.0`,getOldData:(a,o)=>{return{id:a.match(/\/([0-9]+)\//)[1],code:o,emoticon_set:0,description:null}}},TwitchSubscriber:{url:"https://twitchemotes.com/api_cache/v3/subscriber.json",backup:"https://cdn.staticaly.com/gh/rauenzi/BetterDiscordApp/master/data/emotedata_twitch_subscriber.json",variable:"TwitchSubscriber",oldVariable:"subEmotesTwitch",parser:a=>{let o={};for(let l in a){let d=a[l];for(let g,u=0,h=d.emotes.length;u<h;u++)g=d.emotes[u],o[g.code]=g.id}return o},backupParser:a=>{return a},getEmoteURL:a=>`https://static-cdn.jtvnw.net/emoticons/v1/${a}/1.0`,getOldData:a=>a.match(/\/([0-9]+)\//)[1]},FrankerFaceZ:{url:"https://cdn.staticaly.com/gh/rauenzi/BetterDiscordApp/master/data/emotedata_ffz.json",variable:"FrankerFaceZ",oldVariable:"emotesFfz",getEmoteURL:a=>`https://cdn.frankerfacez.com/emoticon/${a}/1`,getOldData:a=>a.match(/\/([0-9]+)\//)[1]},BTTV:{url:"https://api.betterttv.net/emotes",variable:"BTTV",oldVariable:"emotesBTTV",parser:a=>{let o={};for(let u,l=0,d=a.emotes.length;l<d;l++)u=a.emotes[l],o[u.regex]=u.url;return o},getEmoteURL:a=>`${a}`,getOldData:a=>a},BTTV2:{url:"https://cdn.staticaly.com/gh/rauenzi/BetterDiscordApp/master/data/emotedata_bttv.json",variable:"BTTV2",oldVariable:"emotesBTTV2",getEmoteURL:a=>`https://cdn.betterttv.net/emote/${a}/1x`,getOldData:a=>a.match(/emote\/(.+)\//)[1]}};for(await this.getBlacklist(),await this.loadEmoteData(t);!BDV2.MessageContentComponent;)await new Promise(a=>setTimeout(a,100));this.cancelEmoteRender||(this.cancelEmoteRender=Utils.monkeyPatch(BDV2.MessageContentComponent.prototype,"render",{after:({returnValue:a})=>{Utils.mon