v0.1.5 core + v1.3 js release

Notes on releases page
https://github.com/Jiiks/BetterDiscordApp/releases/
This commit is contained in:
Jiiks 2015-10-26 07:27:55 +02:00
parent 0560bd4e8c
commit f17545e4b0
12 changed files with 630 additions and 218 deletions

View File

@ -24,7 +24,7 @@ Better Discord App enhances Discord desktop app with new features.
## Features ## Features
**Emotes:** **Emotes:**
BetterDiscord adds all [Twitch.tv](http://twitch.tv), some [FrankerFaceZ](http://frankerfacez.com)(~240 suggested emotes) and [BetterTTV](http://betterttv.net)(soon) emotes to Discord. BetterDiscord adds all [Twitch.tv](http://twitch.tv), some [FrankerFaceZ](http://frankerfacez.com)(~240 suggested emotes) and [BetterTTV](http://betterttv.net) emotes to Discord.
**Quick Emote Menu:** **Quick Emote Menu:**
Quick Emote Menu adds a menu for quickly adding twitch emotes. Quick Emote Menu adds a menu for quickly adding twitch emotes.
@ -38,6 +38,9 @@ Automatically completes/suggests emotes.(soon)
**Minimal Mode:** **Minimal Mode:**
Minimal mode makes elements smaller and hides certain elements. Minimal mode makes elements smaller and hides certain elements.
**Voice Chat Mode:**
Only display voice channels
**Public Servers:** **Public Servers:**
A menu for displaying public servers.(soon) [Serverlist](https://github.com/Jiiks/BetterDiscordApp/blob/master/serverlist.json) A menu for displaying public servers.(soon) [Serverlist](https://github.com/Jiiks/BetterDiscordApp/blob/master/serverlist.json)
@ -47,6 +50,10 @@ Save chatlogs locally.(soon)
## Adding you server to public servers ## Adding you server to public servers
Edit the [Serverlist](https://github.com/Jiiks/BetterDiscordApp/blob/master/serverlist.json) and submit a pull request. Edit the [Serverlist](https://github.com/Jiiks/BetterDiscordApp/blob/master/serverlist.json) and submit a pull request.
## BetterDiscord Uses the following API's
* https://twitchemotes.com/apidocs for Twitch emotes
* https://api.betterttv.net/emotes for [BetterTTV](https://nightdev.com/betterttv/) emotes
## License ## License
The MIT License (MIT) The MIT License (MIT)
@ -69,4 +76,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE. THE SOFTWARE.

View File

@ -1,13 +1,22 @@
/* BetterDiscordApp Core JavaScript /* BetterDiscordApp Core JavaScript
* Version: 1.4 * Version: 1.5
* Author: Jiiks | http://jiiks.net * Author: Jiiks | http://jiiks.net
* Date: 27/08/2015 - 16:36 * Date: 27/08/2015 - 16:36
* Last Update: 31/08/2015 - 16:17 * Last Update: 24/010/2015 - 17:27
* https://github.com/Jiiks/BetterDiscordApp * https://github.com/Jiiks/BetterDiscordApp
*/ */
var settingsPanel, emoteModule, utils, quickEmoteMenu; /*
var jsVersion = 1.2; * =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 mainObserver;
@ -18,29 +27,29 @@ var ffzEmoteUrlEnd = "/1";
var bttvEmoteUrlStart = ""; var bttvEmoteUrlStart = "";
var bttvEmoteUrlEnd = ""; var bttvEmoteUrlEnd = "";
var mainCore;
var settings = { var settings = {
"Save logs locally": { "id": "bda-gs-0", "info": "Saves chat logs locally", "implemented":false }, "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}, "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}, "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}, "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 }, "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 }, "FrankerFaceZ Emotes": { "id": "bda-es-1", "info": "Show FrankerFaceZ Emotes", "implemented":true },
"BetterTTV Emotes": { "id": "bda-es-2", "info": "Show BetterTTV Emotes", "implemented":false }, "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 Autocomplete": { "id": "bda-es-3", "info": "Autocomplete emote commands", "implemented":false },
"Emote Auto Capitalization": { "id": "bda-es-4", "info": "Autocapitalize emote commands", "implemented":true }, "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 } "Override Default Emotes": { "id": "bda-es-5", "info": "Override default emotes", "implemented":false }
}; };
var defaultCookie = { var defaultCookie = {
"version":jsVersion, "version":jsVersion,
"bda-gs-0":false, "bda-gs-0":false,
"bda-gs-1":true, "bda-gs-1":true,
"bda-gs-2":false, "bda-gs-2":false,
"bda-gs-3":false, "bda-gs-3":false,
"bda-gs-4":false,
"bda-es-0":true, "bda-es-0":true,
"bda-es-1":false, "bda-es-1":false,
"bda-es-2":false, "bda-es-2":false,
@ -51,15 +60,19 @@ var defaultCookie = {
var settingsCookie = {}; var settingsCookie = {};
function Core() { function Core() {}
}
Core.prototype.init = function() { 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(); utils = new Utils();
emoteModule = new EmoteModule(); emoteModule = new EmoteModule();
quickEmoteMenu = new QuickEmoteMenu(); quickEmoteMenu = new QuickEmoteMenu();
voiceMode = new VoiceMode();
emoteModule.init(); emoteModule.init();
emoteModule.autoCapitalize(); emoteModule.autoCapitalize();
@ -67,24 +80,37 @@ Core.prototype.init = function() {
this.initSettings(); this.initSettings();
this.initObserver(); this.initObserver();
function waitForGuildsWrapper() { //Incase were too fast
function gwDefer() {
console.log(new Date().getTime() + " Defer");
if($(".guilds-wrapper").size() > 0) { if($(".guilds-wrapper").size() > 0) {
$(".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" }))))); console.log(new Date().getTime() + " Defer Loaded");
var guilds = $(".guilds li:first-child");
guilds.after($("<li></li>", { id: "bd-pub-li", css: { "height": "20px", "display": settingsCookie["bda-gs-1"] == true ? "" : "none" } }).append($("<div/>", { class: "guild-inner", css: { "height": "20px", "border-radius": "4px" } }).append($("<a/>").append($("<div/>", { css: { "line-height": "20px", "font-size": "12px" }, text: "public", id: "bd-pub-button" })))));
guilds.after($("<li/>", {id:"tc-settings-li"}).append($("<div/>", { class: "guild-inner" }).append($("<a/>").append($("<div/>", { class: "avatar-small", id: "tc-settings-button" })))));
settingsPanel = new SettingsPanel(); settingsPanel = new SettingsPanel();
settingsPanel.init(); settingsPanel.init();
opublicServers = new PublicServers();
opublicServers.init();
quickEmoteMenu.init(false); quickEmoteMenu.init(false);
$("#tc-settings-button").on("click", function(e) { settingsPanel.show(); }); $("#tc-settings-button").on("click", function() { settingsPanel.show(); });
$("#bd-pub-button").on("click", function() { opublicServers.show(); });
} else { } else {
setTimeout(function() { setTimeout(gwDefer(), 100);
waitForGuildsWrapper();
}, 100);
} }
} }
waitForGuildsWrapper();
}
$(document).ready(function() {
setTimeout(gwDefer, 500);
});
};
Core.prototype.initSettings = function() { Core.prototype.initSettings = function() {
if($.cookie("better-discord") == undefined) { if($.cookie("better-discord") == undefined) {
@ -95,22 +121,20 @@ Core.prototype.initSettings = function() {
for(var setting in defaultCookie) { for(var setting in defaultCookie) {
if(settingsCookie[setting] == undefined) { if(settingsCookie[setting] == undefined) {
settingsCookie = defaultCookie; settingsCookie[setting] = defaultCookie[setting];
this.saveSettings(); this.saveSettings();
alert("BetterDiscord settings reset due to update/error");
break;
} }
} }
} }
} };
Core.prototype.saveSettings = function() { Core.prototype.saveSettings = function() {
$.cookie("better-discord", JSON.stringify(settingsCookie), { expires: 365, path: '/' }); $.cookie("better-discord", JSON.stringify(settingsCookie), { expires: 365, path: '/' });
} };
Core.prototype.loadSettings = function() { Core.prototype.loadSettings = function() {
settingsCookie = JSON.parse($.cookie("better-discord")); settingsCookie = JSON.parse($.cookie("better-discord"));
} };
Core.prototype.initObserver = function() { Core.prototype.initObserver = function() {
@ -126,5 +150,6 @@ Core.prototype.initObserver = function() {
}); });
}); });
//noinspection JSCheckFunctionSignatures
mainObserver.observe(document, { childList: true, subtree: true }); mainObserver.observe(document, { childList: true, subtree: true });
} };

View File

@ -1,5 +1,5 @@
/* BetterDiscordApp EmoteModule JavaScript /* BetterDiscordApp EmoteModule JavaScript
* Version: 1.4 * Version: 1.5
* Author: Jiiks | http://jiiks.net * Author: Jiiks | http://jiiks.net
* Date: 26/08/2015 - 15:29 * Date: 26/08/2015 - 15:29
* Last Update: 14/10/2015 - 09:48 * Last Update: 14/10/2015 - 09:48
@ -7,21 +7,23 @@
* Note: Due to conflicts autocapitalize only supports global emotes * Note: Due to conflicts autocapitalize only supports global emotes
*/ */
var autoCapitalize = true; /*
var ffzEnabled = false; * =Changelog=
var bttvEnabled = false; * -v1.5
* --Twitchemotes.com api
*/
var emotesFfz = {}; var emotesFfz = {};
var emotesBTTV = {}; var emotesBTTV = {};
var emotesTwitch = {":(":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 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"}; 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() { function EmoteModule() {}
} EmoteModule.prototype.init = function() {};
EmoteModule.prototype.init = function() {
}
EmoteModule.prototype.obsCallback = function(mutation) { EmoteModule.prototype.obsCallback = function(mutation) {
var self = this; var self = this;
@ -30,11 +32,13 @@ EmoteModule.prototype.obsCallback = function(mutation) {
if(next) { if(next) {
var nodes = self.getNodes(next); var nodes = self.getNodes(next);
for(var node in nodes) { for(var node in nodes) {
self.injectEmote(nodes[node]); if(nodes.hasOwnProperty(node)) {
self.injectEmote(nodes[node]);
}
} }
} }
} }
} };
EmoteModule.prototype.getNodes = function(node) { EmoteModule.prototype.getNodes = function(node) {
var next; var next;
@ -47,9 +51,9 @@ EmoteModule.prototype.getNodes = function(node) {
} }
return nodes; return nodes;
} };
//TODO Functional titles
EmoteModule.prototype.injectEmote = function(node) { EmoteModule.prototype.injectEmote = function(node) {
if(typeof emotesTwitch === 'undefined') return; if(typeof emotesTwitch === 'undefined') return;
@ -65,34 +69,50 @@ EmoteModule.prototype.injectEmote = function(node) {
if(!words) return; if(!words) return;
words.some(function(word) { words.some(function(word) {
if (emotesTwitch.hasOwnProperty(word)) {
parentInnerHTML = parentInnerHTML.replace(word, "<img src=" + twitchEmoteUrlStart + emotesTwitch[word] + twitchEmoteUrlEnd + "><\/img>"); if(emotesTwitch.emotes.hasOwnProperty(word)) {
} else if(typeof emotesFfz !== 'undefined' && settingsCookie["bda-es-1"]) { parentInnerHTML = parentInnerHTML.replace(word, "<img src=" + twitchEmoteUrlStart + emotesTwitch.emotes[word].image_id + twitchEmoteUrlEnd + " ><\/img>");
return;
}
if(typeof emotesFfz !== 'undefined' && settingsCookie["bda-es-1"]) {
if(emotesFfz.hasOwnProperty(word)) { if(emotesFfz.hasOwnProperty(word)) {
parentInnerHTML = parentInnerHTML.replace(word, "<img src=" + ffzEmoteUrlStart + emotesFfz[word] + ffzEmoteUrlEnd + "><\/img>"); parentInnerHTML = parentInnerHTML.replace(word, "<img src=" + ffzEmoteUrlStart + emotesFfz[word] + ffzEmoteUrlEnd + " ><\/img>");
} else if(typeof emotesBTTV !== 'undefined' && settingsCookie["bda-es-2"]) { return;
if(emotesBTTV.hasOwnProperty(word)) {
parentInnerHTML = parentInnerHTML.replace(word, "<img src=" + bttvEmoteUrlStart + emotesBTTV[word] + bttvEmoteUrlEnd + "><\/img>");
}
} }
} }
if(typeof emotesBTTV !== 'undefined' && settingsCookie["bda-es-2"]) {
if(emotesBTTV.hasOwnProperty(word)) {
parentInnerHTML = parentInnerHTML.replace(word, "<img src=" + emotesBTTV[word] + " ><\/img>");
return;
}
}
if (subEmotesTwitch.hasOwnProperty(word)) {
parentInnerHTML = parentInnerHTML.replace(word, "<img src=" + twitchEmoteUrlStart + subEmotesTwitch[word] + twitchEmoteUrlEnd + " ><\/img>");
}
}); });
if(parent.parentElement == null) return;
var oldHeight = parent.parentElement.offsetHeight; var oldHeight = parent.parentElement.offsetHeight;
parent.innerHTML = parentInnerHTML; parent.innerHTML = parentInnerHTML;
var newHeight = parent.parentElement.offsetHeight; var newHeight = parent.parentElement.offsetHeight;
var scrollPane = $($(".scroller.messages")[0]) //Scrollfix
var scrollPane = $(".scroller.messages").first();
scrollPane.scrollTop(scrollPane.scrollTop() + (newHeight - oldHeight)); scrollPane.scrollTop(scrollPane.scrollTop() + (newHeight - oldHeight));
} };
EmoteModule.prototype.autoCapitalize = function() { EmoteModule.prototype.autoCapitalize = function() {
var self = this; var self = this;
var textArea = $(".channel-textarea-inner textarea");
$('body').delegate($(".channel-textarea-inner textarea"), 'keyup change paste', function() { $('body').delegate(textArea, 'keyup change paste', function() {
if(!settingsCookie["bda-es-4"]) return; if(!settingsCookie["bda-es-4"]) return;
var text = $(".channel-textarea-inner textarea").val(); var text = textArea.val();
if(text == undefined) return; if(text == undefined) return;
@ -100,17 +120,15 @@ EmoteModule.prototype.autoCapitalize = function() {
if(lastWord.length > 3) { if(lastWord.length > 3) {
var ret = self.capitalize(lastWord.toLowerCase()); var ret = self.capitalize(lastWord.toLowerCase());
if(ret != null) { if(ret != null) {
$(".channel-textarea-inner textarea").val(text.replace(lastWord, ret)); textArea.val(text.replace(lastWord, ret));
} }
} }
}); });
};
}
EmoteModule.prototype.capitalize = function(value) { EmoteModule.prototype.capitalize = function(value) {
if(twitchAc.hasOwnProperty(value)) { if(twitchAc.hasOwnProperty(value)) {
return twitchAc[value]; return twitchAc[value];
} }
return null; return null;
} };

View File

@ -1,13 +1,22 @@
/* BetterDiscordApp Core JavaScript /* BetterDiscordApp Core JavaScript
* Version: 1.4 * Version: 1.5
* Author: Jiiks | http://jiiks.net * Author: Jiiks | http://jiiks.net
* Date: 27/08/2015 - 16:36 * Date: 27/08/2015 - 16:36
* Last Update: 31/08/2015 - 16:17 * Last Update: 24/010/2015 - 17:27
* https://github.com/Jiiks/BetterDiscordApp * https://github.com/Jiiks/BetterDiscordApp
*/ */
var settingsPanel, emoteModule, utils, quickEmoteMenu; /*
var jsVersion = 1.2; * =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 mainObserver;
@ -18,29 +27,29 @@ var ffzEmoteUrlEnd = "/1";
var bttvEmoteUrlStart = ""; var bttvEmoteUrlStart = "";
var bttvEmoteUrlEnd = ""; var bttvEmoteUrlEnd = "";
var mainCore;
var settings = { var settings = {
"Save logs locally": { "id": "bda-gs-0", "info": "Saves chat logs locally", "implemented":false }, "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}, "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}, "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}, "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 }, "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 }, "FrankerFaceZ Emotes": { "id": "bda-es-1", "info": "Show FrankerFaceZ Emotes", "implemented":true },
"BetterTTV Emotes": { "id": "bda-es-2", "info": "Show BetterTTV Emotes", "implemented":false }, "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 Autocomplete": { "id": "bda-es-3", "info": "Autocomplete emote commands", "implemented":false },
"Emote Auto Capitalization": { "id": "bda-es-4", "info": "Autocapitalize emote commands", "implemented":true }, "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 } "Override Default Emotes": { "id": "bda-es-5", "info": "Override default emotes", "implemented":false }
}; };
var defaultCookie = { var defaultCookie = {
"version":jsVersion, "version":jsVersion,
"bda-gs-0":false, "bda-gs-0":false,
"bda-gs-1":true, "bda-gs-1":true,
"bda-gs-2":false, "bda-gs-2":false,
"bda-gs-3":false, "bda-gs-3":false,
"bda-gs-4":false,
"bda-es-0":true, "bda-es-0":true,
"bda-es-1":false, "bda-es-1":false,
"bda-es-2":false, "bda-es-2":false,
@ -51,41 +60,57 @@ var defaultCookie = {
var settingsCookie = {}; var settingsCookie = {};
function Core() { function Core() {}
}
Core.prototype.init = function() { 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(); utils = new Utils();
emoteModule = new EmoteModule(); emoteModule = new EmoteModule();
quickEmoteMenu = new QuickEmoteMenu(); quickEmoteMenu = new QuickEmoteMenu();
voiceMode = new VoiceMode();
emoteModule.init(); emoteModule.init();
emoteModule.autoCapitalize();
this.initSettings(); this.initSettings();
this.initObserver(); this.initObserver();
//Temp //Incase were too fast
setTimeout(function() { function gwDefer() {
if($(".guilds-wrapper").size() > 0) { console.log(new Date().getTime() + " Defer");
$(".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" }))))); if($(".guilds-wrapper .guilds").children().length > 0) {
console.log(new Date().getTime() + " Defer Loaded");
var guilds = $(".guilds li:first-child");
guilds.after($("<li></li>", { id: "bd-pub-li", css: { "height": "20px", "display": settingsCookie["bda-gs-1"] == true ? "" : "none" } }).append($("<div/>", { class: "guild-inner", css: { "height": "20px", "border-radius": "4px" } }).append($("<a/>").append($("<div/>", { css: { "line-height": "20px", "font-size": "12px" }, text: "public", id: "bd-pub-button" })))));
guilds.after($("<li/>", {id:"tc-settings-li"}).append($("<div/>", { class: "guild-inner" }).append($("<a/>").append($("<div/>", { class: "avatar-small", id: "tc-settings-button" })))));
settingsPanel = new SettingsPanel(); settingsPanel = new SettingsPanel();
settingsPanel.init(); settingsPanel.init();
quickEmoteMenu.init(false); quickEmoteMenu.init(false);
$("#tc-settings-button").on("click", function(e) { settingsPanel.show(); }); $("#tc-settings-button").on("click", function() { settingsPanel.show(); });
$("#bd-pub-button").on("click", function() { opublicServers.show(); });
opublicServers = new PublicServers();
opublicServers.init();
emoteModule.autoCapitalize();
} else { } else {
setTimeout(function() { setTimeout(gwDefer, 100);
waitForGuildsWrapper();
}, 100);
} }
}, 3000); }
} $(document).ready(function() {
setTimeout(gwDefer, 1000);
});
};
Core.prototype.initSettings = function() { Core.prototype.initSettings = function() {
if($.cookie("better-discord") == undefined) { if($.cookie("better-discord") == undefined) {
@ -96,22 +121,20 @@ Core.prototype.initSettings = function() {
for(var setting in defaultCookie) { for(var setting in defaultCookie) {
if(settingsCookie[setting] == undefined) { if(settingsCookie[setting] == undefined) {
settingsCookie = defaultCookie; settingsCookie[setting] = defaultCookie[setting];
this.saveSettings(); this.saveSettings();
alert("BetterDiscord settings reset due to update/error");
break;
} }
} }
} }
} };
Core.prototype.saveSettings = function() { Core.prototype.saveSettings = function() {
$.cookie("better-discord", JSON.stringify(settingsCookie), { expires: 365, path: '/' }); $.cookie("better-discord", JSON.stringify(settingsCookie), { expires: 365, path: '/' });
} };
Core.prototype.loadSettings = function() { Core.prototype.loadSettings = function() {
settingsCookie = JSON.parse($.cookie("better-discord")); settingsCookie = JSON.parse($.cookie("better-discord"));
} };
Core.prototype.initObserver = function() { Core.prototype.initObserver = function() {
@ -127,11 +150,12 @@ Core.prototype.initObserver = function() {
}); });
}); });
//noinspection JSCheckFunctionSignatures
mainObserver.observe(document, { childList: true, subtree: true }); mainObserver.observe(document, { childList: true, subtree: true });
} };
/* BetterDiscordApp EmoteModule JavaScript /* BetterDiscordApp EmoteModule JavaScript
* Version: 1.4 * Version: 1.5
* Author: Jiiks | http://jiiks.net * Author: Jiiks | http://jiiks.net
* Date: 26/08/2015 - 15:29 * Date: 26/08/2015 - 15:29
* Last Update: 14/10/2015 - 09:48 * Last Update: 14/10/2015 - 09:48
@ -139,21 +163,23 @@ Core.prototype.initObserver = function() {
* Note: Due to conflicts autocapitalize only supports global emotes * Note: Due to conflicts autocapitalize only supports global emotes
*/ */
var autoCapitalize = true; /*
var ffzEnabled = false; * =Changelog=
var bttvEnabled = false; * -v1.5
* --Twitchemotes.com api
*/
var emotesFfz = {}; var emotesFfz = {};
var emotesBTTV = {}; var emotesBTTV = {};
var emotesTwitch = {":(":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 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"}; 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() { function EmoteModule() {}
} EmoteModule.prototype.init = function() {};
EmoteModule.prototype.init = function() {
}
EmoteModule.prototype.obsCallback = function(mutation) { EmoteModule.prototype.obsCallback = function(mutation) {
var self = this; var self = this;
@ -162,11 +188,13 @@ EmoteModule.prototype.obsCallback = function(mutation) {
if(next) { if(next) {
var nodes = self.getNodes(next); var nodes = self.getNodes(next);
for(var node in nodes) { for(var node in nodes) {
self.injectEmote(nodes[node]); if(nodes.hasOwnProperty(node)) {
self.injectEmote(nodes[node]);
}
} }
} }
} }
} };
EmoteModule.prototype.getNodes = function(node) { EmoteModule.prototype.getNodes = function(node) {
var next; var next;
@ -179,9 +207,9 @@ EmoteModule.prototype.getNodes = function(node) {
} }
return nodes; return nodes;
} };
//TODO Functional titles
EmoteModule.prototype.injectEmote = function(node) { EmoteModule.prototype.injectEmote = function(node) {
if(typeof emotesTwitch === 'undefined') return; if(typeof emotesTwitch === 'undefined') return;
@ -197,28 +225,44 @@ EmoteModule.prototype.injectEmote = function(node) {
if(!words) return; if(!words) return;
words.some(function(word) { words.some(function(word) {
if (emotesTwitch.hasOwnProperty(word)) {
parentInnerHTML = parentInnerHTML.replace(word, "<img src=" + twitchEmoteUrlStart + emotesTwitch[word] + twitchEmoteUrlEnd + "><\/img>"); if(emotesTwitch.emotes.hasOwnProperty(word)) {
} else if(typeof emotesFfz !== 'undefined' && settingsCookie["bda-es-1"]) { parentInnerHTML = parentInnerHTML.replace(word, "<img src=" + twitchEmoteUrlStart + emotesTwitch.emotes[word].image_id + twitchEmoteUrlEnd + " ><\/img>");
return;
}
if(typeof emotesFfz !== 'undefined' && settingsCookie["bda-es-1"]) {
if(emotesFfz.hasOwnProperty(word)) { if(emotesFfz.hasOwnProperty(word)) {
parentInnerHTML = parentInnerHTML.replace(word, "<img src=" + ffzEmoteUrlStart + emotesFfz[word] + ffzEmoteUrlEnd + "><\/img>"); parentInnerHTML = parentInnerHTML.replace(word, "<img src=" + ffzEmoteUrlStart + emotesFfz[word] + ffzEmoteUrlEnd + " ><\/img>");
} else if(typeof emotesBTTV !== 'undefined' && settingsCookie["bda-es-2"]) { return;
if(emotesBTTV.hasOwnProperty(word)) {
parentInnerHTML = parentInnerHTML.replace(word, "<img src=" + bttvEmoteUrlStart + emotesBTTV[word] + bttvEmoteUrlEnd + "><\/img>");
}
} }
} }
if(typeof emotesBTTV !== 'undefined' && settingsCookie["bda-es-2"]) {
if(emotesBTTV.hasOwnProperty(word)) {
parentInnerHTML = parentInnerHTML.replace(word, "<img src=" + emotesBTTV[word] + " ><\/img>");
return;
}
}
if (subEmotesTwitch.hasOwnProperty(word)) {
parentInnerHTML = parentInnerHTML.replace(word, "<img src=" + twitchEmoteUrlStart + subEmotesTwitch[word] + twitchEmoteUrlEnd + " ><\/img>");
}
}); });
if(parent.parentElement == null) return;
var oldHeight = parent.parentElement.offsetHeight; var oldHeight = parent.parentElement.offsetHeight;
parent.innerHTML = parentInnerHTML; parent.innerHTML = parentInnerHTML;
var newHeight = parent.parentElement.offsetHeight; var newHeight = parent.parentElement.offsetHeight;
var scrollPane = $($(".scroller.messages")[0]) //Scrollfix
var scrollPane = $(".scroller.messages").first();
scrollPane.scrollTop(scrollPane.scrollTop() + (newHeight - oldHeight)); scrollPane.scrollTop(scrollPane.scrollTop() + (newHeight - oldHeight));
} };
EmoteModule.prototype.autoCapitalize = function() { EmoteModule.prototype.autoCapitalize = function() {
var self = this; var self = this;
$('body').delegate($(".channel-textarea-inner textarea"), 'keyup change paste', function() { $('body').delegate($(".channel-textarea-inner textarea"), 'keyup change paste', function() {
@ -235,37 +279,157 @@ EmoteModule.prototype.autoCapitalize = function() {
$(".channel-textarea-inner textarea").val(text.replace(lastWord, ret)); $(".channel-textarea-inner textarea").val(text.replace(lastWord, ret));
} }
} }
}); });
};
}
EmoteModule.prototype.capitalize = function(value) { EmoteModule.prototype.capitalize = function(value) {
if(twitchAc.hasOwnProperty(value)) { if(twitchAc.hasOwnProperty(value)) {
return twitchAc[value]; return twitchAc[value];
} }
return null; return null;
} };
/* BetterDiscordApp PublicSevers JavaScripts
/* BetterDiscordApp PublicSevers JavaSctript
* Version: 1.0 * Version: 1.0
* Author: Jiiks | http://jiiks.net * Author: Jiiks | http://jiiks.net
* Date: 27/08/2015 - 14:16 * Date: 27/08/2015 - 14:16
* https://github.com/Jiiks/BetterDiscordApp * https://github.com/Jiiks/BetterDiscordApp
*/ */
var publicServers = { "servers": { "server": { "code": 0, "icon": null, "title": "title", "language": "EN", "description": "description" } } }; //for ide
function PublicServers() { function PublicServers() {
} }
PublicServers.prototype.getPanel = function() {
return this.container;
};
PublicServers.prototype.init = function() { PublicServers.prototype.init = function() {
} var self = this;
this.container = $("<div/>", {
id: "bd-ps-container",
style: "display:none"
});
var header = $("<div/>", {
id: "bd-ps-header"
});
$("<h2/>", {
text: "Public Servers"
}).appendTo(header);
$("<span/>", {
id: "bd-ps-close",
style:"cursor:pointer;",
text: "X"
}).appendTo(header);
header.appendTo(this.getPanel());
var psbody = $("<div/>", {
id: "bd-ps-body"
});
psbody.appendTo(this.getPanel());
var table = $("<table/>", {
border:"0"
});
var thead = $("<thead/>");
thead.appendTo(table);
var headers = $("<tr/>", {
}).append($("<th/>", {
text: "Name"
})).append($("<th/>", {
text: "Code"
})).append($("<th/>", {
text: "Language"
})).append($("<th/>", {
text: "Description"
}));
headers.appendTo(thead);
var tbody = $("<tbody/>", {
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 = $("<td/>").append($("<div/>", {
class: "bd-ps-description",
text: description
}));
var tr = $("<tr/>");
tr.append($("<td/>", {
text: title
}));
tr.append($("<td/>", {
css: {
"-webkit-user-select":"initial",
"user-select":"initial"
},
text: code
}));
tr.append($("<td/>", {
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 /* BetterDiscordApp QuickEmoteMenu JavaScript
* Version: 1.2 * Version: 1.3
* Author: Jiiks | http://jiiks.net * Author: Jiiks | http://jiiks.net
* Date: 26/08/2015 - 11:49 * Date: 26/08/2015 - 11:49
* Last Update: 29/08/2015 - 11:46 * Last Update: 29/08/2015 - 11:46
@ -274,14 +438,11 @@ PublicServers.prototype.init = function() {
var emoteBtn, emoteMenu; 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() { function QuickEmoteMenu() {
} }
QuickEmoteMenu.prototype.init = function (reload) { QuickEmoteMenu.prototype.init = function(reload) {
emoteBtn = null; emoteBtn = null;
@ -314,26 +475,27 @@ QuickEmoteMenu.prototype.init = function (reload) {
emoteBtn.show(); emoteBtn.show();
} }
$(".emote-icon").off(); var emoteIcon = $(".emote-icon");
$(".emote-icon").on("click", function() {
var emote = $(this).attr("id"); emoteIcon.off();
var ta = $(".channel-textarea-inner textarea"); emoteIcon.on("click", function() {
ta.val(ta.val().slice(-1) == " " ? ta.val() + emote : ta.val() + " " + emote); 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() { QuickEmoteMenu.prototype.obsCallback = function() {
if(!emoteBtn) return; if(!emoteBtn) return;
if(!$(".content.flex-spacer.flex-horizontal .flex-spacer.flex-vertical form")) return; if(!$(".content.flex-spacer.flex-horizontal .flex-spacer.flex-vertical form")) return;
tcbtn = $("#twitchcord-button-container"); var tcbtn = $("#twitchcord-button-container");
if(tcbtn.parent().prop("tagName") == undefined) { if(tcbtn.parent().prop("tagName") == undefined) {
quickEmoteMenu = new QuickEmoteMenu(); quickEmoteMenu = new QuickEmoteMenu();
quickEmoteMenu.init(true); quickEmoteMenu.init(true);
} }
};
}
QuickEmoteMenu.prototype.initEmoteList = function() { QuickEmoteMenu.prototype.initEmoteList = function() {
@ -344,13 +506,13 @@ QuickEmoteMenu.prototype.initEmoteList = function() {
emoteMenu.append(emoteMenuHeader); emoteMenu.append(emoteMenuHeader);
emoteMenu.append(emoteMenuBody); emoteMenu.append(emoteMenuBody);
for(var emote in globalEmotes) { for(var emote in emotesTwitch.emotes) {
var command = emote; if(emotesTwitch.emotes.hasOwnProperty(emote)) {
var id = globalEmotes[emote]; var id = emotesTwitch.emotes[emote].image_id;
emoteMenuBody.append($("<div/>" , { class: "emote-container" }).append($("<img/>", { class: "emote-icon", id: emote, alt: "", src: "https://static-cdn.jtvnw.net/emoticons/v1/"+id+"/1.0", title: emote })));
emoteMenuBody.append($("<div/>" , { class: "emote-container" }).append($("<img/>", { class: "emote-icon", id: emote, alt: "", src: "https://static-cdn.jtvnw.net/emoticons/v1/"+id+"/1.0", title: emote }))); }
} }
} };
/* BetterDiscordApp Settings Panel JavaScript /* BetterDiscordApp Settings Panel JavaScript
* Version: 1.3 * Version: 1.3
@ -368,11 +530,12 @@ function SettingsPanel() {
SettingsPanel.prototype.getPanel = function() { SettingsPanel.prototype.getPanel = function() {
return this.tcSettingsPanel; return this.tcSettingsPanel;
} };
SettingsPanel.prototype.init = function() { SettingsPanel.prototype.init = function() {
var self = this; var self = this;
var body = $("body");
this.tcSettingsPanel = $("<div/>", { id: "tc-settings-panel", style: "display:none" }); this.tcSettingsPanel = $("<div/>", { id: "tc-settings-panel", style: "display:none" });
this.getPanel().append($("<div/>", { id: "tc-settings-panel-header" }).append($("<h2/>", { text: "BetterDiscord - Settings" })).append($("<span/>", { id: "tc-settings-close", text: "X", style:"cursor:pointer;" }))); this.getPanel().append($("<div/>", { id: "tc-settings-panel-header" }).append($("<h2/>", { text: "BetterDiscord - Settings" })).append($("<span/>", { id: "tc-settings-close", text: "X", style:"cursor:pointer;" })));
@ -390,7 +553,7 @@ SettingsPanel.prototype.init = function() {
} }
settingsList.append($("<li/>").append($("<h2/>", { text: key})).append($("<span/>", { html: " - <span>" + value.info + "</span>" + (value.implemented == false ? '<span style="color:red"> Coming Soon</span>' : "") })).append($("<div/>", { class: value.implemented ? "tc-switch" : "tc-switch disabled", id: value.id }).append($("<span/>", { class: sof, text: "OFF" })).append($("<span/>", { class: son, text: "ON" })))); settingsList.append($("<li/>").append($("<h2/>", { text: key})).append($("<span/>", { html: " - <span>" + value.info + "</span>" + (value.implemented == false ? '<span style="color:red"> Coming Soon</span>' : "") })).append($("<div/>", { class: value.implemented ? "tc-switch" : "tc-switch disabled", id: value.id }).append($("<span/>", { class: sof, text: "OFF" })).append($("<span/>", { class: son, text: "ON" }))));
}) });
var settingsFooter = $("<div/>", { id: "tc-settings-panel-footer" }); var settingsFooter = $("<div/>", { id: "tc-settings-panel-footer" });
settingsFooter.append($("<span/>", { id: "tc-about", text: "BDA v" + version + "(js "+jsVersion+") by Jiiks | Settings are automatically saved." } )); settingsFooter.append($("<span/>", { id: "tc-about", text: "BDA v" + version + "(js "+jsVersion+") by Jiiks | Settings are automatically saved." } ));
@ -398,13 +561,13 @@ SettingsPanel.prototype.init = function() {
$.each(links, function(key, value) { $.each(links, function(key, value) {
tcLinks.append($("<a/>", { href: value, text: key, target: "_blank" })); tcLinks.append($("<a/>", { href: value, text: key, target: "_blank" }));
tcLinks.append($("<span/>", { text: " | " })); tcLinks.append($("<span/>", { text: " | " }));
}) });
settingsFooter.append(tcLinks); settingsFooter.append(tcLinks);
this.getPanel().append(settingsFooter); this.getPanel().append(settingsFooter);
$("body").append(this.getPanel()); body.append(this.getPanel());
$("#tc-settings-close").on("click", function(e) { self.show(); }); $("#tc-settings-close").on("click", function() { self.show(); });
$(".tc-switch").on("click", function() { self.handler($(this)) }); $(".tc-switch").on("click", function() { self.handler($(this)) });
if(settingsCookie["bda-es-0"]) { if(settingsCookie["bda-es-0"]) {
@ -414,25 +577,31 @@ SettingsPanel.prototype.init = function() {
} }
if(settingsCookie["bda-gs-2"]) { if(settingsCookie["bda-gs-2"]) {
$("body").addClass("bd-minimal"); body.addClass("bd-minimal");
} else { } else {
$("body").removeClass("bd-minimal"); body.removeClass("bd-minimal");
} }
if(settingsCookie["bda-gs-3"]) { if(settingsCookie["bda-gs-3"]) {
$("body").addClass("bd-minimal-chan"); body.addClass("bd-minimal-chan");
} else { } else {
$("body").removeClass("bd-minimal-chan"); body.removeClass("bd-minimal-chan");
} }
}
if(settingsCookie["bda-gs-4"]) {
voiceMode.enable();
}
};
SettingsPanel.prototype.show = function() { SettingsPanel.prototype.show = function() {
this.getPanel().toggle(); this.getPanel().toggle();
$("#tc-settings-li").removeClass(); var settingsLi = $("#tc-settings-li");
settingsLi.removeClass();
if(this.getPanel().is(":visible")) { if(this.getPanel().is(":visible")) {
$("#tc-settings-li").addClass("active"); settingsLi.addClass("active");
} }
} };
SettingsPanel.prototype.handler = function(e){ SettingsPanel.prototype.handler = function(e){
@ -469,9 +638,19 @@ SettingsPanel.prototype.handler = function(e){
} else { } else {
$("body").removeClass("bd-minimal-chan"); $("body").removeClass("bd-minimal-chan");
} }
if(settingsCookie["bda-gs-1"]) {
$("#bd-pub-li").show();
} else {
$("#bd-pub-li").hide();
}
if(settingsCookie["bda-gs-4"]){
voiceMode.enable();
} else {
voiceMode.disable();
}
mainCore.saveSettings(); mainCore.saveSettings();
} };
/* BetterDiscordApp Utilities JavaScript /* BetterDiscordApp Utilities JavaScript
* Version: 1.0 * Version: 1.0
@ -486,8 +665,37 @@ function Utils() {
Utils.prototype.getTextArea = function() { Utils.prototype.getTextArea = function() {
return $(".channel-textarea-inner textarea"); return $(".channel-textarea-inner textarea");
} };
Utils.prototype.jqDefer = function(fnc) { Utils.prototype.jqDefer = function(fnc) {
if(window.jQuery) { fnc(); } else { setTimeout(function() { this.jqDefer(fnc) }, 100) } if(window.jQuery) { fnc(); } else { setTimeout(function() { this.jqDefer(fnc) }, 100) }
};
/* BetterDiscordApp VoiceMode JavaScript
* Version: 1.0
* Author: Jiiks | http://jiiks.net
* Date: 25/10/2015 - 19:10
* https://github.com/Jiiks/BetterDiscordApp
*/
function VoiceMode() {
} }
VoiceMode.prototype.enable = function() {
$(".scroller.guild-channels ul").first().css("display", "none");
$(".scroller.guild-channels header").first().css("display", "none");
$(".flex-vertical.flex-spacer").first().css("overflow", "hidden");
$(".chat.flex-vertical.flex-spacer").first().css("visibility", "hidden").css("min-width", "0px");
$(".flex-vertical.channels-wrap").first().css("width", "100%");
$(".guild-header .btn.btn-hamburger").first().css("visibility", "hidden");
};
VoiceMode.prototype.disable = function() {
$(".scroller.guild-channels ul").first().css("display", "");
$(".scroller.guild-channels header").first().css("display", "");
$(".flex-vertical.flex-spacer").first().css("overflow", "");
$(".chat.flex-vertical.flex-spacer").first().css("visibility", "").css("min-width", "");
$(".flex-vertical.channels-wrap").first().css("width", "");
$(".guild-header .btn.btn-hamburger").first().css("visibility", "");
};

2
js/main.min.js vendored

File diff suppressed because one or more lines are too long

View File

@ -1,27 +1,138 @@
/* BetterDiscordApp PublicSevers JavaSctript /* BetterDiscordApp PublicSevers JavaScripts
* Version: 1.0 * Version: 1.0
* Author: Jiiks | http://jiiks.net * Author: Jiiks | http://jiiks.net
* Date: 27/08/2015 - 14:16 * Date: 27/08/2015 - 14:16
* https://github.com/Jiiks/BetterDiscordApp * https://github.com/Jiiks/BetterDiscordApp
*/ */
function PublicServers() { var publicServers = { "servers": { "server": { "code": 0, "icon": null, "title": "title", "language": "EN", "description": "description" } } }; //for ide
}
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() { function PublicServers() {
} }
PublicServers.prototype.getPanel = function() {
return this.container;
};
PublicServers.prototype.init = function() { PublicServers.prototype.init = function() {
} var self = this;
this.container = $("<div/>", {
id: "bd-ps-container",
style: "display:none"
});
var header = $("<div/>", {
id: "bd-ps-header"
});
$("<h2/>", {
text: "Public Servers"
}).appendTo(header);
$("<span/>", {
id: "bd-ps-close",
style:"cursor:pointer;",
text: "X"
}).appendTo(header);
header.appendTo(this.getPanel());
var psbody = $("<div/>", {
id: "bd-ps-body"
});
psbody.appendTo(this.getPanel());
var table = $("<table/>", {
border:"0"
});
var thead = $("<thead/>");
thead.appendTo(table);
var headers = $("<tr/>", {
}).append($("<th/>", {
text: "Name"
})).append($("<th/>", {
text: "Code"
})).append($("<th/>", {
text: "Language"
})).append($("<th/>", {
text: "Description"
}));
headers.appendTo(thead);
var tbody = $("<tbody/>", {
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 = $("<td/>").append($("<div/>", {
class: "bd-ps-description",
text: description
}));
var tr = $("<tr/>");
tr.append($("<td/>", {
text: title
}));
tr.append($("<td/>", {
css: {
"-webkit-user-select":"initial",
"user-select":"initial"
},
text: code
}));
tr.append($("<td/>", {
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");
}
};

View File

@ -1,5 +1,5 @@
/* BetterDiscordApp QuickEmoteMenu JavaScript /* BetterDiscordApp QuickEmoteMenu JavaScript
* Version: 1.2 * Version: 1.3
* Author: Jiiks | http://jiiks.net * Author: Jiiks | http://jiiks.net
* Date: 26/08/2015 - 11:49 * Date: 26/08/2015 - 11:49
* Last Update: 29/08/2015 - 11:46 * Last Update: 29/08/2015 - 11:46
@ -8,16 +8,13 @@
var emoteBtn, emoteMenu; 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() { function QuickEmoteMenu() {
} }
QuickEmoteMenu.prototype.init = function (reload) { QuickEmoteMenu.prototype.init = function() {
emoteBtn = null; var emoteBtn;
if(!emoteMenu) { if(!emoteMenu) {
this.initEmoteList(); this.initEmoteList();
@ -48,26 +45,27 @@ QuickEmoteMenu.prototype.init = function (reload) {
emoteBtn.show(); emoteBtn.show();
} }
$(".emote-icon").off(); var emoteIcon = $(".emote-icon");
$(".emote-icon").on("click", function() {
var emote = $(this).attr("id"); emoteIcon.off();
var ta = $(".channel-textarea-inner textarea"); emoteIcon.on("click", function() {
ta.val(ta.val().slice(-1) == " " ? ta.val() + emote : ta.val() + " " + emote); 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() { QuickEmoteMenu.prototype.obsCallback = function() {
if(!emoteBtn) return; if(!emoteBtn) return;
if(!$(".content.flex-spacer.flex-horizontal .flex-spacer.flex-vertical form")) return; if(!$(".content.flex-spacer.flex-horizontal .flex-spacer.flex-vertical form")) return;
tcbtn = $("#twitchcord-button-container"); var tcbtn = $("#twitchcord-button-container");
if(tcbtn.parent().prop("tagName") == undefined) { if(tcbtn.parent().prop("tagName") == undefined) {
quickEmoteMenu = new QuickEmoteMenu(); quickEmoteMenu = new QuickEmoteMenu();
quickEmoteMenu.init(true); quickEmoteMenu.init(true);
} }
};
}
QuickEmoteMenu.prototype.initEmoteList = function() { QuickEmoteMenu.prototype.initEmoteList = function() {
@ -78,10 +76,10 @@ QuickEmoteMenu.prototype.initEmoteList = function() {
emoteMenu.append(emoteMenuHeader); emoteMenu.append(emoteMenuHeader);
emoteMenu.append(emoteMenuBody); emoteMenu.append(emoteMenuBody);
for(var emote in globalEmotes) { for(var emote in emotesTwitch.emotes) {
var command = emote; if(emotesTwitch.emotes.hasOwnProperty(emote)) {
var id = globalEmotes[emote]; var id = emotesTwitch.emotes[emote].image_id;
emoteMenuBody.append($("<div/>" , { class: "emote-container" }).append($("<img/>", { class: "emote-icon", id: emote, alt: "", src: "https://static-cdn.jtvnw.net/emoticons/v1/"+id+"/1.0", title: emote })));
emoteMenuBody.append($("<div/>" , { class: "emote-container" }).append($("<img/>", { class: "emote-icon", id: emote, alt: "", src: "https://static-cdn.jtvnw.net/emoticons/v1/"+id+"/1.0", title: emote }))); }
} }
} };

View File

@ -14,11 +14,12 @@ function SettingsPanel() {
SettingsPanel.prototype.getPanel = function() { SettingsPanel.prototype.getPanel = function() {
return this.tcSettingsPanel; return this.tcSettingsPanel;
} };
SettingsPanel.prototype.init = function() { SettingsPanel.prototype.init = function() {
var self = this; var self = this;
var body = $("body");
this.tcSettingsPanel = $("<div/>", { id: "tc-settings-panel", style: "display:none" }); this.tcSettingsPanel = $("<div/>", { id: "tc-settings-panel", style: "display:none" });
this.getPanel().append($("<div/>", { id: "tc-settings-panel-header" }).append($("<h2/>", { text: "BetterDiscord - Settings" })).append($("<span/>", { id: "tc-settings-close", text: "X", style:"cursor:pointer;" }))); this.getPanel().append($("<div/>", { id: "tc-settings-panel-header" }).append($("<h2/>", { text: "BetterDiscord - Settings" })).append($("<span/>", { id: "tc-settings-close", text: "X", style:"cursor:pointer;" })));
@ -36,7 +37,7 @@ SettingsPanel.prototype.init = function() {
} }
settingsList.append($("<li/>").append($("<h2/>", { text: key})).append($("<span/>", { html: " - <span>" + value.info + "</span>" + (value.implemented == false ? '<span style="color:red"> Coming Soon</span>' : "") })).append($("<div/>", { class: value.implemented ? "tc-switch" : "tc-switch disabled", id: value.id }).append($("<span/>", { class: sof, text: "OFF" })).append($("<span/>", { class: son, text: "ON" })))); settingsList.append($("<li/>").append($("<h2/>", { text: key})).append($("<span/>", { html: " - <span>" + value.info + "</span>" + (value.implemented == false ? '<span style="color:red"> Coming Soon</span>' : "") })).append($("<div/>", { class: value.implemented ? "tc-switch" : "tc-switch disabled", id: value.id }).append($("<span/>", { class: sof, text: "OFF" })).append($("<span/>", { class: son, text: "ON" }))));
}) });
var settingsFooter = $("<div/>", { id: "tc-settings-panel-footer" }); var settingsFooter = $("<div/>", { id: "tc-settings-panel-footer" });
settingsFooter.append($("<span/>", { id: "tc-about", text: "BDA v" + version + "(js "+jsVersion+") by Jiiks | Settings are automatically saved." } )); settingsFooter.append($("<span/>", { id: "tc-about", text: "BDA v" + version + "(js "+jsVersion+") by Jiiks | Settings are automatically saved." } ));
@ -44,13 +45,13 @@ SettingsPanel.prototype.init = function() {
$.each(links, function(key, value) { $.each(links, function(key, value) {
tcLinks.append($("<a/>", { href: value, text: key, target: "_blank" })); tcLinks.append($("<a/>", { href: value, text: key, target: "_blank" }));
tcLinks.append($("<span/>", { text: " | " })); tcLinks.append($("<span/>", { text: " | " }));
}) });
settingsFooter.append(tcLinks); settingsFooter.append(tcLinks);
this.getPanel().append(settingsFooter); this.getPanel().append(settingsFooter);
$("body").append(this.getPanel()); body.append(this.getPanel());
$("#tc-settings-close").on("click", function(e) { self.show(); }); $("#tc-settings-close").on("click", function() { self.show(); });
$(".tc-switch").on("click", function() { self.handler($(this)) }); $(".tc-switch").on("click", function() { self.handler($(this)) });
if(settingsCookie["bda-es-0"]) { if(settingsCookie["bda-es-0"]) {
@ -60,25 +61,31 @@ SettingsPanel.prototype.init = function() {
} }
if(settingsCookie["bda-gs-2"]) { if(settingsCookie["bda-gs-2"]) {
$("body").addClass("bd-minimal"); body.addClass("bd-minimal");
} else { } else {
$("body").removeClass("bd-minimal"); body.removeClass("bd-minimal");
} }
if(settingsCookie["bda-gs-3"]) { if(settingsCookie["bda-gs-3"]) {
$("body").addClass("bd-minimal-chan"); body.addClass("bd-minimal-chan");
} else { } else {
$("body").removeClass("bd-minimal-chan"); body.removeClass("bd-minimal-chan");
} }
}
if(settingsCookie["bda-gs-4"]) {
voiceMode.enable();
}
};
SettingsPanel.prototype.show = function() { SettingsPanel.prototype.show = function() {
this.getPanel().toggle(); this.getPanel().toggle();
$("#tc-settings-li").removeClass(); var settingsLi = $("#tc-settings-li");
settingsLi.removeClass();
if(this.getPanel().is(":visible")) { if(this.getPanel().is(":visible")) {
$("#tc-settings-li").addClass("active"); settingsLi.addClass("active");
} }
} };
SettingsPanel.prototype.handler = function(e){ SettingsPanel.prototype.handler = function(e){
@ -115,6 +122,16 @@ SettingsPanel.prototype.handler = function(e){
} else { } else {
$("body").removeClass("bd-minimal-chan"); $("body").removeClass("bd-minimal-chan");
} }
if(settingsCookie["bda-gs-1"]) {
$("#bd-pub-li").show();
} else {
$("#bd-pub-li").hide();
}
if(settingsCookie["bda-gs-4"]){
voiceMode.enable();
} else {
voiceMode.disable();
}
mainCore.saveSettings(); mainCore.saveSettings();
} };

View File

@ -11,8 +11,8 @@ function Utils() {
Utils.prototype.getTextArea = function() { Utils.prototype.getTextArea = function() {
return $(".channel-textarea-inner textarea"); return $(".channel-textarea-inner textarea");
} };
Utils.prototype.jqDefer = function(fnc) { Utils.prototype.jqDefer = function(fnc) {
if(window.jQuery) { fnc(); } else { setTimeout(function() { this.jqDefer(fnc) }, 100) } if(window.jQuery) { fnc(); } else { setTimeout(function() { this.jqDefer(fnc) }, 100) }
} };

28
js/voicemode.js Normal file
View File

@ -0,0 +1,28 @@
/* BetterDiscordApp VoiceMode JavaScript
* Version: 1.0
* Author: Jiiks | http://jiiks.net
* Date: 25/10/2015 - 19:10
* https://github.com/Jiiks/BetterDiscordApp
*/
function VoiceMode() {
}
VoiceMode.prototype.enable = function() {
$(".scroller.guild-channels ul").first().css("display", "none");
$(".scroller.guild-channels header").first().css("display", "none");
$(".flex-vertical.flex-spacer").first().css("overflow", "hidden");
$(".chat.flex-vertical.flex-spacer").first().css("visibility", "hidden").css("min-width", "0px");
$(".flex-vertical.channels-wrap").first().css("width", "100%");
$(".guild-header .btn.btn-hamburger").first().css("visibility", "hidden");
};
VoiceMode.prototype.disable = function() {
$(".scroller.guild-channels ul").first().css("display", "");
$(".scroller.guild-channels header").first().css("display", "");
$(".flex-vertical.flex-spacer").first().css("overflow", "");
$(".chat.flex-vertical.flex-spacer").first().css("visibility", "").css("min-width", "");
$(".flex-vertical.channels-wrap").first().css("width", "");
$(".guild-header .btn.btn-hamburger").first().css("visibility", "");
};

View File

@ -127,7 +127,7 @@ BetterDiscord.prototype.start = function() {
//Css loaded, load main javascript //Css loaded, load main javascript
case 'loaded-css': case 'loaded-css':
self.getUtils().updateLoading("Loading Resources(js)", 30, 100); self.getUtils().updateLoading("Loading Resources(js)", 30, 100);
self.getUtils().injectJavaScriptSync("//" + _updater.CDN + "/Jiiks/BetterDiscordApp/"+_hash+"/jd/main.min.js", "loaded-js"); self.getUtils().injectJavaScriptSync("//" + _updater.CDN + "/Jiiks/BetterDiscordApp/"+_hash+"/js/main.min.js", "loaded-js");
break; break;
//Main javascript loaded, load public servers //Main javascript loaded, load public servers
case 'loaded-js': case 'loaded-js':

View File

@ -1,4 +1,4 @@
{ {
"LatestVersion":"0.1.3", "LatestVersion":"0.1.5",
"CDN":"cdn.rawgit.com" "CDN":"cdn.rawgit.com"
} }