pre
This commit is contained in:
parent
826e286de1
commit
a14b4fa630
229
js/main.js
229
js/main.js
|
@ -1,10 +1,16 @@
|
|||
/* BetterDiscordApp Core JavaScript
|
||||
* Version: 1.0
|
||||
* Version: 1.2
|
||||
* Author: Jiiks | http://jiiks.net
|
||||
* Date: 27/08/2015 - 16:36
|
||||
* Last Update: 29/08/2015 - 11:48
|
||||
* https://github.com/Jiiks/BetterDiscordApp
|
||||
*/
|
||||
|
||||
var settingsPanel, emoteModule, utils, quickEmoteMenu;
|
||||
var jsVersion = 1.1;
|
||||
|
||||
var mainObserver;
|
||||
|
||||
var twitchEmoteUrlStart = "https://static-cdn.jtvnw.net/emoticons/v1/";
|
||||
var twitchEmoteUrlEnd = "/1.0";
|
||||
var ffzEmoteUrlStart = "https://cdn.frankerfacez.com/emoticon/";
|
||||
|
@ -12,57 +18,60 @@ var ffzEmoteUrlEnd = "/1";
|
|||
var bttvEmoteUrlStart = "";
|
||||
var bttvEmoteUrlEnd = "";
|
||||
|
||||
var settings = {"Save logs locally": { "id": "bda-gs-sll", "info": "Saves chat logs locally", "implemented":false },
|
||||
"Public Servers": { "id": "bda-gs-psl", "info": "Display public servers", "implemented":false},
|
||||
"Quick Emote Menu": { "id": "bda-es-qme", "info": "Show quick emote menu for adding emotes", "implemented":true },
|
||||
"FrankerFaceZ Emotes": { "id": "bda-es-ffz", "info": "Show FrankerFaceZ Emotes", "implemented":true },
|
||||
"BetterTTV Emotes": { "id": "bda-es-bttv","info": "Show BetterTTV Emotes", "implemented":false },
|
||||
"Emote Autocomplete": { "id": "bda-es-aec", "info": "Autocomplete emote commands", "implemented":false },
|
||||
"Emote Auto Capitalization": { "id": "bda-es-ace", "info": "Autocapitalize emote commands", "implemented":true },
|
||||
"Override Default Emotes": { "id": "bda-es-ode", "info": "Override default emotes", "implemented":false }};
|
||||
|
||||
var defaultCookie = {"version":"1.0",
|
||||
"bda-gs-sll":false,
|
||||
"bda-gs-psl":true,
|
||||
"bda-es-qme":true,
|
||||
"bda-es-ffz":false,
|
||||
"bda-es-bttv":false,
|
||||
"bda-es-aec":false,
|
||||
"bda-es-ace":false,
|
||||
"bda-es-ode":true};
|
||||
|
||||
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},
|
||||
"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-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 links = { "Check for updates": "#", "Jiiks.net": "http://jiiks.net", "Twitter": "http://twitter.com/jiiksi", "Github": "https://github.com/jiiks" };
|
||||
|
||||
var utils;
|
||||
var emoteModule;
|
||||
var quickEmoteMenu;
|
||||
var settingsPanel;
|
||||
|
||||
function Core() {
|
||||
|
||||
}
|
||||
|
||||
|
||||
Core.prototype.init = function() {
|
||||
utils = new Utils();
|
||||
emoteModule = new EmoteModule();
|
||||
quickEmoteMenu = new QuickEmoteMenu();
|
||||
|
||||
emoteModule.init();
|
||||
emoteModule.observe();
|
||||
emoteModule.autoCapitalize();
|
||||
|
||||
//Tempt timeout, defer
|
||||
this.initSettings();
|
||||
this.initObserver();
|
||||
|
||||
//Temp timeout, defer
|
||||
setTimeout(function() {
|
||||
initSettings();
|
||||
|
||||
//Settings button
|
||||
$(".guilds li:first-child").after($("<li/>", {id:"tc-settings-li"}).append($("<div/>", { class: "guild-inner" }).append($("<a/>").append($("<div/>", { class: "avatar-small", id: "tc-settings-button", style: 'background-image:url("https://a96edc24045943bce10e086d4fdfb287582825b6.googledrive.com/host/0B4q1DpUVMKCofkgwdTRpWkxYdVhhdEdDYXdFa2V3eWJvbUJ5bHM3dHFDM21taHJJem5JaUU/settings_icon.png")' })))));
|
||||
|
||||
settingsPanel = new SettingsPanel();
|
||||
settingsPanel.init();
|
||||
quickEmoteMenu.init();
|
||||
quickEmoteMenu.init(false);
|
||||
|
||||
$("#tc-settings-button").on("click", function(e) { settingsPanel.show(); });
|
||||
|
||||
|
@ -70,21 +79,53 @@ Core.prototype.init = function() {
|
|||
|
||||
}
|
||||
|
||||
function initSettings() {
|
||||
function initSettings() {
|
||||
if(typeof($.cookie("better-discord")) === 'undefined') {
|
||||
settingsCookie = defaultCookie;
|
||||
$.cookie("better-discord", JSON.stringify(settingsCookie));
|
||||
} else {
|
||||
settingsCookie = JSON.parse($.cookie("better-discord"));
|
||||
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').indexOf("titlebar") != -1) {
|
||||
quickEmoteMenu.obsCallback();
|
||||
}
|
||||
|
||||
emoteModule.obsCallback(mutation);
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
mainObserver.observe(document, { childList: true, subtree: true });
|
||||
}
|
||||
|
||||
/* BetterDiscordApp EmoteModule JavaScript
|
||||
* Version: 1.2
|
||||
* Version: 1.3
|
||||
* Author: Jiiks | http://jiiks.net
|
||||
* Date: 26/08/2015 - 15:29
|
||||
* Last Update: 29/08/2015 - 11:46
|
||||
* https://github.com/Jiiks/BetterDiscordApp
|
||||
* Note: Due to conflicts autocapitalize only supports global emotes
|
||||
*/
|
||||
|
@ -102,24 +143,20 @@ function EmoteModule() {
|
|||
}
|
||||
|
||||
EmoteModule.prototype.init = function() {
|
||||
var self = this;
|
||||
this.emoteObserver = new MutationObserver(function(mutations) {
|
||||
mutations.forEach(function(mutation) {
|
||||
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) {
|
||||
self.injectEmote(nodes[node]);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
EmoteModule.prototype.observe = function() {
|
||||
this.emoteObserver.observe(document, { childList: true, subtree: true });
|
||||
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) {
|
||||
self.injectEmote(nodes[node]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
EmoteModule.prototype.getNodes = function(node) {
|
||||
|
@ -171,9 +208,12 @@ EmoteModule.prototype.autoCapitalize = function() {
|
|||
var self = this;
|
||||
console.log("autocap");
|
||||
$('body').delegate($(".channel-textarea-inner textarea"), 'keyup change paste', function() {
|
||||
if(!autoCapitalize) return;
|
||||
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());
|
||||
|
@ -209,31 +249,40 @@ PublicServers.prototype.init = function() {
|
|||
}
|
||||
|
||||
/* BetterDiscordApp QuickEmoteMenu JavaScript
|
||||
* Version: 1.1
|
||||
* Version: 1.2
|
||||
* Author: Jiiks | http://jiiks.net
|
||||
* Date: 26/08/2015 - 11:49
|
||||
* Last Update: 27/08/2015 - 13:43
|
||||
* 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 () {
|
||||
QuickEmoteMenu.prototype.init = function (reload) {
|
||||
console.log("quickemote init");
|
||||
emoteBtn = null;
|
||||
|
||||
if(!emoteMenu) {
|
||||
this.initEmoteList();
|
||||
}
|
||||
|
||||
var menuOpen;
|
||||
var emoteMenu = $("<div/>", { id: "emote-menu" });
|
||||
var emoteMenuHeader = $("<div/>", { id: "emote-menu-header" }).append($("<span/>", { text: "Global Emotes" }));
|
||||
var emoteMenuBody = $("<div/>", { id: "emote-menu-inner" });
|
||||
emoteMenu.append(emoteMenuHeader);
|
||||
emoteMenu.append(emoteMenuBody);
|
||||
var emoteBtn = $("<div/>", { id:"twitchcord-button-container", style:"display:none" }).append($("<button/>", { id: "twitchcord-button", onclick: "return false;" }));
|
||||
|
||||
|
||||
emoteBtn = $("<div/>", { id:"twitchcord-button-container", style:"display:none" }).append($("<button/>", { id: "twitchcord-button", onclick: "return false;" }));
|
||||
|
||||
$(".content.flex-spacer.flex-horizontal .flex-spacer.flex-vertical form").append(emoteBtn);
|
||||
|
||||
emoteMenu.detach();
|
||||
emoteBtn.append(emoteMenu);
|
||||
|
||||
$("#twitchcord-button").on("click", function() {
|
||||
menuOpen = !menuOpen;
|
||||
if(menuOpen) {
|
||||
|
@ -245,34 +294,59 @@ QuickEmoteMenu.prototype.init = function () {
|
|||
}
|
||||
});
|
||||
|
||||
if(settingsCookie["bda-es-qme"]) {
|
||||
if(settingsCookie["bda-es-0"]) {
|
||||
emoteBtn.show();
|
||||
}
|
||||
|
||||
if(!reload) {
|
||||
$(".emote-icon").on("click", function() {
|
||||
var emote = $(this).attr("id");
|
||||
var ta = $(".channel-textarea-inner textarea");
|
||||
ta.val(ta.val().slice(-1) == " " ? ta.val() + emote : ta.val() + " " + emote);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
QuickEmoteMenu.prototype.obsCallback = function() {
|
||||
if(!emoteBtn) return;
|
||||
if(!$(".content.flex-spacer.flex-horizontal .flex-spacer.flex-vertical form")) return;
|
||||
|
||||
tcbtn = $("#twitchcord-button-container");
|
||||
|
||||
if(tcbtn.parent().prop("tagName") == undefined) {
|
||||
quickEmoteMenu = new QuickEmoteMenu();
|
||||
quickEmoteMenu.init(true);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
QuickEmoteMenu.prototype.initEmoteList = function() {
|
||||
|
||||
emoteMenu = $("<div/>", { id: "emote-menu" });
|
||||
|
||||
var emoteMenuHeader = $("<div/>", { id: "emote-menu-header" }).append($("<span/>", { text: "Global Emotes" }));
|
||||
var emoteMenuBody = $("<div/>", { id: "emote-menu-inner" });
|
||||
emoteMenu.append(emoteMenuHeader);
|
||||
emoteMenu.append(emoteMenuBody);
|
||||
|
||||
for(var emote in globalEmotes) {
|
||||
var command = emote;
|
||||
var id = globalEmotes[emote];
|
||||
|
||||
emoteMenuBody.append($("<div/>" , { class: "emote-container" }).append($("<img/>", { class: "emote-icon", id: emote, src: "https://static-cdn.jtvnw.net/emoticons/v1/"+id+"/1.0", title: emote })));
|
||||
|
||||
}
|
||||
|
||||
$(".emote-icon").on("click", function() {
|
||||
var emote = $(this).attr("id");
|
||||
var ta = $(".channel-textarea-inner textarea");
|
||||
ta.val(ta.val().slice(-1) == " " ? ta.val() + emote : ta.val() + " " + emote);
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
/* BetterDiscordApp Settings Panel JavaScript
|
||||
* Version: 1.1
|
||||
* Version: 1.2
|
||||
* Author: Jiiks | http://jiiks.net
|
||||
* Date: 26/08/2015 - 11:54
|
||||
* Last Update: 26/08/2015 - 19:38
|
||||
* Last Update: 29/08/2015 - 11:47
|
||||
* https://github.com/Jiiks/BetterDiscordApp
|
||||
*/
|
||||
|
||||
var links = { "Check for updates": "#", "Jiiks.net": "http://jiiks.net", "Twitter": "http://twitter.com/jiiksi", "Github": "https://github.com/jiiks" };
|
||||
|
||||
function SettingsPanel() {
|
||||
|
||||
}
|
||||
|
@ -303,7 +377,7 @@ SettingsPanel.prototype.init = function() {
|
|||
})
|
||||
|
||||
var settingsFooter = $("<div/>", { id: "tc-settings-panel-footer" });
|
||||
settingsFooter.append($("<span/>", { id: "tc-about", text: "BetterDiscord v" + version + " by Jiiks | Settings are automatically saved." } ));
|
||||
settingsFooter.append($("<span/>", { id: "tc-about", text: "BDA v" + version + "(js "+jsVersion+") by Jiiks | Settings are automatically saved." } ));
|
||||
var tcLinks = $("<span/>", { id: "tc-links" });
|
||||
$.each(links, function(key, value) {
|
||||
tcLinks.append($("<a/>", { href: value, text: key }));
|
||||
|
@ -345,15 +419,14 @@ SettingsPanel.prototype.handler = function(e){
|
|||
swoff.addClass("active");
|
||||
}
|
||||
|
||||
$.cookie("better-discord", JSON.stringify(settingsCookie));
|
||||
|
||||
if(settingsCookie["bda-es-qme"]) {
|
||||
if(settingsCookie["bda-es-0"]) {
|
||||
$("#twitchcord-button-container").show();
|
||||
} else {
|
||||
$("#twitchcord-button-container").hide();
|
||||
}
|
||||
|
||||
autoCapitalize = settingsCookie["bda-es-ace"];
|
||||
core.saveSettings();
|
||||
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue