From a85d8e19d9fe41393c950482552817eb386a483c Mon Sep 17 00:00:00 2001 From: Alexei Stukov Date: Tue, 2 May 2017 18:14:59 +0300 Subject: [PATCH] Fix setting saving --- js/main.min.js | 5150 ++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 4784 insertions(+), 366 deletions(-) diff --git a/js/main.min.js b/js/main.min.js index 19ae502..6f35a42 100644 --- a/js/main.min.js +++ b/js/main.min.js @@ -1,24 +1,494 @@ -(function(){let __fs=window.require("fs");let __process=window.require("process");let __platform=__process.platform;let __dataPath=(__platform==='win32'?__process.env.APPDATA:__platform==='darwin'?__process.env.HOME+'/Library/Preferences':process.env.HOME+'/.config')+'/BetterDiscord/';let __data={};if(__fs.existsSync(`${__dataPath}localStorage.json`)){try{__data=JSON.parse(__fs.readFileSync(`${__dataPath}localStorage.json`))}catch(err){console.log(err)}}else if(__fs.existsSync("localStorage.json")){try{__data=JSON.parse(__fs.readFileSync("localStorage.json"))}catch(err){console.log(err)}} -var __ls=__data;__ls.setItem=function(i,v){__ls[i]=v;this.save()};__ls.getItem=function(i){return __ls[i]||null};__ls.save=function(){__fs.writeFileSync(`${__dataPath}/localStorage.json`,JSON.stringify(this),null,4)};var __proxy=new Proxy(__ls,{set:function(target,name,val,receiver){__ls[name]=val;__ls.save()},get:function(target,name,receiver){return __ls[name]||null}});window.localStorage=__proxy})();(()=>{let v2Loader=document.createElement('div');v2Loader.className="bd-loaderv2";v2Loader.title="BetterDiscord is loading...";document.body.appendChild(v2Loader)})();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.78;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":!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"},"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 emotes in emote menu","implemented":!0,"hidden":!1,"cat":"emote"},"Emoji Menu":{"id":"bda-es-9","info":"Show Discord emoji menu","implemented":!0,"hidden":!1,"cat":"emote"},"Emote Autocomplete":{"id":"bda-es-3","info":"Autocomplete emote commands","implemented":!1,"hidden":!1,"cat":"emote"},"Emote Auto Capitalization":{"id":"bda-es-4","info":"Autocapitalize emote commands","implemented":!0,"hidden":!1,"cat":"emote"},"Show Names":{"id":"bda-es-6","info":"Show emote names on hover","implemented":!0,"hidden":!1,"cat":"emote"},"Show emote modifiers":{"id":"bda-es-8","info":"Enable emote mods","implemented":!0,"hidden":!1,"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":!1,"bda-gs-1":!0,"bda-gs-2":!1,"bda-gs-3":!1,"bda-gs-4":!1,"bda-gs-5":!0,"bda-gs-6":!1,"bda-gs-7":!1,"bda-gs-8":!1,"bda-es-0":!0,"bda-es-1":!0,"bda-es-2":!0,"bda-es-3":!1,"bda-es-4":!1,"bda-es-5":!0,"bda-es-6":!0,"bda-es-7":!0,"bda-gs-b":!0,"bda-es-8":!0,"bda-jd":!0,"bda-es-8":!0,"bda-dc-0":!1,"bda-css-0":!1,"bda-css-1":!1,"bda-es-9":!0};var bdchangelog={"changes":{"0a":{"title":"1.78 : Temp support for new settingspanel","text":"Added temp support for Discord's new settingspanel until v2.","img":""},"0b":{"title":"1.78 : Public Servers","text":"New look and flow for public servers","img":""},"0c":{"title":"1.78 : New loading icon","text":"New loading icon will now display in bottom right when BD is loading.","img":""},"0d":{"title":"1.78 : New CustomCSS editor look","text":"Updated CustomCSS editor with dark theme","img":""},"0e":{"title":"1.78 : BetterDiscord Blue","text":"Replace Discord blue with BetterDiscord blue!","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=$("'+' '+'
'+'
';if(bdchangelog.changes!=null){changeLog+=''+'

'+' New Stuff'+'

'+'
    ';for(var change in bdchangelog.changes){change=bdchangelog.changes[change];changeLog+=''+'
  • '+' '+change.title+''+'
    '+change.text+'
    '+'
  • '} -changeLog+='
'} -if(bdchangelog.fixes!=null){changeLog+=''+'

'+' Fixed'+'

'+'
    ';for(var fix in bdchangelog.fixes){fix=bdchangelog.fixes[fix];changeLog+=''+'
  • '+' '+fix.title+''+'
    '+fix.text+'
    '+'
  • '} -changeLog+='
'} -if(bdchangelog.upcoming!=null){changeLog+=''+'

'+' Coming Soon'+'

'+'
    ';for(var upc in bdchangelog.upcoming){upc=bdchangelog.upcoming[upc];changeLog+=''+'
  • '+' '+upc.title+''+'
    '+upc.text+'
    '+'
  • '} -changeLog+='
'} -changeLog+=''+'
'+'
'+' '+' '+' '+'';return changeLog};Core.prototype.alert=function(title,text){var id='';for(var i=0;i<5;i++) -id+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".charAt(Math.floor(Math.random()*"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".length));var bdAlert='\ + +/* BetterDiscordApp Core JavaScript + * Version: 1.78 + * Author: Jiiks | http://jiiks.net + * Date: 27/08/2015 - 16:36 + * Last Update: 01/05/2016 + * https://github.com/Jiiks/BetterDiscordApp + */ + +/*Localstorage fix*/ +(function() { + + let __fs = window.require("fs"); + let __process = window.require("process"); + let __platform = __process.platform; + let __dataPath = (__platform === 'win32' ? __process.env.APPDATA : __platform === 'darwin' ? __process.env.HOME + '/Library/Preferences' : process.env.HOME + '/.config') + '/BetterDiscord/'; + + + let __data = {}; + if(__fs.existsSync(`${__dataPath}localStorage.json`)) { + try { + __data = JSON.parse(__fs.readFileSync(`${__dataPath}localStorage.json`)) + }catch(err) { + console.log(err); + } + } else if(__fs.existsSync("localStorage.json")) { + try { + __data = JSON.parse(__fs.readFileSync("localStorage.json")); + }catch(err) { + console.log(err); + } + } + + var __ls = __data; + __ls.setItem = function(i, v) { + __ls[i] = v; + this.save(); + }; + __ls.getItem = function(i) { + return __ls[i] || null; + }; + __ls.save = function() { + __fs.writeFileSync(`${__dataPath}/localStorage.json`, JSON.stringify(this), null, 4); + }; + + var __proxy = new Proxy(__ls, { + set: function(target, name, val, receiver) { + __ls[name] = val; + __ls.save(); + }, + get: function(target, name, receiver) { + return __ls[name] || null; + } + }); + + window.localStorage = __proxy; + +})(); + +(() => { + let v2Loader = document.createElement('div'); + v2Loader.className = "bd-loaderv2"; + v2Loader.title = "BetterDiscord is loading..."; + document.body.appendChild(v2Loader); +})(); + +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.79; +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"}, + "BetterDiscord Blue": { "id": "bda-gs-b", "info": "Replace Discord blue with BD Blue", "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-gs-b": 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.78 : Temp support for new settingspanel", + "text": "Added temp support for Discord's new settingspanel until v2.", + "img": "" + }, + "0b": { + "title": "1.78 : Public Servers", + "text": "New look and flow for public servers", + "img": "" + }, + "0c": { + "title": "1.78 : New loading icon", + "text": "New loading icon will now display in bottom right when BD is loading.", + "img": "" + }, + "0d": { + "title": "1.78 : New CustomCSS editor look", + "text": "Updated CustomCSS editor with dark theme", + "img": "" + }, + "0e": { + "title": "1.78 : BetterDiscord Blue", + "text": "Replace Discord blue with BetterDiscord blue!", + "img": "" + } + }, + "fixes": { + "0a": { + "title": "1.79 : Settings Saving", + "text": "Fixed settings not saving with new settings panel", + "img": "" + } + } +}; + +var settingsCookie = {}; + +function Core() {} + +Core.prototype.init = function () { + var self = this; + + var lVersion = (typeof(version) === "undefined") ? bdVersion : version; + + if (lVersion < supportedVersion) { + this.alert("Not Supported", "BetterDiscord v" + lVersion + "(your version)" + " is not supported by the latest js(" + jsVersion + ").

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(); + + //Incase were too fast + 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 = $("' + + ' ' + + '
' + + '
'; + + if (bdchangelog.changes != null) { + changeLog += '' + + '

' + + ' New Stuff' + + '

' + + '
    '; + + for (var change in bdchangelog.changes) { + change = bdchangelog.changes[change]; + + changeLog += '' + + '
  • ' + + ' ' + change.title + '' + + '
    ' + change.text + '
    ' + + '
  • '; + } + + changeLog += '
'; + } + + if (bdchangelog.fixes != null) { + changeLog += '' + + '

' + + ' Fixed' + + '

' + + '
    '; + + for (var fix in bdchangelog.fixes) { + fix = bdchangelog.fixes[fix]; + + changeLog += '' + + '
  • ' + + ' ' + fix.title + '' + + '
    ' + fix.text + '
    ' + + '
  • '; + } + + changeLog += '
'; + } + + if (bdchangelog.upcoming != null) { + changeLog += '' + + '

' + + ' Coming Soon' + + '

' + + '
    '; + + for (var upc in bdchangelog.upcoming) { + upc = bdchangelog.upcoming[upc]; + + changeLog += '' + + '
  • ' + + ' ' + upc.title + '' + + '
    ' + upc.text + '
    ' + + '
  • '; + } + + changeLog += '
'; + } + + changeLog += '' + + '
' + + '
' + + ' ' + + ' ' + + ' ' + + ''; + + return changeLog; +}; + +Core.prototype.alert = function (title, text) { + var id = ''; + for( var i=0; i < 5; i++ ) + id += "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".charAt(Math.floor(Math.random() * "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".length)); + var bdAlert = '\ \ - ';$("body").append(bdAlert);utils.addBackdrop(id)};var emotesFfz={};var emotesBTTV={};var emotesTwitch={"emotes":{"emote":{"image_id":0}}};var subEmotesTwitch={};function EmoteModule(){} -EmoteModule.prototype.init=function(){};EmoteModule.prototype.getBlacklist=function(){$.getJSON("https://cdn.rawgit.com/Jiiks/betterDiscordApp/"+_hash+"/data/emotefilter.json",function(data){bemotes=data.blacklist})};EmoteModule.prototype.obsCallback=function(mutation){var self=this;for(var i=0;i-1){w=w.replace("[!s]","");parent.data("spoilered",!1);parent.addClass("spoiler")} -var allowedClasses=["flip","spin","pulse","spin2","spin3","1spin","2spin","3spin","tr","bl","br","shake","shake2","shake3","flap"];var useEmoteClass=!1;var emoteClass="";var skipffz=!1;var sw=w;if(w.indexOf(":")>-1){var split=w.split(":");if(split[0]!=""&&split[1]!=""){if(allowedClasses.indexOf(split[1])>-1){sw=split[0];emoteClass=settingsCookie["bda-es-8"]?"emote"+split[1]:""} -if(split[1]=="bttv"){sw=split[0];skipffz=!0}}} -if($.inArray(sw,bemotes)==-1){if(typeof emotesTwitch!=='undefind'&&settingsCookie["bda-es-7"]){if(emotesTwitch.emotes.hasOwnProperty(sw)&&sw.length>=4){if(text!=null){contents.splice(i+splice++,0,document.createTextNode(text));text=null} -var url=twitchEmoteUrlStart+emotesTwitch.emotes[sw].image_id+twitchEmoteUrlEnd;contents.splice(i+splice++,0,self.createEmoteElement(sw,url,emoteClass));doInject=!0;return}} -if(typeof subEmotesTwitch!=='undefined'&&settingsCookie["bda-es-7"]){if(subEmotesTwitch.hasOwnProperty(sw)&&sw.length>=4){if(text!=null){contents.splice(i+splice++,0,document.createTextNode(text));text=null} -var url=twitchEmoteUrlStart+subEmotesTwitch[sw]+twitchEmoteUrlEnd;contents.splice(i+splice++,0,self.createEmoteElement(sw,url,emoteClass));doInject=!0;return}} -if(typeof emotesBTTV!=='undefined'&&settingsCookie["bda-es-2"]){if(emotesBTTV.hasOwnProperty(sw)&&sw.length>=4){if(text!=null){contents.splice(i+splice++,0,document.createTextNode(text));text=null} -var url=emotesBTTV[sw];contents.splice(i+splice++,0,self.createEmoteElement(sw,url,emoteClass));doInject=!0;return}} -if((typeof emotesFfz!=='undefined'&&settingsCookie["bda-es-1"])&&(!skipffz||!emotesBTTV2.hasOwnProperty(sw))){if(emotesFfz.hasOwnProperty(sw)&&sw.length>=4){if(text!=null){contents.splice(i+splice++,0,document.createTextNode(text));text=null} -var url=ffzEmoteUrlStart+emotesFfz[sw]+ffzEmoteUrlEnd;contents.splice(i+splice++,0,self.createEmoteElement(sw,url,emoteClass));doInject=!0;return}} -if(typeof emotesBTTV2!=='undefined'&&settingsCookie["bda-es-2"]){if(emotesBTTV2.hasOwnProperty(sw)&&sw.length>=4){if(text!=null){contents.splice(i+splice++,0,document.createTextNode(text));text=null} -var url=bttvEmoteUrlStart+emotesBTTV2[sw]+bttvEmoteUrlEnd;if(skipffz&&emotesFfz.hasOwnProperty(sw))sw=sw+":bttv";contents.splice(i+splice++,0,self.createEmoteElement(sw,url,emoteClass));doInject=!0;return}}} -if(text==null){text=w}else{text+=""+w} -if(index===a.length-1){contents.splice(i+splice,0,document.createTextNode(text))}});if(doInject){var oldHeight=parent.outerHeight();parent.html(contents);var scrollPane=$(".scroller.messages").first();scrollPane.scrollTop(scrollPane.scrollTop()+(parent.outerHeight()-oldHeight))}})} -inject();if(parent.children().hasClass("edited")){setTimeout(inject,250)}};EmoteModule.prototype.createEmoteElement=function(word,url,mod){var len=Math.round(word.length/4);var name=word.substr(0,len)+"\uFDD9"+word.substr(len,len)+"\uFDD9"+word.substr(len*2,len)+"\uFDD9"+word.substr(len*3);var html=''+name+'';return $.parseHTML(html.replace(new RegExp("\uFDD9","g"),""))[0]};EmoteModule.prototype.autoCapitalize=function(){var self=this;$('body').delegate($(".channel-textarea-inner textarea:first"),'keyup change paste',function(){if(!settingsCookie["bda-es-4"])return;var text=$(".channel-textarea-inner textarea:first").val();if(text==undefined)return;var lastWord=text.split(" ").pop();if(lastWord.length>3){if(lastWord=="danSgame")return;var ret=self.capitalize(lastWord.toLowerCase());if(ret!==null&&ret!==undefined){$(".channel-textarea-inner textarea:first").val(text.replace(lastWord,ret))}}})};EmoteModule.prototype.capitalize=function(value){var res=emotesTwitch.emotes;for(var p in res){if(res.hasOwnProperty(p)&&value==(p+'').toLowerCase()){return p}}};class PublicServers{constructor(){this.v2p=new V2_PublicServers()} -get endPoint(){return 'https://search.discordservers.com'} -get button(){let self=this;let btn=$("
",{class:'guild',id:'bd-pub-li',css:{'height':'20px','display':settingsCookie['bda-gs-1']?"":"none"}}).append($("
",{class:'guild-inner',css:{'height':'20px','border-radius':'4px'}}).append($("",{}).append($("
",{text:'public',id:'bd-pub-button',css:{'line-height':'20px','font-size':'12px'},click:()=>{self.v2p.render()}}))));return btn} -init(){let self=this;let guilds=$(".guilds>:first-child");guilds.after(self.button)} -get layer(){let self=this;let layer=`
+ '; + $("body").append(bdAlert); + utils.addBackdrop(id); +}; +/* BetterDiscordApp EmoteModule JavaScript + * Version: 1.5 + * Author: Jiiks | http://jiiks.net + * Date: 26/08/2015 - 15:29 + * Last Update: 14/10/2015 - 09:48 + * https://github.com/Jiiks/BetterDiscordApp + * Note: Due to conflicts autocapitalize only supports global emotes + */ + +/* + * =Changelog= + * -v1.5 + * --Twitchemotes.com api + */ + +var emotesFfz = {}; +var emotesBTTV = {}; +var emotesTwitch = { + "emotes": { + "emote": { + "image_id": 0 + } + } +}; //for ide +var subEmotesTwitch = {}; + +function EmoteModule() {} + +EmoteModule.prototype.init = function () {}; + +EmoteModule.prototype.getBlacklist = function () { + $.getJSON("https://cdn.rawgit.com/Jiiks/betterDiscordApp/" + _hash + "/data/emotefilter.json", function (data) { + bemotes = data.blacklist; + }); +}; + +EmoteModule.prototype.obsCallback = function (mutation) { + var self = this; + + //if (!settingsCookie["bda-es-7"]) return; + + /*$(".emoji").each(function() { + var t = $(this); + if(t.attr("src").indexOf(".png") != -1) { + t.replaceWith(t.attr("alt")); + } + });*/ + + /*$(".emoji:not(.emote)").each(function() { + var t = $(this); + t.addClass("emote"); + t.wrap(''); + t.parent().append($("", { class: "fav", title: "Favorite!", type: "button" })); + });*/ + + + + for (var i = 0; i < mutation.addedNodes.length; ++i) { + var next = mutation.addedNodes.item(i); + if (next) { + var nodes = self.getNodes(next); + for (var node in nodes) { + if (nodes.hasOwnProperty(node)) { + var elem = nodes[node].parentElement; + if (elem && elem.classList.contains('edited')) { + self.injectEmote(elem); + } else { + self.injectEmote(nodes[node]); + } + } + } + } + } +}; + +EmoteModule.prototype.getNodes = function (node) { + var next; + var nodes = []; + + var treeWalker = document.createTreeWalker(node, NodeFilter.SHOW_TEXT, null, false); + + while (next = treeWalker.nextNode()) { + nodes.push(next); + } + return nodes; +}; + +var bemotes = []; +var spoilered = []; + + +EmoteModule.prototype.injectEmote = function(node) { + var self = this; + + if (!node.parentElement) return; + var parent = $(node).parent(); + + if(!parent.hasClass("markup") && !parent.hasClass("message-content")) return; + + + function inject() { + var contents = parent.contents(); + + contents.each(function(i) { + if(contents[i] == undefined) return; + var nodeValue = contents[i].nodeValue; + if(nodeValue == null) return; + //if(nodeValue.indexOf("react-") > -1) return; + + if(contents[i].nodeType == 8) return; + contents.splice(i, 1); + + var words = nodeValue.split(/([^\s]+)([\s]|$)/g).filter(function(e){ return e}); + + var splice = 0; + + var doInject = false; + var text = null; + + words.forEach(function(w, index, a) { + + if(w.indexOf("[!s]") > -1) { + w = w.replace("[!s]", ""); + parent.data("spoilered", false); + parent.addClass("spoiler"); + } + + var allowedClasses = ["flip", "spin", "pulse", "spin2", "spin3", "1spin", "2spin", "3spin", "tr", "bl", "br", "shake", "shake2", "shake3", "flap"]; + var useEmoteClass = false; + var emoteClass = ""; + var skipffz = false; + + var sw = w; + + if(w.indexOf(":") > -1) { + var split = w.split(":"); + if(split[0] != "" && split[1] != "") { + if(allowedClasses.indexOf(split[1]) > -1) { + sw = split[0]; + emoteClass = settingsCookie["bda-es-8"] ? "emote" + split[1] : ""; + } + if(split[1] == "bttv") { + sw = split[0]; + skipffz = true; + } + } + } + + if ($.inArray(sw, bemotes) == -1) { + + if(typeof emotesTwitch !== 'undefind' && settingsCookie["bda-es-7"]) { + if(emotesTwitch.emotes.hasOwnProperty(sw) && sw.length >= 4) { + if(text != null) { contents.splice(i + splice++, 0, document.createTextNode(text)); text = null;} + var url = twitchEmoteUrlStart + emotesTwitch.emotes[sw].image_id + twitchEmoteUrlEnd; + contents.splice(i + splice++, 0, self.createEmoteElement(sw, url, emoteClass)); + doInject = true; + return; + } + } + + if(typeof subEmotesTwitch !== 'undefined' && settingsCookie["bda-es-7"]) { + if(subEmotesTwitch.hasOwnProperty(sw) && sw.length >= 4) { + if(text != null) { contents.splice(i + splice++, 0, document.createTextNode(text)); text = null;} + var url = twitchEmoteUrlStart + subEmotesTwitch[sw] + twitchEmoteUrlEnd; + contents.splice(i + splice++, 0, self.createEmoteElement(sw, url, emoteClass)); + doInject = true; + return; + } + } + + if (typeof emotesBTTV !== 'undefined' && settingsCookie["bda-es-2"]) { + if(emotesBTTV.hasOwnProperty(sw) && sw.length >= 4) { + if(text != null) { contents.splice(i + splice++, 0, document.createTextNode(text)); text = null;} + var url = emotesBTTV[sw]; + contents.splice(i + splice++, 0, self.createEmoteElement(sw, url, emoteClass)); + doInject = true; + return; + } + } + + if ((typeof emotesFfz !== 'undefined' && settingsCookie["bda-es-1"]) && (!skipffz || !emotesBTTV2.hasOwnProperty(sw))) { + if(emotesFfz.hasOwnProperty(sw) && sw.length >= 4) { + if(text != null) { contents.splice(i + splice++, 0, document.createTextNode(text)); text = null;} + var url = ffzEmoteUrlStart + emotesFfz[sw] + ffzEmoteUrlEnd; + contents.splice(i + splice++, 0, self.createEmoteElement(sw, url, emoteClass)); + doInject = true; + return; + } + } + + if (typeof emotesBTTV2 !== 'undefined' && settingsCookie["bda-es-2"]) { + if(emotesBTTV2.hasOwnProperty(sw) && sw.length >= 4) { + if(text != null) { contents.splice(i + splice++, 0, document.createTextNode(text)); text = null;} + var url = bttvEmoteUrlStart + emotesBTTV2[sw] + bttvEmoteUrlEnd; + if(skipffz && emotesFfz.hasOwnProperty(sw)) sw = sw + ":bttv"; + contents.splice(i + splice++, 0, self.createEmoteElement(sw, url, emoteClass)); + doInject = true; + return; + } + } + } + + if(text == null) { + text = w; + } else { + text += "" + w; + } + + if(index === a.length - 1) { + contents.splice(i + splice, 0, document.createTextNode(text)); + } + }); + + if(doInject) { + var oldHeight = parent.outerHeight(); + parent.html(contents); + var scrollPane = $(".scroller.messages").first(); + scrollPane.scrollTop(scrollPane.scrollTop() + (parent.outerHeight() - oldHeight)); + } + + }); + } + + inject(); + if(parent.children().hasClass("edited")) { + setTimeout(inject, 250); + } + + + +}; + +EmoteModule.prototype.createEmoteElement = function(word, url, mod) { + var len = Math.round(word.length / 4); + var name = word.substr(0, len) + "\uFDD9" + word.substr(len, len) + "\uFDD9" + word.substr(len * 2, len) + "\uFDD9" + word.substr(len * 3); + var html = '' + name + ''; + return $.parseHTML(html.replace(new RegExp("\uFDD9", "g"), ""))[0]; +}; + +EmoteModule.prototype.autoCapitalize = function () { + + var self = this; + + $('body').delegate($(".channel-textarea-inner textarea:first"), 'keyup change paste', function () { + if (!settingsCookie["bda-es-4"]) return; + + var text = $(".channel-textarea-inner textarea:first").val(); + if (text == undefined) return; + + var lastWord = text.split(" ").pop(); + if (lastWord.length > 3) { + if (lastWord == "danSgame") return; + var ret = self.capitalize(lastWord.toLowerCase()); + if (ret !== null && ret !== undefined) { + $(".channel-textarea-inner textarea:first").val(text.replace(lastWord, ret)); + } + } + }); +}; + +EmoteModule.prototype.capitalize = function (value) { + var res = emotesTwitch.emotes; + for (var p in res) { + if (res.hasOwnProperty(p) && value == (p + '').toLowerCase()) { + return p; + } + } +}; +/* BetterDiscordApp PublicSevers JavaScripts + * Version: 1.0 + * Author: Jiiks | http://jiiks.net + * Date: 27/08/2015 - 14:16 + * https://github.com/Jiiks/BetterDiscordApp + */ + +class PublicServers { + + constructor() { + this.v2p = new V2_PublicServers(); + } + + get endPoint() { + return 'https://search.discordservers.com'; + } + + get button() { + let self = this; + let btn = $("
", { + class: 'guild', + id: 'bd-pub-li', + css: { + 'height': '20px', + 'display': settingsCookie['bda-gs-1'] ? "" : "none" + } + }).append($("
", { + class: 'guild-inner', + css: { + 'height': '20px', + 'border-radius': '4px' + } + }).append($("", { + + }).append($("
", { + text: 'public', + id: 'bd-pub-button', + css: { + 'line-height': '20px', + 'font-size': '12px' + }, + click: () => { self.v2p.render(); } + })))); + + return btn; + } + + init() { + let self = this; + + let guilds = $(".guilds>:first-child"); + guilds.after(self.button); + + } + + get layer() { + let self = this; + let layer = `