diff --git a/css/main.css b/css/main.css index a6120f22..63624ffa 100644 --- a/css/main.css +++ b/css/main.css @@ -1,3 +1,7 @@ +#bdbeta { + background:red; +} + #twitchcord-button-container { position:absolute; width:50px; diff --git a/devjs/core.js b/devjs/core.js deleted file mode 100644 index 090ba209..00000000 --- a/devjs/core.js +++ /dev/null @@ -1,150 +0,0 @@ -/* BetterDiscordApp Core JavaScript - * Version: 1.5 - * Author: Jiiks | http://jiiks.net - * Date: 27/08/2015 - 16:36 - * Last Update: 24/010/2015 - 17:27 - * https://github.com/Jiiks/BetterDiscordApp - */ - -/* - * =Changelog= - * -v1.5 - * --Synchronized loading - * --jsv 1.3 - * --Voice mode - */ - -var settingsPanel, emoteModule, utils, quickEmoteMenu, opublicServers, voiceMode; -var jsVersion = 1.3; -var supportedVersion = "0.1.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 = ""; -var bttvEmoteUrlEnd = ""; - -var settings = { - "Save logs locally": { "id": "bda-gs-0", "info": "Saves chat logs locally", "implemented":false }, - "Public Servers": { "id": "bda-gs-1", "info": "BETA : Display public servers button", "implemented":true}, - "Minimal Mode": { "id": "bda-gs-2", "info": "Hide elements and reduce the size of elements.", "implemented":true}, - "Voice Mode": { "id": "bda-gs-4", "info": "Only show voice chat", "implemented":true}, - "Hide Channels": { "id": "bda-gs-3", "info": "Hide channels in minimal mode", "implemented":true}, - "Quick Emote Menu": { "id": "bda-es-0", "info": "Show quick emote menu for adding emotes", "implemented":true }, - "FrankerFaceZ Emotes": { "id": "bda-es-1", "info": "Show FrankerFaceZ Emotes", "implemented":true }, - "BetterTTV Emotes": { "id": "bda-es-2", "info": "Show BetterTTV Emotes", "implemented":false }, - "Emote Autocomplete": { "id": "bda-es-3", "info": "Autocomplete emote commands", "implemented":false }, - "Emote Auto Capitalization": { "id": "bda-es-4", "info": "Autocapitalize emote commands", "implemented":true }, - "Override Default Emotes": { "id": "bda-es-5", "info": "Override default emotes", "implemented":false } -}; - -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-es-0":true, - "bda-es-1":false, - "bda-es-2":false, - "bda-es-3":false, - "bda-es-4":false, - "bda-es-5":true -}; - -var settingsCookie = {}; -var version = "0"; - -function Core() {} - -Core.prototype.init = function() { - - if(version < supportedVersion) { - alert("BetterDiscord v" + version + "(your version)" + " is not supported by the latest js("+jsVersion+"). Please download the latest version from GitHub."); - return; - } - - - utils = new Utils(); - emoteModule = new EmoteModule(); - quickEmoteMenu = new QuickEmoteMenu(); - voiceMode = new VoiceMode(); - - emoteModule.init(); - emoteModule.autoCapitalize(); - - this.initSettings(); - this.initObserver(); - - //In case were too fast - function gwDefer() { - if($(".guilds-wrapper").size() > 0) { - - var guilds = $(".guilds li:first-child"); - - guilds.after($("
  • ", { id: "bd-pub-li", css: { "height": "20px", "display": settingsCookie["bda-gs-1"] == true ? "" : "none" } }).append($("
    ", { class: "guild-inner", css: { "height": "20px" } }).append($("").append($("
    ", { css: { "line-height": "20px" }, text: "public", id: "bd-pub-button" }))))); - guilds.after($("
  • ", {id:"tc-settings-li"}).append($("
    ", { class: "guild-inner" }).append($("").append($("
    ", { class: "avatar-small", id: "tc-settings-button" }))))); - - settingsPanel = new SettingsPanel(); - settingsPanel.init(); - - opublicServers = new PublicServers(); - opublicServers.init(); - - quickEmoteMenu.init(false); - - $("#tc-settings-button").on("click", function(e) { settingsPanel.show(); }); - $("#bd-pub-button").on("click", function(e) { opublicServers.show(); }); - - } else { - setTimeout(gwDefer(), 100); - } - } - - gwDefer(); -} - -Core.prototype.initSettings = function() { - if($.cookie("better-discord") == undefined) { - settingsCookie = defaultCookie; - this.saveSettings(); - } else { - this.loadSettings(); - - for(var setting in defaultCookie) { - if(settingsCookie[setting] == undefined) { - settingsCookie[setting] = defaultCookie[setting]; - this.saveSettings(); - } - } - } -} - -Core.prototype.saveSettings = function() { - $.cookie("better-discord", JSON.stringify(settingsCookie), { expires: 365, path: '/' }); -} - -Core.prototype.loadSettings = function() { - settingsCookie = JSON.parse($.cookie("better-discord")); -} - -Core.prototype.initObserver = function() { - - mainObserver = new MutationObserver(function(mutations) { - mutations.forEach(function(mutation) { - if(mutation.target.getAttribute('class') != null) { - if(mutation.target.getAttribute('class').indexOf("titlebar") != -1) { - quickEmoteMenu.obsCallback(); - } - } - emoteModule.obsCallback(mutation); - - }); - }); - - mainObserver.observe(document, { childList: true, subtree: true }); -} \ No newline at end of file diff --git a/devjs/main.js b/devjs/main.js deleted file mode 100644 index 0ec5284e..00000000 --- a/devjs/main.js +++ /dev/null @@ -1,701 +0,0 @@ -/* BetterDiscordApp Core JavaScript - * Version: 1.5 - * Author: Jiiks | http://jiiks.net - * Date: 27/08/2015 - 16:36 - * Last Update: 24/010/2015 - 17:27 - * https://github.com/Jiiks/BetterDiscordApp - */ - -/* - * =Changelog= - * -v1.5 - * --Synchronized loading - * --jsv 1.3 - * --Voice mode - */ - -var settingsPanel, emoteModule, utils, quickEmoteMenu, opublicServers, voiceMode; -var jsVersion = 1.3; -var supportedVersion = "0.1.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 = ""; -var bttvEmoteUrlEnd = ""; - -var mainCore; - -var settings = { - "Save logs locally": { "id": "bda-gs-0", "info": "Saves chat logs locally", "implemented":false }, - "Public Servers": { "id": "bda-gs-1", "info": "BETA : Display public servers button", "implemented":true}, - "Minimal Mode": { "id": "bda-gs-2", "info": "Hide elements and reduce the size of elements.", "implemented":true}, - "Voice Mode": { "id": "bda-gs-4", "info": "Only show voice chat", "implemented":true}, - "Hide Channels": { "id": "bda-gs-3", "info": "Hide channels in minimal mode", "implemented":true}, - "Quick Emote Menu": { "id": "bda-es-0", "info": "Show quick emote menu for adding emotes", "implemented":true }, - "FrankerFaceZ Emotes": { "id": "bda-es-1", "info": "Show FrankerFaceZ Emotes", "implemented":true }, - "BetterTTV Emotes": { "id": "bda-es-2", "info": "Show BetterTTV Emotes", "implemented":true }, - "Emote Autocomplete": { "id": "bda-es-3", "info": "Autocomplete emote commands", "implemented":false }, - "Emote Auto Capitalization": { "id": "bda-es-4", "info": "Autocapitalize emote commands", "implemented":true }, - "Override Default Emotes": { "id": "bda-es-5", "info": "Override default emotes", "implemented":false } -}; - -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-es-0":true, - "bda-es-1":false, - "bda-es-2":false, - "bda-es-3":false, - "bda-es-4":false, - "bda-es-5":true -}; - -var settingsCookie = {}; - -function Core() {} - -Core.prototype.init = function() { - - if(version < supportedVersion) { - alert("BetterDiscord v" + version + "(your version)" + " is not supported by the latest js("+jsVersion+"). Please download the latest version from GitHub."); - return; - } - - utils = new Utils(); - emoteModule = new EmoteModule(); - quickEmoteMenu = new QuickEmoteMenu(); - voiceMode = new VoiceMode(); - - 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"); - - guilds.after($("
  • ", { id: "bd-pub-li", css: { "height": "20px", "display": settingsCookie["bda-gs-1"] == true ? "" : "none" } }).append($("
    ", { class: "guild-inner", css: { "height": "20px", "border-radius": "4px" } }).append($("").append($("
    ", { css: { "line-height": "20px", "font-size": "12px" }, text: "public", id: "bd-pub-button" }))))); - guilds.after($("
  • ", {id:"tc-settings-li"}).append($("
    ", { class: "guild-inner" }).append($("").append($("
    ", { class: "avatar-small", id: "tc-settings-button" }))))); - - settingsPanel = new SettingsPanel(); - settingsPanel.init(); - - quickEmoteMenu.init(false); - - $("#tc-settings-button").on("click", function() { settingsPanel.show(); }); - $("#bd-pub-button").on("click", function() { opublicServers.show(); }); - - opublicServers = new PublicServers(); - opublicServers.init(); - - emoteModule.autoCapitalize(); - } else { - setTimeout(gwDefer, 100); - } - } - - - $(document).ready(function() { - setTimeout(gwDefer, 1000); - }); -}; - -Core.prototype.initSettings = function() { - if($.cookie("better-discord") == undefined) { - settingsCookie = defaultCookie; - this.saveSettings(); - } else { - this.loadSettings(); - - for(var setting in defaultCookie) { - if(settingsCookie[setting] == undefined) { - settingsCookie[setting] = defaultCookie[setting]; - this.saveSettings(); - } - } - } -}; - -Core.prototype.saveSettings = function() { - $.cookie("better-discord", JSON.stringify(settingsCookie), { expires: 365, path: '/' }); -}; - -Core.prototype.loadSettings = function() { - settingsCookie = JSON.parse($.cookie("better-discord")); -}; - -Core.prototype.initObserver = function() { - - mainObserver = new MutationObserver(function(mutations) { - mutations.forEach(function(mutation) { - if(mutation.target.getAttribute('class') != null) { - if(mutation.target.getAttribute('class').indexOf("titlebar") != -1) { - quickEmoteMenu.obsCallback(); - } - } - emoteModule.obsCallback(mutation); - - }); - }); - - //noinspection JSCheckFunctionSignatures - mainObserver.observe(document, { childList: true, subtree: true }); -}; - -/* 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 = {}; - -//TODO Use emotesTwitch for autocap -var twitchAc = {"4head":"4Head","anele":"ANELE","argieb8":"ArgieB8","arsonnosexy":"ArsonNoSexy","asianglow":"AsianGlow","atgl":"AtGL","athenapms":"AthenaPMS","ativy":"AtIvy","atww":"AtWW","babyrage":"BabyRage","batchest":"BatChest","bcwarrior":"BCWarrior","biblethump":"BibleThump","bigbrother":"BigBrother","bionicbunion":"BionicBunion","blargnaut":"BlargNaut","bloodtrail":"BloodTrail","bort":"BORT","brainslug":"BrainSlug","brokeback":"BrokeBack","buddhabar":"BuddhaBar","coolcat":"CoolCat","corgiderp":"CorgiDerp","cougarhunt":"CougarHunt","daesuppy":"DAESuppy","dansgame":"DansGame","dathass":"DatHass","datsheffy":"DatSheffy","dbstyle":"DBstyle","deexcite":"deExcite","deilluminati":"deIlluminati","dendiface":"DendiFace","dogface":"DogFace","doomguy":"DOOMGuy","eagleeye":"EagleEye","elegiggle":"EleGiggle","evilfetus":"EvilFetus","failfish":"FailFish","fpsmarksman":"FPSMarksman","frankerz":"FrankerZ","freakinstinkin":"FreakinStinkin","fungineer":"FUNgineer","funrun":"FunRun","fuzzyotteroo":"FuzzyOtterOO","gasjoker":"GasJoker","gingerpower":"GingerPower","grammarking":"GrammarKing","hassanchop":"HassanChop","heyguys":"HeyGuys","hotpokket":"HotPokket","humblelife":"HumbleLife","itsboshytime":"ItsBoshyTime","jebaited":"Jebaited","jkanstyle":"JKanStyle","joncarnage":"JonCarnage","kapow":"KAPOW","kappa":"Kappa","kappapride":"KappaPride","keepo":"Keepo","kevinturtle":"KevinTurtle","kippa":"Kippa","kreygasm":"Kreygasm","kzskull":"KZskull","mau5":"Mau5","mcat":"mcaT","mechasupes":"MechaSupes","mrdestructoid":"MrDestructoid","mvgame":"MVGame","nightbat":"NightBat","ninjatroll":"NinjaTroll","nonospot":"NoNoSpot","notatk":"NotATK","notlikethis":"NotLikeThis","omgscoots":"OMGScoots","onehand":"OneHand","opieop":"OpieOP","optimizeprime":"OptimizePrime","osbeaver":"OSbeaver","osbury":"OSbury","osdeo":"OSdeo","osfrog":"OSfrog","oskomodo":"OSkomodo","osrob":"OSrob","ossloth":"OSsloth","panicbasket":"panicBasket","panicvis":"PanicVis","pazpazowitz":"PazPazowitz","peopleschamp":"PeoplesChamp","permasmug":"PermaSmug","picomause":"PicoMause","pipehype":"PipeHype","pjharley":"PJHarley","pjsalt":"PJSalt","pmstwin":"PMSTwin","pogchamp":"PogChamp","poooound":"Poooound","praiseit":"PraiseIt","prchase":"PRChase","punchtrees":"PunchTrees","puppeyface":"PuppeyFace","raccattack":"RaccAttack","ralpherz":"RalpherZ","redcoat":"RedCoat","residentsleeper":"ResidentSleeper","ritzmitz":"RitzMitz","rulefive":"RuleFive","shadylulu":"ShadyLulu","shazam":"Shazam","shazamicon":"shazamicon","shazbotstix":"ShazBotstix","shibez":"ShibeZ","smorc":"SMOrc","smskull":"SMSkull","sobayed":"SoBayed","soonerlater":"SoonerLater","srihead":"SriHead","ssssss":"SSSsss","stonelightning":"StoneLightning","strawbeary":"StrawBeary","supervinlin":"SuperVinlin","swiftrage":"SwiftRage","tbbaconbiscuit":"tbBaconBiscuit","tbchickenbiscuit":"tbChickenBiscuit","tbquesarito":"tbQuesarito","tbsausagebiscuit":"tbSausageBiscuit","tbspicy":"tbSpicy","tbsriracha":"tbSriracha","tf2john":"TF2John","theking":"TheKing","theringer":"TheRinger","thetarfu":"TheTarFu","thething":"TheThing","thunbeast":"ThunBeast","tinyface":"TinyFace","toospicy":"TooSpicy","trihard":"TriHard","ttours":"TTours","uleetbackup":"UleetBackup","unclenox":"UncleNox","unsane":"UnSane","vaultboy":"VaultBoy","volcania":"Volcania","wholewheat":"WholeWheat","winwaker":"WinWaker","wtruck":"WTRuck","wutface":"WutFace","youwhy":"YouWHY"}; - -function EmoteModule() {} - -EmoteModule.prototype.init = function() {}; - -EmoteModule.prototype.obsCallback = function(mutation) { - var self = this; - 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)) { - 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; -}; - -//TODO Functional titles -EmoteModule.prototype.injectEmote = function(node) { - - if(typeof emotesTwitch === 'undefined') return; - - if(!node.parentElement) return; - - var parent = node.parentElement; - if(parent.tagName != "SPAN") return; - - var parentInnerHTML = parent.innerHTML; - var words = parentInnerHTML.split(" "); - - if(!words) return; - - words.some(function(word) { - - if(emotesTwitch.emotes.hasOwnProperty(word)) { - parentInnerHTML = parentInnerHTML.replace(word, "<\/img>"); - return; - } - - if(typeof emotesFfz !== 'undefined' && settingsCookie["bda-es-1"]) { - if(emotesFfz.hasOwnProperty(word)) { - parentInnerHTML = parentInnerHTML.replace(word, "<\/img>"); - return; - } - } - - if(typeof emotesBTTV !== 'undefined' && settingsCookie["bda-es-2"]) { - if(emotesBTTV.hasOwnProperty(word)) { - parentInnerHTML = parentInnerHTML.replace(word, "<\/img>"); - return; - } - } - - if (subEmotesTwitch.hasOwnProperty(word)) { - parentInnerHTML = parentInnerHTML.replace(word, "<\/img>"); - } - }); - - if(parent.parentElement == null) return; - - var oldHeight = parent.parentElement.offsetHeight; - parent.innerHTML = parentInnerHTML; - var newHeight = parent.parentElement.offsetHeight; - - //Scrollfix - var scrollPane = $(".scroller.messages").first(); - scrollPane.scrollTop(scrollPane.scrollTop() + (newHeight - oldHeight)); -}; - -EmoteModule.prototype.autoCapitalize = function() { - - var self = this; - - $('body').delegate($(".channel-textarea-inner textarea"), 'keyup change paste', function() { - if(!settingsCookie["bda-es-4"]) return; - - var text = $(".channel-textarea-inner textarea").val(); - - if(text == undefined) return; - - var lastWord = text.split(" ").pop(); - if(lastWord.length > 3) { - var ret = self.capitalize(lastWord.toLowerCase()); - if(ret != null) { - $(".channel-textarea-inner textarea").val(text.replace(lastWord, ret)); - } - } - }); -}; - -EmoteModule.prototype.capitalize = function(value) { - if(twitchAc.hasOwnProperty(value)) { - return twitchAc[value]; - } - return null; -}; - -/* BetterDiscordApp PublicSevers JavaScripts - * Version: 1.0 - * Author: Jiiks | http://jiiks.net - * Date: 27/08/2015 - 14:16 - * https://github.com/Jiiks/BetterDiscordApp - */ - -var publicServers = { "servers": { "server": { "code": 0, "icon": null, "title": "title", "language": "EN", "description": "description" } } }; //for ide - -function PublicServers() { - -} - -PublicServers.prototype.getPanel = function() { - return this.container; -}; - -PublicServers.prototype.init = function() { - - var self = this; - - this.container = $("
    ", { - id: "bd-ps-container", - style: "display:none" - }); - - var header = $("
    ", { - id: "bd-ps-header" - }); - - $("

    ", { - text: "Public Servers" - }).appendTo(header); - - $("", { - id: "bd-ps-close", - style:"cursor:pointer;", - text: "X" - }).appendTo(header); - - header.appendTo(this.getPanel()); - - var psbody = $("
    ", { - id: "bd-ps-body" - }); - - psbody.appendTo(this.getPanel()); - - var table = $("", { - border:"0" - }); - - var thead = $(""); - - thead.appendTo(table); - - var headers = $("", { - - }).append($("", { - id: "bd-ps-tbody" - }); - - tbody.appendTo(table); - - table.appendTo(psbody); - - $("body").append(this.getPanel()); - - $("#bd-ps-close").on("click", function() { self.show(); }); - - var servers = publicServers.servers; - - for(var server in servers) { - if(servers.hasOwnProperty(server)) { - var s = servers[server]; - var code = s.code; - var title = s.title; - var language = s.language; - var description = s.description; - - this.addServer(server, code, title, language, description); - } - } -}; - -PublicServers.prototype.addServer = function(name, code, title, language, description) { - - var tableBody = $("#bd-ps-tbody"); - - - var desc = $(""); - - tr.append($("
    ", { - text: "Name" - })).append($("", { - text: "Code" - })).append($("", { - text: "Language" - })).append($("", { - text: "Description" - })); - - headers.appendTo(thead); - - var tbody = $("
    ").append($("
    ", { - class: "bd-ps-description", - text: description - })); - - var tr = $("
    ", { - text: title - })); - - tr.append($("", { - css: { - "-webkit-user-select":"initial", - "user-select":"initial" - }, - text: code - })); - - tr.append($("", { - text: language - })); - - tr.append(desc); - - tableBody.append(tr); -}; - -PublicServers.prototype.show = function() { - this.getPanel().toggle(); - var li = $("#bd-pub-li"); - li.removeClass(); - if(this.getPanel().is(":visible")) { - li.addClass("active"); - } -}; - -/* BetterDiscordApp QuickEmoteMenu JavaScript - * Version: 1.3 - * Author: Jiiks | http://jiiks.net - * Date: 26/08/2015 - 11:49 - * Last Update: 29/08/2015 - 11:46 - * https://github.com/Jiiks/BetterDiscordApp - */ - -var emoteBtn, emoteMenu; - -function QuickEmoteMenu() { - -} - -QuickEmoteMenu.prototype.init = function(reload) { - - emoteBtn = null; - - if(!emoteMenu) { - this.initEmoteList(); - } - - var menuOpen; - - - emoteBtn = $("
    ", { id:"twitchcord-button-container", style:"display:none" }).append($("