From b0b24974e694fae1b2cc56e950f2397d737d036b Mon Sep 17 00:00:00 2001 From: Jiiks Date: Mon, 9 Jan 2017 10:38:52 +0200 Subject: [PATCH] alt storage release --- js/main.js | 57 ++++++-------------------------------------------- js/main.min.js | 18 ++++++++-------- 2 files changed, 15 insertions(+), 60 deletions(-) diff --git a/js/main.js b/js/main.js index ba66d9a..b80cb70 100644 --- a/js/main.js +++ b/js/main.js @@ -28,8 +28,8 @@ betterDiscordIPC.on('asynchronous-reply', (event, arg) => { }); var settingsPanel, emoteModule, utils, quickEmoteMenu, opublicServers, voiceMode, pluginModule, themeModule, customCssEditor, dMode; -var jsVersion = 1.75; -var supportedVersion = "0.2.5"; +var jsVersion = 1.76; +var supportedVersion = "0.2.81"; var mainObserver; @@ -105,60 +105,15 @@ var defaultCookie = { var bdchangelog = { "changes": { "0a": { - "title": "1.73 : Native sub emotes", - "text": "Native sub emote support disabled for now due to a critical bug", - "img": "" - }, - "1a": { - "title": "1.73 : Initial Developer Mode", - "text": "Enable developer mode from settings!", - "img": "" - }, - "a": { - "title": "v1.72 : Public Servers", - "text": "Public servers now have categories, description, tags, dark mode and more!", - "img": "" - }, - "b": { - "title": "v1.72 : Import/Export", - "text": "Import/Export buttons now disappear in themes/plugins tabs to avoid confusion", - "img": "" - }, - "c": { - "title": "v1.72 : Changelog", - "text": "You can now reopen this changelog from the settings", + "title": "1.76 : Alternate Storage", + "text": "https://gist.github.com/Jiiks/267113ecb1685f39f4dc4646f9380d55", "img": "" } }, "fixes": { "0a": { - "title": "v1.74 : BetterDiscord Invite", - "text": "Fixed the BetterDiscord invite link in public servers", - "img": "" - }, - "0b": { - "title": "v1.74 : Dev Mode", - "text": "Fixed dev mode breaking", - "img": "" - }, - "0c": { - "title": "v1.72 : Settings panel", - "text": "Settings panel will now show no matter how you open it!", - "img": "" - }, - "0d": { - "title": "v1.72 : Fixed emote edit bug", - "text": "Edits now appear properly even with emotes!", - "img": "" - }, - "0e": { - "title": "v1.72 : Public servers", - "text": "Public servers button is visible again!", - "img": "" - }, - "0f": { - "title": "v1.72 : Public servers", - "text": "Updated public servers api endpoint url for fetching correct serverlist.", + "title": "1.76 : Alternate Storage", + "text": "Both BetterDiscord and plugins now use alternate storage", "img": "" } } diff --git a/js/main.min.js b/js/main.min.js index 81b2f62..b1f9923 100644 --- a/js/main.min.js +++ b/js/main.min.js @@ -1,4 +1,4 @@ -var settingsPanel,emoteModule,utils,quickEmoteMenu,opublicServers,voiceMode,pluginModule,themeModule,customCssEditor,dMode;var jsVersion=1.74;var supportedVersion="0.2.5";var mainObserver;var twitchEmoteUrlStart="https://static-cdn.jtvnw.net/emoticons/v1/";var twitchEmoteUrlEnd="/1.0";var ffzEmoteUrlStart="https://cdn.frankerfacez.com/emoticon/";var ffzEmoteUrlEnd="/1";var bttvEmoteUrlStart="https://cdn.betterttv.net/emote/";var bttvEmoteUrlEnd="/1x";var mainCore;var settings={"Save logs locally":{"id":"bda-gs-0","info":"Saves chat logs locally","implemented":false,"hidden":false,"cat":"core"},"Public Servers":{"id":"bda-gs-1","info":"Display public servers button","implemented":true,"hidden":false,"cat":"core"},"Minimal Mode":{"id":"bda-gs-2","info":"Hide elements and reduce the size of elements.","implemented":true,"hidden":false,"cat":"core"},"Voice Mode":{"id":"bda-gs-4","info":"Only show voice chat","implemented":true,"hidden":false,"cat":"core"},"Hide Channels":{"id":"bda-gs-3","info":"Hide channels in minimal mode","implemented":true,"hidden":false,"cat":"core"},"Dark Mode":{"id":"bda-gs-5","info":"Make certain elements dark by default(wip)","implemented":true,"hidden":false,"cat":"core"},"Override Default Emotes":{"id":"bda-es-5","info":"Override default emotes","implemented":false,"hidden":false,"cat":"core"},"Voice Disconnect":{"id":"bda-dc-0","info":"Disconnect from voice server when closing Discord","implemented":true,"hidden":false,"cat":"core"},"Custom css live update":{"id":"bda-css-0","info":"","implemented":true,"hidden":true,"cat":"core"},"Custom css auto udpate":{"id":"bda-css-1","info":"","implemented":true,"hidden":true,"cat":"core"},"24 Hour Timestamps":{"id":"bda-gs-6","info":"Replace 12hr timestamps with proper ones","implemented":true,"hidden":false,"cat":"core"},"Coloured Text":{"id":"bda-gs-7","info":"Make text colour the same as role colour","implemented":true,"hidden":false,"cat":"core"},"Developer Mode":{"id":"bda-gs-8","info":"Developer Mode","implemented":true,"hidden":false,"cat":"core"},"Twitch Emotes":{"id":"bda-es-7","info":"Show Twitch emotes","implemented":true,"hidden":false,"cat":"emote"},"FrankerFaceZ Emotes":{"id":"bda-es-1","info":"Show FrankerFaceZ Emotes","implemented":true,"hidden":false,"cat":"emote"},"BetterTTV Emotes":{"id":"bda-es-2","info":"Show BetterTTV Emotes","implemented":true,"hidden":false,"cat":"emote"},"Emote Menu":{"id":"bda-es-0","info":"Show Twitch/Favourite emotes in emote menu","implemented":true,"hidden":false,"cat":"emote"},"Emoji Menu":{"id":"bda-es-9","info":"Show Discord emoji menu","implemented":true,"hidden":false,"cat":"emote"},"Emote Autocomplete":{"id":"bda-es-3","info":"Autocomplete emote commands","implemented":false,"hidden":false,"cat":"emote"},"Emote Auto Capitalization":{"id":"bda-es-4","info":"Autocapitalize emote commands","implemented":true,"hidden":false,"cat":"emote"},"Show Names":{"id":"bda-es-6","info":"Show emote names on hover","implemented":true,"hidden":false,"cat":"emote"},"Show emote modifiers":{"id":"bda-es-8","info":"Enable emote mods","implemented":true,"hidden":false,"cat":"emote"},};var links={"Jiiks.net":{"text":"Jiiks.net","href":"thtp://jiiks.net","target":"_blank"},"twitter":{"text":"Twitter","href":"http://twitter.com/jiiksi","target":"_blank"},"github":{"text":"Github","href":"http://github.com/jiiks","target":"_blank"}};var defaultCookie={"version":jsVersion,"bda-gs-0":false,"bda-gs-1":true,"bda-gs-2":false,"bda-gs-3":false,"bda-gs-4":false,"bda-gs-5":true,"bda-gs-6":false,"bda-gs-7":false,"bda-gs-8":false,"bda-es-0":true,"bda-es-1":true,"bda-es-2":true,"bda-es-3":false,"bda-es-4":false,"bda-es-5":true,"bda-es-6":true,"bda-es-7":true,"bda-es-8":true,"bda-jd":true,"bda-es-8":true,"bda-dc-0":false,"bda-css-0":false,"bda-css-1":false,"bda-es-9":true};var bdchangelog={"changes":{"0a":{"title":"1.73 : Native sub emotes","text":"Native sub emote support disabled for now due to a critical bug","img":""},"1a":{"title":"1.73 : Initial Developer Mode","text":"Enable developer mode from settings!","img":""},"a":{"title":"v1.72 : Public Servers","text":"Public servers now have categories, description, tags, dark mode and more!","img":""},"b":{"title":"v1.72 : Import/Export","text":"Import/Export buttons now disappear in themes/plugins tabs to avoid confusion","img":""},"c":{"title":"v1.72 : Changelog","text":"You can now reopen this changelog from the settings","img":""}},"fixes":{"0a":{"title":"v1.74 : BetterDiscord Invite","text":"Fixed the BetterDiscord invite link in public servers","img":""},"0b":{"title":"v1.74 : Dev Mode","text":"Fixed dev mode breaking","img":""},"0c":{"title":"v1.72 : Settings panel","text":"Settings panel will now show no matter how you open it!","img":""},"0d":{"title":"v1.72 : Fixed emote edit bug","text":"Edits now appear properly even with emotes!","img":""},"0e":{"title":"v1.72 : Public servers","text":"Public servers button is visible again!","img":""},"0f":{"title":"v1.72 : Public servers","text":"Updated public servers api endpoint url for fetching correct serverlist.","img":""}}};var settingsCookie={};function Core(){} +window.bdStorage={};window.bdStorage.get=function(i){return betterDiscordIPC.sendSync('synchronous-message',{'arg':'storage','cmd':'get','var':i});};window.bdStorage.set=function(i,v){betterDiscordIPC.sendSync('synchronous-message',{'arg':'storage','cmd':'set','var':i,'data':v});};window.bdPluginStorage={};window.bdPluginStorage.get=function(pn,i){return betterDiscordIPC.sendSync('synchronous-message',{'arg':'pluginstorage','cmd':'get','pn':pn,'var':i});};window.bdPluginStorage.set=function(pn,i,v){betterDiscordIPC.sendSync('synchronous-message',{'arg':'pluginstorage','cmd':'set','pn':pn,'var':i,'data':v});};betterDiscordIPC.on('asynchronous-reply',(event,arg)=>{console.log(event);console.log(arg);});var settingsPanel,emoteModule,utils,quickEmoteMenu,opublicServers,voiceMode,pluginModule,themeModule,customCssEditor,dMode;var jsVersion=1.76;var supportedVersion="0.2.81";var mainObserver;var twitchEmoteUrlStart="https://static-cdn.jtvnw.net/emoticons/v1/";var twitchEmoteUrlEnd="/1.0";var ffzEmoteUrlStart="https://cdn.frankerfacez.com/emoticon/";var ffzEmoteUrlEnd="/1";var bttvEmoteUrlStart="https://cdn.betterttv.net/emote/";var bttvEmoteUrlEnd="/1x";var mainCore;var settings={"Save logs locally":{"id":"bda-gs-0","info":"Saves chat logs locally","implemented":false,"hidden":false,"cat":"core"},"Public Servers":{"id":"bda-gs-1","info":"Display public servers button","implemented":true,"hidden":false,"cat":"core"},"Minimal Mode":{"id":"bda-gs-2","info":"Hide elements and reduce the size of elements.","implemented":true,"hidden":false,"cat":"core"},"Voice Mode":{"id":"bda-gs-4","info":"Only show voice chat","implemented":true,"hidden":false,"cat":"core"},"Hide Channels":{"id":"bda-gs-3","info":"Hide channels in minimal mode","implemented":true,"hidden":false,"cat":"core"},"Dark Mode":{"id":"bda-gs-5","info":"Make certain elements dark by default(wip)","implemented":true,"hidden":false,"cat":"core"},"Override Default Emotes":{"id":"bda-es-5","info":"Override default emotes","implemented":false,"hidden":false,"cat":"core"},"Voice Disconnect":{"id":"bda-dc-0","info":"Disconnect from voice server when closing Discord","implemented":true,"hidden":false,"cat":"core"},"Custom css live update":{"id":"bda-css-0","info":"","implemented":true,"hidden":true,"cat":"core"},"Custom css auto udpate":{"id":"bda-css-1","info":"","implemented":true,"hidden":true,"cat":"core"},"24 Hour Timestamps":{"id":"bda-gs-6","info":"Replace 12hr timestamps with proper ones","implemented":true,"hidden":false,"cat":"core"},"Coloured Text":{"id":"bda-gs-7","info":"Make text colour the same as role colour","implemented":true,"hidden":false,"cat":"core"},"Developer Mode":{"id":"bda-gs-8","info":"Developer Mode","implemented":true,"hidden":false,"cat":"core"},"Twitch Emotes":{"id":"bda-es-7","info":"Show Twitch emotes","implemented":true,"hidden":false,"cat":"emote"},"FrankerFaceZ Emotes":{"id":"bda-es-1","info":"Show FrankerFaceZ Emotes","implemented":true,"hidden":false,"cat":"emote"},"BetterTTV Emotes":{"id":"bda-es-2","info":"Show BetterTTV Emotes","implemented":true,"hidden":false,"cat":"emote"},"Emote Menu":{"id":"bda-es-0","info":"Show Twitch/Favourite emotes in emote menu","implemented":true,"hidden":false,"cat":"emote"},"Emoji Menu":{"id":"bda-es-9","info":"Show Discord emoji menu","implemented":true,"hidden":false,"cat":"emote"},"Emote Autocomplete":{"id":"bda-es-3","info":"Autocomplete emote commands","implemented":false,"hidden":false,"cat":"emote"},"Emote Auto Capitalization":{"id":"bda-es-4","info":"Autocapitalize emote commands","implemented":true,"hidden":false,"cat":"emote"},"Show Names":{"id":"bda-es-6","info":"Show emote names on hover","implemented":true,"hidden":false,"cat":"emote"},"Show emote modifiers":{"id":"bda-es-8","info":"Enable emote mods","implemented":true,"hidden":false,"cat":"emote"},};var links={"Jiiks.net":{"text":"Jiiks.net","href":"thtp://jiiks.net","target":"_blank"},"twitter":{"text":"Twitter","href":"http://twitter.com/jiiksi","target":"_blank"},"github":{"text":"Github","href":"http://github.com/jiiks","target":"_blank"}};var defaultCookie={"version":jsVersion,"bda-gs-0":false,"bda-gs-1":true,"bda-gs-2":false,"bda-gs-3":false,"bda-gs-4":false,"bda-gs-5":true,"bda-gs-6":false,"bda-gs-7":false,"bda-gs-8":false,"bda-es-0":true,"bda-es-1":true,"bda-es-2":true,"bda-es-3":false,"bda-es-4":false,"bda-es-5":true,"bda-es-6":true,"bda-es-7":true,"bda-es-8":true,"bda-jd":true,"bda-es-8":true,"bda-dc-0":false,"bda-css-0":false,"bda-css-1":false,"bda-es-9":true};var bdchangelog={"changes":{"0a":{"title":"1.76 : Alternate Storage","text":"https://gist.github.com/Jiiks/267113ecb1685f39f4dc4646f9380d55","img":""}},"fixes":{"0a":{"title":"1.76 : Alternate Storage","text":"Both BetterDiscord and plugins now use alternate storage","img":""}}};var settingsCookie={};function Core(){} Core.prototype.init=function(){var self=this;var lVersion=(typeof(version)==="undefined")?bdVersion:version;if(lVersion
Please download the latest version from BetterDiscord.net");return;} utils=new Utils();var sock=new BdWSocket();sock.start();utils.getHash();emoteModule=new EmoteModule();quickEmoteMenu=new QuickEmoteMenu();voiceMode=new VoiceMode();dMode=new devMode();emoteModule.init();this.initSettings();this.initObserver();function gwDefer(){console.log(new Date().getTime()+" Defer");if($(".guilds-wrapper .guilds").children().length>0){console.log(new Date().getTime()+" Defer Loaded");var guilds=$(".guilds>li:first-child");var showChannelsButton=$("';html+='';html+='';$("#pubs-list").append(html);$("button[data-server-invite-code="+icode+"]").on("click",function(){self.joinServer(icode);});});if(search){$("#pubs-header-title").text("Public Servers - Search Results: "+$("#pubs-list").children().length);}},done:function(){$("#pubs-spinner").hide();$("#pubs-spinner-bottom").hide();$("#pubs-searchbtn").prop("disabled",false);$("#pubs-sterm").prop("disabled",false);self.loadingServers=false;},always:function(){$("#pubs-spinner").hide();$("#pubs-spinner-bottom").hide();$("#pubs-searchbtn").prop("disabled",false);$("#pubs-sterm").prop("disabled",false);self.loadingServers=false;},error:function(){$("#pubs-spinner").hide();$("#pubs-spinner-bottom").hide();$("#pubs-searchbtn").prop("disabled",false);$("#pubs-sterm").prop("disabled",false);self.loadingServers=false;},complete:function(){$("#pubs-spinner").hide();$("#pubs-spinner-bottom").hide();$("#pubs-searchbtn").prop("disabled",false);$("#pubs-sterm").prop("disabled",false);self.loadingServers=false;}});};PublicServers.prototype.search=function(start,clear){var sterm=$("#pubs-sterm").val();var dataset={"sort":[{"online":"desc"}],"from":start,"size":20,"query":{"bool":{"must":[{"query_string":{"default_operator":"AND","query":sterm?sterm:"*"}}],"must_not":[{"terms":{"identifier":this.filtered}}]}}};if(this.selectedCategory!="all"){dataset.query.bool.must.push({"match_phrase":{"categories":this.selectedCategory}});} this.loadServers(dataset,true,clear);};PublicServers.prototype.joinServer=function(code){require('electron').shell.openExternal("https://www.discordservers.com/join/"+code);this.hide();};PublicServers.prototype.joinServerDirect=function(code){$(".guilds-add").click();$(".action.join .btn").click();$(".create-guild-container input").val(code);$(".form.join-server .btn-primary").click();this.hide();};PublicServers.prototype.escape=function(unsafe){if(unsafe===undefined)return"";return unsafe.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'");};function QuickEmoteMenu(){} -QuickEmoteMenu.prototype.init=function(){$(document).on("mousedown",function(e){if(e.target.id!="rmenu")$("#rmenu").remove();});this.favoriteEmotes={};var fe=localStorage["bdfavemotes"];if(fe!=undefined){this.favoriteEmotes=JSON.parse(atob(fe));} +QuickEmoteMenu.prototype.init=function(){$(document).on("mousedown",function(e){if(e.target.id!="rmenu")$("#rmenu").remove();});this.favoriteEmotes={};var fe=bdStorage.get("bdfavemotes");if(fe!=undefined){this.favoriteEmotes=JSON.parse(atob(fe));} var qmeHeader="";qmeHeader+="
";qmeHeader+=" ";attachEditor+=" <\/div>";attachEditor+="<\/div>";this.attachEditor=attachEditor;$("#bd-customcss-innerpane").append(attachEditor);$("#bd-customcss-detached-update").on("click",function(){self.applyCustomCss(self.editor.getValue(),true,false);return false;});$("#bd-customcss-detached-save").on("click",function(){self.applyCustomCss(self.editor.getValue(),false,true);return false;});var detachEditor="";detachEditor+="
";detachEditor+="
";detachEditor+=" <\/div>";detachEditor+="<\/div>";this.detachedEditor=detachEditor;};CustomCssEditor.prototype.attach=function(){$("#editor-detached").hide();$("#app-mount").removeClass("bd-detached-editor");$("#bd-customcss-pane").append($("#bd-customcss-innerpane"));$("#bd-customcss-detached-detach").show();$("#bd-customcss-detach-container").remove();};CustomCssEditor.prototype.detach=function(){var self=this;this.attach();$("#editor-detached").show();$("#bd-customcss-detached-detach").hide();$("#app-mount").addClass("bd-detached-editor");$(".app").parent().append(this.detachedEditor);$("#bd-customcss-detach-editor").append($("#bd-customcss-innerpane"));};CustomCssEditor.prototype.applyCustomCss=function(css,forceupdate,forcesave){if($("#customcss").length==0){$("head").append('');} +faContainer+=" <\/div>";faContainer+=" <\/div>";faContainer+=" <\/div>";faContainer+="<\/div>";this.faContainer=faContainer;$("#bda-qem-favourite-container").replaceWith(faContainer);window.bdStorage.set("bdfavemotes",btoa(JSON.stringify(this.favoriteEmotes)));};function CustomCssEditor(){} +CustomCssEditor.prototype.init=function(){var self=this;self.hideBackdrop=false;self.editor=CodeMirror.fromTextArea(document.getElementById("bd-custom-css-ta"),{lineNumbers:true,mode:'css',indentUnit:4,theme:'neat'});self.editor.on("change",function(cm){var css=cm.getValue();self.applyCustomCss(css,false,false);});var attachEditor="";attachEditor+="
";attachEditor+="
    ";attachEditor+="
  • ";attachEditor+="
    ";attachEditor+="
    <\/span><\/div>";attachEditor+=" Live Update<\/span>";attachEditor+=" <\/div>";attachEditor+=" <\/li>";attachEditor+="
  • ";attachEditor+="
    ";attachEditor+="
    <\/span><\/div>";attachEditor+=" TEMPDISABLED<\/span>";attachEditor+=" <\/div>";attachEditor+=" <\/li>";attachEditor+="
  • ";attachEditor+="
    ";attachEditor+="
    <\/span><\/div>";attachEditor+=" Hide Backdrop<\/span>";attachEditor+=" <\/div>";attachEditor+=" <\/li>";attachEditor+=" <\/ul>";attachEditor+="
    ";attachEditor+=" ";attachEditor+=" <\/div>";attachEditor+="<\/div>";this.attachEditor=attachEditor;$("#bd-customcss-innerpane").append(attachEditor);$("#bd-customcss-detached-update").on("click",function(){self.applyCustomCss(self.editor.getValue(),true,false);return false;});$("#bd-customcss-detached-save").on("click",function(){self.applyCustomCss(self.editor.getValue(),false,true);return false;});var detachEditor="";detachEditor+="
    ";detachEditor+="
    ";detachEditor+=" <\/div>";detachEditor+="<\/div>";this.detachedEditor=detachEditor;};CustomCssEditor.prototype.attach=function(){$("#editor-detached").hide();$("#app-mount").removeClass("bd-detached-editor");$("#bd-customcss-pane").append($("#bd-customcss-innerpane"));$("#bd-customcss-detached-detach").show();$("#bd-customcss-detach-container").remove();};CustomCssEditor.prototype.detach=function(){var self=this;this.attach();$("#editor-detached").show();$("#bd-customcss-detached-detach").hide();$("#app-mount").addClass("bd-detached-editor");$(".app").parent().append(this.detachedEditor);$("#bd-customcss-detach-editor").append($("#bd-customcss-innerpane"));};CustomCssEditor.prototype.applyCustomCss=function(css,forceupdate,forcesave){if($("#customcss").length==0){$("head").append('');} if(forceupdate||settingsCookie["bda-css-0"]){$("#customcss").html(css);} -if(forcesave||settingsCookie["bda-css-1"]){localStorage.setItem("bdcustomcss",btoa(css));}};var settingsButton=null;var panel=null;function SettingsPanel(){utils.injectJs("https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.9.0/codemirror.min.js");utils.injectJs("https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.9.0/mode/css/css.min.js");utils.injectJs("https://cdnjs.cloudflare.com/ajax/libs/Sortable/1.4.2/Sortable.min.js");} +if(forcesave){window.bdStorage.set("bdcustomcss",btoa(css));}};var settingsButton=null;var panel=null;function SettingsPanel(){utils.injectJs("https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.9.0/codemirror.min.js");utils.injectJs("https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.9.0/mode/css/css.min.js");utils.injectJs("https://cdnjs.cloudflare.com/ajax/libs/Sortable/1.4.2/Sortable.min.js");} SettingsPanel.prototype.init=function(){var self=this;self.construct();var body=$("body");if(settingsCookie["bda-es-0"]){$("#twitchcord-button-container").show();}else{$("#twitchcord-button-container").hide();} if(settingsCookie["bda-gs-2"]){body.addClass("bd-minimal");}else{body.removeClass("bd-minimal");} if(settingsCookie["bda-gs-3"]){body.addClass("bd-minimal-chan");}else{body.removeClass("bd-minimal-chan");} @@ -71,19 +71,19 @@ if(settingsCookie["bda-es-6"]){emoteNamePopup=$("
    ",{id:"bd-pane",class:"settings-inner",css:{"display":"none"}});var settingsInner='
    Core
    Emotes
    Custom CSS
    Plugins
    Themes
    ';settingsInner+=' ';var ccss=atob(localStorage.getItem("bdcustomcss"));customCssEditor.applyCustomCss(ccss,true,false);settingsInner+=' ';settingsInner+='
      ';$.each(bdplugins,function(){var plugin=this["plugin"];var hasSettings=false;if(typeof(plugin.getSettingsPanel)=="function"){hasSettings=plugin.getSettingsPanel()!=null&&plugin.getSettingsPanel()!="";} +settingsInner+='
    ';var ccss=atob(window.bdStorage.get("bdcustomcss"));customCssEditor.applyCustomCss(ccss,true,false);settingsInner+=' ';settingsInner+='
      ';$.each(bdplugins,function(){var plugin=this["plugin"];var hasSettings=false;if(typeof(plugin.getSettingsPanel)=="function"){hasSettings=plugin.getSettingsPanel()!=null&&plugin.getSettingsPanel()!="";} settingsInner+='
    • '+plugin.getName()+' v'+plugin.getVersion()+' by '+plugin.getAuthor()+'
      '+plugin.getDescription()+'
    • ';});settingsInner+='
    ';settingsInner+=' ';settingsInner+='
    BetterDiscord v'+((typeof(version)=="undefined")?bdVersion:version)+'(JSv'+jsVersion+') by Jiiks BetterDiscord.net changelog
    ';function showSettings(){$(".tab-bar-item").removeClass("selected");settingsButton.addClass("selected");$(".form .settings-right .settings-inner").first().hide();panel.show();if(lastTab==""){self.changeTab("bd-settings-tab");}else{self.changeTab(lastTab);}} settingsButton=$("
    ",{class:"tab-bar-item",text:"BetterDiscord",id:"bd-settings-new",click:showSettings});panel.html(settingsInner);this.panel=panel;};SettingsPanel.prototype.inject=function(mutation){if(mutation.type!="childList")return;if(mutation.addedNodes.length<=0)return;if($(mutation.addedNodes[0]).find(".user-settings-modal").length<=0)return;var self=this;this.panel.hide();var tabBar=$(".tab-bar.SIDE").first();$(".tab-bar.SIDE .tab-bar-item").click(function(){$(".form .settings-right .settings-inner").first().show();$("#bd-settings-new").removeClass("selected");self.panel.hide();});tabBar.append(settingsButton);$(".form .settings-right .settings-inner").last().after(self.panel);$("#bd-settings-new").removeClass("selected");};var _hash;function Utils(){} Utils.prototype.getTextArea=function(){return $(".channel-textarea-inner textarea");};Utils.prototype.jqDefer=function(fnc){if(window.jQuery){fnc();}else{setTimeout(function(){this.jqDefer(fnc);},100);}};Utils.prototype.getHash=function(){$.getJSON("https://api.github.com/repos/Jiiks/BetterDiscordApp/commits/master",function(data){_hash=data.sha;emoteModule.getBlacklist();});};Utils.prototype.loadHtml=function(html,callback){var container=$("
    ",{class:"bd-container"}).appendTo("body");html='//cdn.rawgit.com/Jiiks/BetterDiscordApp/'+_hash+'/html/'+html+'.html';container.load(html,callback());};Utils.prototype.injectJs=function(uri){$("