BetterDiscordApp-rauenzi/js/main.min.js

52 lines
76 KiB
JavaScript
Raw Normal View History

2018-01-24 00:08:20 +01:00
(function(){let a=window.require("fs"),s=window.require("process"),r=s.platform,o=("win32"===r?s.env.APPDATA:"darwin"===r?s.env.HOME+"/Library/Preferences":process.env.HOME+"/.config")+"/BetterDiscord/",n="localStorage.json",d={};if(a.existsSync(`${o}${n}`))try{d=JSON.parse(a.readFileSync(`${o}${n}`))}catch(h){console.log(h)}else if(a.existsSync(n))try{d=JSON.parse(a.readFileSync(n))}catch(h){console.log(h)}var l=d;l.setItem=function(h,g){l[h]=g,this.save()},l.getItem=function(h){return l[h]||null},l.save=function(){a.writeFileSync(`${o}${n}`,JSON.stringify(this),null,4)};var u=new Proxy(l,{set:function(h,g,b){l[g]=b,l.save()},get:function(h,g){return l[g]||null}});window.localStorage=u})(),(()=>{let a=document.createElement("div");a.className="bd-loaderv2",a.title="BetterDiscord is loading...",document.body.appendChild(a)})(),window.bdStorage={},window.bdStorage.get=function(a){return betterDiscordIPC.sendSync("synchronous-message",{arg:"storage",cmd:"get","var":a})},window.bdStorage.set=function(a,s){betterDiscordIPC.sendSync("synchronous-message",{arg:"storage",cmd:"set","var":a,data:s})},window.bdPluginStorage={},window.bdPluginStorage.get=function(a,s){return betterDiscordIPC.sendSync("synchronous-message",{arg:"pluginstorage",cmd:"get",pn:a,"var":s})},window.bdPluginStorage.set=function(a,s,r){betterDiscordIPC.sendSync("synchronous-message",{arg:"pluginstorage",cmd:"set",pn:a,"var":s,data:r})},betterDiscordIPC.on("asynchronous-reply",(a,s)=>{console.log(a),console.log(s)});var settingsPanel,emoteModule,utils,quickEmoteMenu,voiceMode,pluginModule,themeModule,dMode,publicServersModule,jsVersion=1.792,supportedVersion="0.2.81",bbdVersion="0.0.5",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 a plugin's settings when the button is clicked (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 modifiers on hover"
<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">
2018-01-09 04:24:00 +01:00
<div class="title">${a}</div>
</div>
<div class="bd-modal-body">
<div class="scroller-wrap fade">
<div class="scroller">
2018-01-09 04:24:00 +01:00
${s}
</div>
</div>
</div>
<div class="footer footer-1PYmcw">
<button type="button">Okay</button>
</div>
</div>
</div>
</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 a(o){let n=$(`<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>`);n.append(l),d.error&&l.find("a").on("click",u=>{u.preventDefault(),utils.err(`Error details for ${d.name?d.name:d.file}.`,d.error)})}return n}if(bdpluginErrors&&bdthemeErrors&&(bdpluginErrors.length||bdthemeErrors.length)){let s=$(`<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>
2018-02-13 17:06:19 +01:00
</div>`),r=[a(bdpluginErrors),a(bdthemeErrors)];s.find(".tab-bar-item").on("click",o=>{o.preventDefault(),s.find(".tab-bar-item").removeClass("selected"),$(o.target).addClass("selected"),s.find(".scroller").empty().append(r[$(o.target).index()])}),s.find(".footer button").on("click",()=>{s.addClass("closing"),setTimeout(()=>{s.remove()},300)}),s.find(".bd-backdrop").on("click",()=>{s.addClass("closing"),setTimeout(()=>{s.remove()},300)}),s.appendTo("#app-mount"),s.find(".tab-bar-item")[0].click()}},Core.prototype.showToast=function(a,s={}){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:r="",icon:o=!0,timeout:n=3e3}=s;let d=document.createElement("div");d.classList.add("bd-toast"),r&&d.classList.add("toast-"+r),r&&o&&d.classList.add("icon"),d.innerText=a,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)},n)};var emotesFfz={},emotesBTTV={},emotesBTTV2={},emotesTwitch={},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=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","FrankerFaceZ","BTTV2"];let a={TwitchGlobal:{url:"https://twitchemotes.com/api_cache/v3/global.json",backup:"https://"+bdConfig.updater.CDN+"/"+bdConfig.repo+"/BetterDiscordApp/"+bdConfig.hash+"/data/emotedata_twitch_global.json",variable:"TwitchGlobal",oldVariable:"emotesTwitch",getEmoteURL:s=>`https://static-cdn.jtvnw.net/emoticons/v1/${s.id}/1.0`,getOldData:(s,r)=>{return{id:s.match(/\/([0-9]+)\//)[1],code:r,emoticon_set:0,description:null}}},TwitchSubscriber:{url:"https://twitchemotes.com/api_cache/v3/subscriber.json",backup:"https://"+bdConfig.updater.CDN+"/"+bdConfig.repo+"/BetterDiscordApp/"+bdConfig.hash+"/data/emotedata_twitch_subscriber.json",variable:"TwitchSubscriber",oldVariable:"subEmotesTwitch",parser:s=>{let r={};for(let o in s){let n=s[o];for(let u,d=0,l=n.emotes.length;d<l;d++)u=n.emotes[d],r[u.code]=u.id}return r},getEmoteURL:s=>`https://static-cdn.jtvnw.net/emoticons/v1/${s}/1.0`,getOldData:s=>s.match(/\/([0-9]+)\//)[1]},FrankerFaceZ:{url:"https://"+bdConfig.updater.CDN+"/"+bdConfig.repo+"/BetterDiscordApp/"+bdConfig.hash+"/data/emotedata_ffz.json",variable:"FrankerFaceZ",oldVariable:"emotesFfz",getEmoteURL:s=>`https://cdn.frankerfacez.com/emoticon/${s}/1`,getOldData:s=>s.match(/\/([0-9]+)\//)[1]},BTTV:{url:"https://api.betterttv.net/emotes",variable:"BTTV",oldVariable:"emotesBTTV",parser:s=>{let r={};for(let d,o=0,n=s.emotes.length;o<n;o++)d=s.emotes[o],r[d.regex]=d.url;return r},getEmoteURL:s=>`${s}`,getOldData:s=>s},BTTV2:{url:"https://"+bdConfig.updater.CDN+"/"+bdConfig.repo+"/BetterDiscordApp/"+bdConfig.hash+"/data/emotedata_bttv.json",variable:"BTTV2",oldVariable:"emotesBTTV2",getEmoteURL:s=>`https://cdn.betterttv.net/emote/${s}/1x`,getOldData:s=>s.match(/emote\/(.+)\//)[1]}};if(!bdConfig.newLoader){for(let s in window.bdEmotes={TwitchGlobal:emotesTwitch,TwitchSubscriber:subEmotesTwitch,BTTV:emotesBTTV,FrankerFaceZ:emotesFfz,BTTV2:emotesBTTV2},window.bdEmotes)for(let r in window.bdEmotes[s])window.bdEmotes[s][r]=a[s].getEmoteURL(window.bdEmotes[s][r]);return}th