diff --git a/js/emotemodule.js b/js/emotemodule.js index 7b218a23..1c642830 100644 --- a/js/emotemodule.js +++ b/js/emotemodule.js @@ -1,3 +1,135 @@ +/* BetterDiscordApp Core JavaScript + * Version: 1.4 + * Author: Jiiks | http://jiiks.net + * Date: 27/08/2015 - 16:36 + * Last Update: 31/08/2015 - 16:17 + * https://github.com/Jiiks/BetterDiscordApp + */ + +var settingsPanel, emoteModule, utils, quickEmoteMenu; +var jsVersion = 1.2; + +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": "Display public servers", "implemented":false}, + "Minimal Mode": { "id": "bda-gs-2", "info": "Hide elements and reduce the size of elements.", "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-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() { + utils = new Utils(); + emoteModule = new EmoteModule(); + quickEmoteMenu = new QuickEmoteMenu(); + + emoteModule.init(); + emoteModule.autoCapitalize(); + + this.initSettings(); + this.initObserver(); + + //Temp + setTimeout(function() { + if($(".guilds-wrapper").size() > 0) { + $(".guilds li:first-child").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(e) { settingsPanel.show(); }); + } else { + setTimeout(function() { + waitForGuildsWrapper(); + }, 100); + } + }, 3000); + + +} + +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 = defaultCookie; + this.saveSettings(); + alert("BetterDiscord settings reset due to update/error"); + break; + } + } + } +} + +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 }); +} + /* BetterDiscordApp EmoteModule JavaScript * Version: 1.3 * Author: Jiiks | http://jiiks.net @@ -66,13 +198,13 @@ EmoteModule.prototype.injectEmote = function(node) { words.some(function(word) { if (emotesTwitch.hasOwnProperty(word)) { - parentInnerHTML = parentInnerHTML.replace(word, "<\/img>"); + parentInnerHTML = parentInnerHTML.replace(word, "<\/img>"); } else if(typeof emotesFfz !== 'undefined' && settingsCookie["bda-es-1"]) { if(emotesFfz.hasOwnProperty(word)) { - parentInnerHTML = parentInnerHTML.replace(word, "<\/img>"); + parentInnerHTML = parentInnerHTML.replace(word, "<\/img>"); } else if(typeof emotesBTTV !== 'undefined' && settingsCookie["bda-es-2"]) { if(emotesBTTV.hasOwnProperty(word)) { - parentInnerHTML = parentInnerHTML.replace(word, "<\/img>"); + parentInnerHTML = parentInnerHTML.replace(word, "<\/img>"); } } } @@ -108,4 +240,260 @@ EmoteModule.prototype.capitalize = function(value) { return twitchAc[value]; } return null; -} \ No newline at end of file +} + +/* BetterDiscordApp PublicSevers JavaSctript + * Version: 1.0 + * Author: Jiiks | http://jiiks.net + * Date: 27/08/2015 - 14:16 + * https://github.com/Jiiks/BetterDiscordApp + */ + +function PublicServers() { + +} + +PublicServers.prototype.init = function() { + +}/* BetterDiscordApp PublicSevers JavaSctript + * Version: 1.0 + * Author: Jiiks | http://jiiks.net + * Date: 27/08/2015 - 14:16 + * https://github.com/Jiiks/BetterDiscordApp + */ + +function PublicServers() { + +} + +PublicServers.prototype.init = function() { + +} + +/* BetterDiscordApp QuickEmoteMenu JavaScript + * Version: 1.2 + * 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; + +var globalEmotes = {":(":2, ":)": 1, ":/":10, ":D":3, ":o":8, ":p":12, ":z":5, ";)":11, ";p":13, "<3":9, ">(":4, "B)":7, "o_o":6, "R)":14,"4Head":354,"ANELE":3792,"ArgieB8":51838,"ArsonNoSexy":50,"AsianGlow":74,"AtGL":9809,"AthenaPMS":32035,"AtIvy":9800,"AtWW":9801,"BabyRage":22639,"BatChest":1905,"BCWarrior":30,"BibleThump":86,"BigBrother":1904,"BionicBunion":24,"BlargNaut":38,"BloodTrail":69,"BORT":243,"BrainSlug":881,"BrokeBack":4057,"BuddhaBar":27602,"CoolCat":58127,"CorgiDerp":49106,"CougarHunt":21,"DAESuppy":973,"DansGame":33,"DatHass":20225,"DatSheffy":170,"DBstyle":73,"deExcite":46249,"deIlluminati":46248,"DendiFace":58135,"DogFace":1903,"DOOMGuy":54089,"EagleEye":20,"EleGiggle":4339,"EvilFetus":72,"FailFish":360,"FPSMarksman":42,"FrankerZ":65,"FreakinStinkin":39,"FUNgineer":244,"FunRun":48,"FuzzyOtterOO":168,"GasJoker":9802,"GingerPower":32,"GrammarKing":3632,"HassanChop":68,"HeyGuys":30259,"HotPokket":357,"HumbleLife":46881,"ItsBoshyTime":169,"Jebaited":90,"JKanStyle":15,"JonCarnage":26,"KAPOW":9803,"Kappa":25,"KappaPride":55338,"Keepo":1902,"KevinTurtle":40,"Kippa":1901,"Kreygasm":41,"KZskull":5253,"Mau5":30134,"mcaT":35063,"MechaSupes":9804,"MrDestructoid":28,"MVGame":29,"NightBat":9805,"NinjaTroll":45,"NoNoSpot":44,"NotATK":34875,"NotLikeThis":58765,"OMGScoots":91,"OneHand":66,"OpieOP":356,"OptimizePrime":16,"OSbeaver":47005,"OSbury":47420,"OSdeo":47007,"OSfrog":47008,"OSkomodo":47010,"OSrob":47302,"OSsloth":47011,"panicBasket":22998,"PanicVis":3668,"PazPazowitz":19,"PeoplesChamp":3412,"PermaSmug":27509,"PicoMause":27,"PipeHype":4240,"PJHarley":9808,"PJSalt":36,"PMSTwin":92,"PogChamp":88,"Poooound":358,"PraiseIt":38586,"PRChase":28328,"PunchTrees":47,"PuppeyFace":58136,"RaccAttack":27679,"RalpherZ":1900,"RedCoat":22,"ResidentSleeper":245,"RitzMitz":4338,"RuleFive":361,"ShadyLulu":52492,"Shazam":9807,"shazamicon":9806,"ShazBotstix":87,"ShibeZ":27903,"SMOrc":52,"SMSkull":51,"SoBayed":1906,"SoonerLater":355,"SriHead":14706,"SSSsss":46,"StoneLightning":17,"StrawBeary":37,"SuperVinlin":31,"SwiftRage":34,"tbBaconBiscuit":44499,"tbChickenBiscuit":56879,"tbQuesarito":56883,"tbSausageBiscuit":56881,"tbSpicy":56882,"tbSriracha":56880,"TF2John":1899,"TheKing":50901,"TheRinger":18,"TheTarFu":70,"TheThing":7427,"ThunBeast":1898,"TinyFace":67,"TooSpicy":359,"TriHard":171,"TTours":38436,"UleetBackup":49,"UncleNox":3666,"UnSane":71,"VaultBoy":54090,"Volcania":166,"WholeWheat":1896,"WinWaker":167,"WTRuck":1897,"WutFace":28087,"YouWHY":4337}; +var emoteList; + +function QuickEmoteMenu() { + +} + +QuickEmoteMenu.prototype.init = function (reload) { + + emoteBtn = null; + + if(!emoteMenu) { + this.initEmoteList(); + } + + var menuOpen; + + + emoteBtn = $("
    ", { id:"twitchcord-button-container", style:"display:none" }).append($("