start cleanup
This commit is contained in:
parent
a12773e4fd
commit
3db34829d4
Binary file not shown.
|
@ -1,2 +0,0 @@
|
|||
#BetterDiscord
|
||||
BetterDiscord enhances Discord with several features
|
Binary file not shown.
|
@ -1,3 +0,0 @@
|
|||
.guilds {
|
||||
background:red !important;
|
||||
}
|
|
@ -1,199 +0,0 @@
|
|||
var emotesTwitch = null, emotesTwitchSub = null, emotesFfz = null, emotesBttv = null, emotesBttv2 = null;
|
||||
|
||||
var twitchEmoteUrlStart = "https://static-cdn.jtvnw.net/emoticons/v1/";
|
||||
var twitchEmoteUrlEnd = "/1.0";
|
||||
var ffzEmoteUrlStart = "https://cdn.frankerfacez.com/emoticon/";
|
||||
var ffzEmoteUrlEnd = "/1";
|
||||
var bttvEmoteUrlStart = "https://cdn.betterttv.net/emote/";
|
||||
var bttvEmoteUrlEnd = "/1x";
|
||||
|
||||
var _emoteModule;
|
||||
function EmoteModule() {
|
||||
|
||||
}
|
||||
|
||||
EmoteModule.prototype.init = function() {
|
||||
_emoteModule.loadEmoteData();
|
||||
};
|
||||
|
||||
EmoteModule.prototype.obsCallback = function(mutation) {
|
||||
var self = this;
|
||||
for(var i = 0 ; i < mutation.addedNodes.length ; ++i) {
|
||||
var next = mutation.addedNodes.item(i);
|
||||
if (next) {
|
||||
var nodes = self.getNodes(next);
|
||||
for(var node in nodes) {
|
||||
if (nodes.hasOwnProperty(node)) {
|
||||
self.injectEmote(nodes[node]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
EmoteModule.prototype.getNodes = function(node) {
|
||||
var next;
|
||||
var nodes = [];
|
||||
var treeWalker = document.createTreeWalker(node, NodeFilter.SHOW_TEXT, null, false);
|
||||
|
||||
while((next = treeWalker.nextNode()) != null) {
|
||||
nodes.push(next);
|
||||
}
|
||||
return nodes;
|
||||
};
|
||||
|
||||
EmoteModule.prototype.injectEmote = function(node) {
|
||||
|
||||
if (!node.parentElement) {
|
||||
return;
|
||||
}
|
||||
|
||||
var parent = node.parentElement;
|
||||
if (parent.tagName != "SPAN") {
|
||||
return;
|
||||
}
|
||||
if(!$(parent.parentElement).hasClass("markup") && !$(parent.parentElement).hasClass("message-content")) { return; }
|
||||
|
||||
var parentInnerHTML = parent.innerHTML;
|
||||
var words = parentInnerHTML.split(/\s+/g);
|
||||
if (!words) {
|
||||
return;
|
||||
}
|
||||
|
||||
words.some(function(word) {
|
||||
if (word.length < 4) {
|
||||
return;
|
||||
}
|
||||
if(emotesTwitch != null) {
|
||||
if (emotesTwitch.emotes.hasOwnProperty(word)) {
|
||||
var len = Math.round(word.length / 4);
|
||||
parentInnerHTML = parentInnerHTML.replace(word, '<img class="emote" alt="' + word.substr(0, len) + "\uFDD9" + word.substr(len, len) + "\uFDD9" + word.substr(len * 2, len) + "\uFDD9" + word.substr(len * 3) + '" src="' + twitchEmoteUrlStart + emotesTwitch.emotes[word].image_id + twitchEmoteUrlEnd + '" />');
|
||||
return;
|
||||
}
|
||||
}
|
||||
if(emotesTwitchSub != null) {
|
||||
if (emotesTwitchSub.hasOwnProperty(word)) {
|
||||
var len = Math.round(word.length / 4);
|
||||
parentInnerHTML = parentInnerHTML.replace(word, '<img class="emote" alt="' + word.substr(0, len) + "\uFDD9" + word.substr(len, len) + "\uFDD9" + word.substr(len * 2, len) + "\uFDD9" + word.substr(len * 3) + '" src="' + twitchEmoteUrlStart + emotesTwitchSub[word] + twitchEmoteUrlEnd + '" />');
|
||||
return;
|
||||
}
|
||||
}
|
||||
if(emotesFfz != null) {
|
||||
if(emotesFfz.hasOwnProperty(word)) {
|
||||
var len = Math.round(word.length / 4);
|
||||
parentInnerHTML = parentInnerHTML.replace(word, '<img class="emote" alt="' + word.substr(0, len) + "\uFDD9" + word.substr(len, len) + "\uFDD9" + word.substr(len * 2, len) + "\uFDD9" + word.substr(len * 3) + '" src="' + ffzEmoteUrlStart + emotesFfz[word] + ffzEmoteUrlEnd + '" />');
|
||||
return;
|
||||
}
|
||||
}
|
||||
if(emotesBttv != null) {
|
||||
if(emotesBttv.hasOwnProperty(word)) {
|
||||
var len = Math.round(word.length / 4);
|
||||
parentInnerHTML = parentInnerHTML.replace(word, '<img class="emote" alt="' + word.substr(0, len) + "\uFDD9" + word.substr(len, len) + "\uFDD9" + word.substr(len * 2, len) + "\uFDD9" + word.substr(len * 3) + '" src="' + bttvEmoteUrlStart + emotesBttv[word] + bttvEmoteUrlEnd + '" />');
|
||||
return;
|
||||
}
|
||||
}
|
||||
if(emotesBttv2 != null) {
|
||||
if(emotesBttv2.hasOwnProperty(word)) {
|
||||
var len = Math.round(word.length / 4);
|
||||
parentInnerHTML = parentInnerHTML.replace(word, '<img class="emote" alt="' + word.substr(0, len) + "\uFDD9" + word.substr(len, len) + "\uFDD9" + word.substr(len * 2, len) + "\uFDD9" + word.substr(len * 3) + '" src="' + bttvEmoteUrlStart + emotesBttv2[word] + bttvEmoteUrlEnd + '" />');
|
||||
return;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
parent.innerHTML = parentInnerHTML.replace(new RegExp("\uFDD9", "g"), "");
|
||||
};
|
||||
|
||||
EmoteModule.prototype.loadEmoteData = function(type) {
|
||||
if(_hash == null) {
|
||||
_utils.getHash(this.loadEmoteData);
|
||||
return;
|
||||
}
|
||||
|
||||
switch(type) {
|
||||
default:
|
||||
_emoteModule.loadEmoteData("twitch");
|
||||
break;
|
||||
case "twitch":
|
||||
_utils.log("Loading twitch global emotes");
|
||||
$.getJSON('https://twitchemotes.com/api_cache/v2/global.json', function(data) {
|
||||
_utils.log("Loaded twitch global emotes");
|
||||
emotesTwitch = data;
|
||||
_emoteModule.loadEmoteData("twitch-sub");
|
||||
});
|
||||
break;
|
||||
case "twitch-sub":
|
||||
emotesTwitchSub = {};
|
||||
_utils.log("Loading twitch subscriber emotes");
|
||||
$.getJSON('https://twitchemotes.com/api_cache/v2/subscriber.json', function(data) {
|
||||
$.each(data.channels, function(key, val){
|
||||
$.each(val.emotes, function(key, val) {
|
||||
emotesTwitchSub[val.code] = val.image_id;
|
||||
});
|
||||
});
|
||||
|
||||
_emoteModule.loadEmoteData("ffz");
|
||||
});
|
||||
break;
|
||||
case "ffz":
|
||||
emotesFfz = {};
|
||||
_utils.log("Loading FFZ emotes");
|
||||
$.getJSON('https://cdn.rawgit.com/Jiiks/BetterDiscordApp/'+_hash+'/data/emotedata_ffz.json', function(data) {
|
||||
emotesFfz = data;
|
||||
_emoteModule.loadEmoteData("bttv");
|
||||
});
|
||||
break;
|
||||
case "bttv":
|
||||
emotesBttv = {};
|
||||
_utils.log("Loading Basic BTTV emotes");
|
||||
$.getJSON('https://api.betterttv.net/2/emotes', function(data) {
|
||||
$.each(data.emotes, function(key, val) {
|
||||
emotesBttv[val.code] = val.id;
|
||||
});
|
||||
_emoteModule.loadEmoteData("bttv2");
|
||||
});
|
||||
break;
|
||||
case "bttv2":
|
||||
emotesBttv2 = {};
|
||||
_utils.log("Loading BTTV emotes");
|
||||
$.getJSON('https://cdn.rawgit.com/Jiiks/BetterDiscordApp/'+_hash+'/data/emotedata_bttv.json', function(data) {
|
||||
emotesBttv2 = data;
|
||||
});
|
||||
break;
|
||||
}
|
||||
};
|
||||
|
||||
var _utils;
|
||||
|
||||
var _hash = null;
|
||||
function Utils() {}
|
||||
|
||||
Utils.prototype.getHash = function(callback) {
|
||||
_utils.log("Getting HASH");
|
||||
$.getJSON("https://api.github.com/repos/Jiiks/BetterDiscordApp/commits/master", function(data){
|
||||
_hash = data.sha;
|
||||
_utils.log("HASH = " + _hash);
|
||||
callback();
|
||||
});
|
||||
};
|
||||
|
||||
Utils.prototype.log = function(message) {
|
||||
console.log("[BetterDiscord] - " + message);
|
||||
};
|
||||
|
||||
(function() {
|
||||
|
||||
_utils = new Utils();
|
||||
|
||||
_emoteModule = new EmoteModule();
|
||||
_emoteModule.init();
|
||||
|
||||
var mainObserver = new MutationObserver(function(mutations) {
|
||||
mutations.forEach(function(mutation) {
|
||||
_emoteModule.obsCallback(mutation);
|
||||
});
|
||||
});
|
||||
|
||||
mainObserver.observe(document, { childList: true, subtree: true });
|
||||
|
||||
})();
|
BIN
Firefox/icon.png
BIN
Firefox/icon.png
Binary file not shown.
Before Width: | Height: | Size: 16 KiB |
|
@ -1,14 +0,0 @@
|
|||
"use sctrict"
|
||||
|
||||
var pageMod = require('sdk/page-mod');
|
||||
var data = require("sdk/self").data;
|
||||
|
||||
function BdPageMod(options, callbacks) {
|
||||
pageMod.PageMod({
|
||||
include: '*.discordapp.com',
|
||||
contentScriptFile: [data.url('../data/js/jquery-2.1.4.min.js'), data.url('../data/js/main.js')],
|
||||
contentStyleFile: []
|
||||
});
|
||||
}
|
||||
|
||||
exports.BdPageMod = BdPageMod;
|
|
@ -1,9 +0,0 @@
|
|||
"use strict"
|
||||
|
||||
var _bdPagemod = require('./BdPageMod.js');
|
||||
|
||||
function BetterDiscord(args) {
|
||||
_bdPagemod = new _bdPagemod.BdPageMod();
|
||||
}
|
||||
|
||||
exports.BetterDiscord = BetterDiscord;
|
|
@ -1,9 +0,0 @@
|
|||
"use strict";
|
||||
|
||||
var _betterDiscord = require("./BetterDiscord.js");
|
||||
|
||||
function main(options, callbacks) {
|
||||
_betterDiscord = new _betterDiscord.BetterDiscord();
|
||||
}
|
||||
|
||||
exports.main = main;
|
|
@ -1,18 +0,0 @@
|
|||
{
|
||||
"title": "BetterDiscord",
|
||||
"name": "betterdiscord",
|
||||
"version": "0.0.3",
|
||||
"description": "BetterDiscord enhances Discord with several features",
|
||||
"main": "lib/main",
|
||||
"author": "JiCode",
|
||||
"engines": {
|
||||
"firefox": ">=40.*"
|
||||
},
|
||||
"license": "MIT",
|
||||
"keywords": [
|
||||
"jetpack"
|
||||
],
|
||||
"installs_allowed_from": [
|
||||
"https://betterdiscord.net"
|
||||
]
|
||||
}
|
|
@ -1,19 +0,0 @@
|
|||
var main = require("../");
|
||||
|
||||
exports["test main"] = function(assert) {
|
||||
assert.pass("Unit test running!");
|
||||
};
|
||||
|
||||
exports["test main async"] = function(assert, done) {
|
||||
assert.pass("async Unit test running!");
|
||||
done();
|
||||
};
|
||||
|
||||
exports["test dummy"] = function(assert, done) {
|
||||
main.dummy("foo", function(text) {
|
||||
assert.ok((text === "foo"), "Is the text actually 'foo'");
|
||||
done();
|
||||
});
|
||||
};
|
||||
|
||||
require("sdk/test").run(exports);
|
|
@ -100,8 +100,9 @@ var bttvEmoteUrlEnd = "/1x";
|
|||
var mainCore;
|
||||
|
||||
var settings = {
|
||||
"Show Error Modal": { "id": "bda-gs-9", "info": "Show a modal with plugin/theme errors on startup.", "implemented": true, "hidden": true, "cat": "core"},
|
||||
"Save logs locally": { "id": "bda-gs-0", "info": "Saves chat logs locally", "implemented": false, "hidden": false, "cat": "core"},
|
||||
"Public Servers": { "id": "bda-gs-1", "info": "Display public servers button", "implemented": false, "hidden": false, "cat": "core"},
|
||||
"Public Servers": { "id": "bda-gs-1", "info": "Display public servers button", "implemented": false, "hidden": false, "cat": "core"},
|
||||
"Minimal Mode": { "id": "bda-gs-2", "info": "Hide elements and reduce the size of elements.", "implemented": true, "hidden": false, "cat": "core"},
|
||||
"Voice Mode": { "id": "bda-gs-4", "info": "Only show voice chat", "implemented": true, "hidden": false, "cat": "core"},
|
||||
"Hide Channels": { "id": "bda-gs-3", "info": "Hide channels in minimal mode", "implemented": true, "hidden": false, "cat": "core"},
|
||||
|
@ -143,6 +144,7 @@ var defaultCookie = {
|
|||
"bda-gs-6": false,
|
||||
"bda-gs-7": false,
|
||||
"bda-gs-8": false,
|
||||
"bda-gs-9": true,
|
||||
"bda-es-0": true,
|
||||
"bda-es-1": true,
|
||||
"bda-es-2": true,
|
||||
|
|
|
@ -1,45 +0,0 @@
|
|||
@ECHO off
|
||||
|
||||
:prompt
|
||||
set /P c=Are you sure you want to uninstall BetterDiscord [Y/N]?
|
||||
echo.
|
||||
if /I "%c%" EQU "Y" goto :removeBetterDiscord
|
||||
if /I "%c%" EQU "N" goto :eof
|
||||
goto :prompt
|
||||
|
||||
:removeBetterDiscord
|
||||
echo Removing BetterDiscord...
|
||||
echo.
|
||||
|
||||
:: Delete %appdata%\BetterDiscord
|
||||
call:deleteFolder %appdata%\BetterDiscord
|
||||
|
||||
:: Remove BetterDiscord from all app versions
|
||||
for /d %%G in ("%localappdata%\Discord\app-*") do (
|
||||
call:deleteFolder "%%G\resources\node_modules\BetterDiscord"
|
||||
call:deleteFolder "%%G\resources\app"
|
||||
)
|
||||
|
||||
goto:end
|
||||
|
||||
:: Checks whether a folder exists and deletes it if it does
|
||||
:deleteFolder
|
||||
if exist "%~1" (
|
||||
@RD /S /Q "%~1"
|
||||
echo Folder "%~1" removed.
|
||||
) else (
|
||||
echo Folder "%~1" does not exist.
|
||||
)
|
||||
goto:eof
|
||||
|
||||
:end
|
||||
echo.
|
||||
echo Restarting Discord...
|
||||
taskkill /f /im Discord.exe 1>nul 2>nul
|
||||
"%localappdata%\Discord\Update.exe" --processStart Discord.exe
|
||||
|
||||
echo.
|
||||
echo BetterDiscord has been removed!
|
||||
echo.
|
||||
|
||||
pause
|
|
@ -1,68 +0,0 @@
|
|||
var fs = require('fs');
|
||||
var crypto = require('crypto');
|
||||
|
||||
function checksum (str, algorithm, encoding) {
|
||||
return crypto
|
||||
.createHash(algorithm || 'md5')
|
||||
.update(str, 'utf8')
|
||||
.digest(encoding || 'hex')
|
||||
}
|
||||
|
||||
|
||||
var dver = "0.0.283";
|
||||
|
||||
console.log("BetterDiscord Validator v0.1");
|
||||
|
||||
|
||||
var discordPath = process.env.LOCALAPPDATA + "/Discord/app-" + dver + "/resources";
|
||||
|
||||
exists(discordPath + "/app");
|
||||
exists(discordPath + "/app/app/index.js");
|
||||
|
||||
var bdPath = discordPath + "/node_modules/BetterDiscord";
|
||||
|
||||
exists(bdPath);
|
||||
exists(bdPath + "/package.json");
|
||||
exists(bdPath + "/betterdiscord.js");
|
||||
exists(bdPath + "/lib");
|
||||
exists(bdPath + "/lib/BetterDiscord.js");
|
||||
exists(bdPath + "/lib/config.json");
|
||||
exists(bdPath + "/lib/Utils.js");
|
||||
|
||||
|
||||
check(discordPath + "/app/app/index.js", "35CAB26E794CDA4123927F2DC932958B");
|
||||
check(bdPath + "/package.json", "26EF86E0910272D3ACA1B854D2F25340");
|
||||
check(bdPath + "/betterdiscord.js", "31DD3E3D37D6FD5F6C2784D06F1162C4");
|
||||
check(bdPath + "/lib/BetterDiscord.js", "84D281EDF38F945A5F6DFAAA2D951A6A");
|
||||
check(bdPath + "/lib/config.json", "9A6E146B64A2D2D459B081B910D60582");
|
||||
check(bdPath + "/lib/Utils.js", "FD1FFCE03E999B80636D200F78383BF8");
|
||||
|
||||
console.log("Everything seems to be fine");
|
||||
|
||||
|
||||
function exists(path) {
|
||||
|
||||
console.log("Checking for " + path);
|
||||
var exists = fs.existsSync(path);
|
||||
if(exists) {
|
||||
console.log(path + " exists");
|
||||
} else {
|
||||
console.log(path + " doesn't exists");
|
||||
process.exit();
|
||||
}
|
||||
}
|
||||
|
||||
function check(path, cm) {
|
||||
console.log("Checking " + path + " checksum");
|
||||
|
||||
var read = fs.readFileSync(path);
|
||||
|
||||
if(cm.toLowerCase() == checksum(read).toLowerCase()) {
|
||||
console.log(path + " checksum matches");
|
||||
} else {
|
||||
console.log(path + " checksum mismatch");
|
||||
console.log("Expected: " + cm + " Got: " + checksum(read));
|
||||
process.exit();
|
||||
}
|
||||
|
||||
}
|
|
@ -1,5 +0,0 @@
|
|||
{
|
||||
plugins: ["transform-remove-strict-mode"],
|
||||
presets: ["es2015"],
|
||||
sourceMap: false
|
||||
}
|
|
@ -1,99 +0,0 @@
|
|||
module.exports = grunt => {
|
||||
'use strict';
|
||||
|
||||
require('load-grunt-tasks')(grunt);
|
||||
|
||||
grunt.initConfig({
|
||||
requirejs: {
|
||||
compileProject: {
|
||||
options: {
|
||||
include: ['src/js/core'],
|
||||
out: 'intermediate/requirejs.js',
|
||||
optimize: 'none',
|
||||
paths: {
|
||||
'events': 'empty:',
|
||||
'electron': 'empty:'
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
babel: {
|
||||
dist: {
|
||||
files: [{
|
||||
src: ['intermediate/requirejs.js'],
|
||||
dest: 'intermediate/babel.js'
|
||||
}]
|
||||
}
|
||||
},
|
||||
replace: {
|
||||
dist: {
|
||||
options: {
|
||||
patterns: [{
|
||||
match: /\\n +/g,
|
||||
replacement: ''
|
||||
},{
|
||||
match: / +/g,
|
||||
replacement: ' '
|
||||
},{
|
||||
match: /\/*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*\/+/g,
|
||||
replacement: ''
|
||||
}]
|
||||
},
|
||||
files: [{
|
||||
expand: true, src: ['intermediate/babel.js'], dest: ''
|
||||
}]
|
||||
},
|
||||
nongreedy: {
|
||||
options: {
|
||||
patterns: [{
|
||||
match: /\\n +/g,
|
||||
replacement: ''
|
||||
},{
|
||||
match: / +/g,
|
||||
replacement: ' '
|
||||
},{
|
||||
match: /\/\*(.|[\r\n])*?\*\//g,
|
||||
replacement: ''
|
||||
}]
|
||||
},
|
||||
files: [{
|
||||
expand: true, src: ['intermediate/babel.js'], dest: ''
|
||||
}]
|
||||
}
|
||||
},
|
||||
amdclean: {
|
||||
options: {
|
||||
wrap: {
|
||||
start: '(function() {\n\n "use strict";\n\n var electron = require("electron");\n',
|
||||
end: '\n\n}());'
|
||||
},
|
||||
escodegen: {
|
||||
format: {
|
||||
indent: {
|
||||
style: ' ',
|
||||
base: 1
|
||||
}
|
||||
}
|
||||
},
|
||||
aggressiveOptimizations: true,
|
||||
transformAMDChecks: false
|
||||
},
|
||||
dist: {
|
||||
src: 'intermediate/babel.js',
|
||||
dest: 'dist/js/main.js'
|
||||
}
|
||||
|
||||
},
|
||||
clean: [
|
||||
'intermediate'
|
||||
]
|
||||
});
|
||||
|
||||
grunt.registerTask("js", [ "requirejs", "babel", "replace", "amdclean", "clean" ]);
|
||||
grunt.registerTask("js-noclean", [ "requirejs", "babel", "replace", "amdclean" ]);
|
||||
|
||||
grunt.registerTask("fastjs", ["requirejs", "babel", "replace:nongreedy", "amdclean", "clean" ]);
|
||||
grunt.registerTask("fastjs-noclean", ["requirejs", "babel", "replace:nongreedy", "amdclean" ]);
|
||||
|
||||
|
||||
};
|
|
@ -1 +0,0 @@
|
|||
v2 preview for external testers
|
|
@ -1,206 +0,0 @@
|
|||
(function() {
|
||||
|
||||
"use strict";
|
||||
|
||||
var electron = require("electron");
|
||||
var src_js_modules_observermodule, src_js_modules_modules, src_js_utils, src_js_api, src_js_plugin, src_js_event, src_js_core;
|
||||
var _createClass = function () {
|
||||
function defineProperties(target, props) {
|
||||
for (var i = 0; i < props.length; i++) {
|
||||
var descriptor = props[i];
|
||||
descriptor.enumerable = descriptor.enumerable || false;
|
||||
descriptor.configurable = true;
|
||||
if ('value' in descriptor)
|
||||
descriptor.writable = true;
|
||||
Object.defineProperty(target, descriptor.key, descriptor);
|
||||
}
|
||||
}
|
||||
return function (Constructor, protoProps, staticProps) {
|
||||
if (protoProps)
|
||||
defineProperties(Constructor.prototype, protoProps);
|
||||
if (staticProps)
|
||||
defineProperties(Constructor, staticProps);
|
||||
return Constructor;
|
||||
};
|
||||
}();
|
||||
function _classCallCheck(instance, Constructor) {
|
||||
if (!(instance instanceof Constructor)) {
|
||||
throw new TypeError('Cannot call a class as a function');
|
||||
}
|
||||
}
|
||||
src_js_modules_observermodule = function () {
|
||||
var Observer = function () {
|
||||
function Observer() {
|
||||
_classCallCheck(this, Observer);
|
||||
this.mutationObserver = new MutationObserver(this.observe);
|
||||
this.mutationObserver.observe(document, {
|
||||
childList: true,
|
||||
subtree: true
|
||||
});
|
||||
}
|
||||
_createClass(Observer, [{
|
||||
key: 'observe',
|
||||
value: function observe(mutations) {
|
||||
mutations.forEach(function (mutation) {
|
||||
BD.event.emit('raw-mutation', mutation);
|
||||
});
|
||||
}
|
||||
}]);
|
||||
return Observer;
|
||||
}();
|
||||
return new Observer();
|
||||
}();
|
||||
src_js_modules_modules = function (observerModule) {
|
||||
var modules = { observerModule: observerModule };
|
||||
return modules;
|
||||
}(src_js_modules_observermodule);
|
||||
src_js_utils = function () {
|
||||
var Utils = function () {
|
||||
function Utils() {
|
||||
_classCallCheck(this, Utils);
|
||||
}
|
||||
_createClass(Utils, [
|
||||
{
|
||||
key: 'log',
|
||||
value: function log(msg) {
|
||||
console.log('%c[BD] %c>> %c' + msg, 'color:#3e82e5; font-weight:700', 'color:#000; font-weight:700', '');
|
||||
}
|
||||
},
|
||||
{
|
||||
key: 'info',
|
||||
value: function info(msg) {
|
||||
console.info('%c[BD] %c>> %c' + msg, 'color:#3e82e5; font-weight:700', 'color:blue; font-weight:700', '');
|
||||
}
|
||||
},
|
||||
{
|
||||
key: 'warn',
|
||||
value: function warn(msg) {
|
||||
console.warn('%c[BD] %c>> %c' + msg, 'color:#3e82e5; font-weight:700', 'color:orange; font-weight:700', '');
|
||||
}
|
||||
},
|
||||
{
|
||||
key: 'err',
|
||||
value: function err(msg) {
|
||||
console.error('%c[BD] %c>> %c' + msg, 'color:#3e82e5; font-weight:700', 'color:red; font-weight:700', '');
|
||||
}
|
||||
},
|
||||
{
|
||||
key: 'dateString',
|
||||
get: function get() {
|
||||
return new Date().toLocaleString('en-GB');
|
||||
}
|
||||
},
|
||||
{
|
||||
key: 'timeString',
|
||||
get: function get() {
|
||||
return new Date().toTimeString().split(' ')[0];
|
||||
}
|
||||
}
|
||||
]);
|
||||
return Utils;
|
||||
}();
|
||||
return new Utils();
|
||||
}();
|
||||
src_js_api = function () {
|
||||
var Api = function Api() {
|
||||
_classCallCheck(this, Api);
|
||||
};
|
||||
return new Api();
|
||||
}();
|
||||
src_js_plugin = function () {
|
||||
var Plugin = function () {
|
||||
function Plugin(args) {
|
||||
_classCallCheck(this, Plugin);
|
||||
this.info = args;
|
||||
}
|
||||
_createClass(Plugin, [
|
||||
{
|
||||
key: 'author',
|
||||
get: function get() {
|
||||
return this.info.author;
|
||||
}
|
||||
},
|
||||
{
|
||||
key: 'name',
|
||||
get: function get() {
|
||||
return this.info.name;
|
||||
}
|
||||
},
|
||||
{
|
||||
key: 'version',
|
||||
get: function get() {
|
||||
return this.info.version;
|
||||
}
|
||||
}
|
||||
]);
|
||||
return Plugin;
|
||||
}();
|
||||
return Plugin;
|
||||
}();
|
||||
src_js_event = function () {
|
||||
var EventEmitter = new require('events').EventEmitter;
|
||||
var Event = function () {
|
||||
function Event() {
|
||||
_classCallCheck(this, Event);
|
||||
this.eventEmitter = new EventEmitter();
|
||||
}
|
||||
_createClass(Event, [
|
||||
{
|
||||
key: 'on',
|
||||
value: function on(eventName, callback) {
|
||||
this.eventEmitter.on(eventName, callback);
|
||||
}
|
||||
},
|
||||
{
|
||||
key: 'emit',
|
||||
value: function emit() {
|
||||
var _eventEmitter;
|
||||
(_eventEmitter = this.eventEmitter).emit.apply(_eventEmitter, arguments);
|
||||
}
|
||||
}
|
||||
]);
|
||||
return Event;
|
||||
}();
|
||||
return new Event();
|
||||
}();
|
||||
src_js_core = function (modules, utils, api, plugin, event) {
|
||||
var Core = function () {
|
||||
function Core(args) {
|
||||
_classCallCheck(this, Core);
|
||||
this.utils = utils;
|
||||
this.event = event;
|
||||
this.modules = modules;
|
||||
this.beta = true;
|
||||
this.alpha = true;
|
||||
this.plugin = plugin;
|
||||
}
|
||||
_createClass(Core, [
|
||||
{
|
||||
key: 'init',
|
||||
value: function init() {
|
||||
utils.log(this.__versionString + ' Initializing');
|
||||
}
|
||||
},
|
||||
{
|
||||
key: '__version',
|
||||
get: function get() {
|
||||
return '2.0.0';
|
||||
}
|
||||
},
|
||||
{
|
||||
key: '__versionString',
|
||||
get: function get() {
|
||||
return '' + this.__version + (this.alpha ? 'A' : this.beta ? 'B' : '');
|
||||
}
|
||||
}
|
||||
]);
|
||||
return Core;
|
||||
}();
|
||||
window.$B = function (s) {
|
||||
return $('[data-bd=' + s);
|
||||
};
|
||||
window.BD = new Core();
|
||||
BD.init();
|
||||
}(src_js_modules_modules, src_js_utils, src_js_api, src_js_plugin, src_js_event);
|
||||
|
||||
}());
|
|
@ -1,11 +0,0 @@
|
|||
{
|
||||
"core": {
|
||||
"version": "0.3.0"
|
||||
},
|
||||
"Core": {
|
||||
"Version": "0.3.0"
|
||||
},
|
||||
"cfg": {
|
||||
|
||||
}
|
||||
}
|
108
v2/lib/core.js
108
v2/lib/core.js
|
@ -1,108 +0,0 @@
|
|||
/* BetterDiscordApp Core
|
||||
* Version: 2:1.0
|
||||
* Author: Jiiks | https://jiiks.net
|
||||
* Date: 31/10/2016
|
||||
* Last Update: 31/10/2016
|
||||
* Github: https://github.com/Jiiks/BetterDiscordApp
|
||||
* Git: https://github.com/Jiiks/BetterDiscordApp.git
|
||||
* License: MIT
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
const
|
||||
_fs = require('fs'),
|
||||
_config = require('./config.json'),
|
||||
{ _utils } = require('./utils'),
|
||||
{ _logger } = require('./utils'),
|
||||
{ EOL } = require('os'),
|
||||
_os = require('os');
|
||||
|
||||
const _startDate = new Date();
|
||||
|
||||
var _cfg;
|
||||
|
||||
// Default configs if for some reason we don't receive config params
|
||||
const _defaults = {
|
||||
installPath: (_os.platform() === 'win32' ? process.env.APPDATA : _os.platform() === 'darwin' ? `${process.env.HOME}/Library/Preferences`: `/var/local`) + '/BetterDiscord/lib',
|
||||
dataPath: (_os.platform() === 'win32' ? process.env.APPDATA : _os.platform() === 'darwin' ? `${process.env.HOME}/Library/Preferences`: `/var/local`) + '/BetterDiscord/data',
|
||||
emotesEnabled: true
|
||||
};
|
||||
|
||||
const _resources = {
|
||||
"mainjs": {
|
||||
"path": "js",
|
||||
"filename": "main.js",
|
||||
"var": "window.BetterDiscord"
|
||||
},
|
||||
"jQuery": {
|
||||
"path": "vendor",
|
||||
"filename": "jquery-2.2.4.min.js",
|
||||
"var": "window.$ = window.jQuery"
|
||||
}
|
||||
};
|
||||
|
||||
var _self;
|
||||
|
||||
class Core {
|
||||
|
||||
constructor(args) {
|
||||
_self = this;
|
||||
this.continue = true;
|
||||
_logger.log(`v${this.__version} Loading - OS: ${_os.platform()}`);
|
||||
this.initConfig(args.cfg);
|
||||
}
|
||||
|
||||
initConfig(args) {
|
||||
_cfg = _config.cfg;
|
||||
_cfg.installPath = args.installPath || _defaults.installPath;
|
||||
_cfg.dataPath = args.dataPath || _defaults.dataPath;
|
||||
_cfg.emotesEnabled = args.emotesEnabled || _defaults.emotesEnabled;
|
||||
}
|
||||
|
||||
hook(mainWindow) {
|
||||
if(mainWindow === undefined) {
|
||||
this.exit("mainWindow is undefined!");
|
||||
return;
|
||||
}
|
||||
this.mainWindow = mainWindow;
|
||||
this.hookEvent('dom-ready', this.domReady);
|
||||
}
|
||||
|
||||
hookEvent(event, callback) {
|
||||
if(!this.continue) return;
|
||||
try {
|
||||
_logger.log(`Hooking ${event}`);
|
||||
this.mainWindow.webContents.on(event, callback);
|
||||
}catch(err) {
|
||||
this.exit(`Failed to hook event ${event}. Reason: ${err}`);
|
||||
}
|
||||
}
|
||||
|
||||
domReady() {
|
||||
for(var key in _resources) {
|
||||
var resource = _resources[key];
|
||||
_utils.requireJs(`${_cfg.installPath}/${resource.path}/${resource.filename}`, resource.var, _self.mainWindow);
|
||||
}
|
||||
|
||||
_self.pluginLoader();
|
||||
}
|
||||
|
||||
pluginLoader() {
|
||||
|
||||
}
|
||||
|
||||
exit(reason, severity) {
|
||||
this.continue = false;
|
||||
// TODO show an actual error dialog for user
|
||||
_logger.log(`Quitting. Reason: ${reason}`, severity || 2);
|
||||
_logger.save();
|
||||
}
|
||||
|
||||
get __version() {
|
||||
return _config.core.version;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
exports.BetterDiscord = Core;
|
|
@ -1 +0,0 @@
|
|||
module.exports = require('./core');
|
|
@ -1,2 +0,0 @@
|
|||
var BD = require('./main');
|
||||
var _bd = new BD.BetterDiscord({ cfg: { } });
|
105
v2/lib/utils.js
105
v2/lib/utils.js
|
@ -1,105 +0,0 @@
|
|||
/* BetterDiscordApp Utilities
|
||||
* Version: 2:1.0
|
||||
* Author: Jiiks | https://jiiks.net
|
||||
* Date: 31/10/2016
|
||||
* Last Update: 31/10/2016
|
||||
* Github: https://github.com/Jiiks/BetterDiscordApp
|
||||
* Git: https://github.com/Jiiks/BetterDiscordApp.git
|
||||
* License: MIT
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
class Utils {
|
||||
|
||||
//Get the latest commit hash from github
|
||||
getHash(callback) {
|
||||
this.download("api.github.com", "/repos/Jiiks/BetterDiscordApp/commits/master", data => {
|
||||
//TODO use the new soon to be implemented tryparse
|
||||
callback(JSON.parse(data).sha);
|
||||
});
|
||||
}
|
||||
|
||||
download(host, path, callback) {
|
||||
_logger.log(`Downloading Resource: ${host}${path}`);
|
||||
var options = {
|
||||
host: host,
|
||||
path: path,
|
||||
headers: this.headers
|
||||
};
|
||||
|
||||
_https.get(options, res => {
|
||||
var data = "";
|
||||
res.on('data', chunk => {
|
||||
data += chunk;
|
||||
});
|
||||
res.on('end', () => {
|
||||
callback(data);
|
||||
});
|
||||
}).on('error', () => {
|
||||
//TODO error logging
|
||||
callback(null);
|
||||
});
|
||||
}
|
||||
|
||||
requireJs(file, varstring, _window) {
|
||||
_logger.log(`Injecting file: ${file}`);
|
||||
_window.webContents.executeJavaScript(`${varstring} = require("${file}");`);
|
||||
}
|
||||
|
||||
//Returns a datestring: [DD/MM/YYYY - HH:MM:SS]
|
||||
get dateString() {
|
||||
var d = new Date();
|
||||
|
||||
return `${("00" + (d.getDate())).slice(-2)}/` +
|
||||
`${("00" + d.getMonth()).slice(-2)}/` +
|
||||
`${d.getFullYear()} - ` +
|
||||
`${("00" + d.getHours()).slice(-2)}:` +
|
||||
`${("00" + d.getMinutes()).slice(-2)}:` +
|
||||
`${("00" + d.getSeconds()).slice(-2)}`;
|
||||
}
|
||||
|
||||
get headers() {
|
||||
return { 'user-agent': 'Mozilla/5.0' };
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
class Logger {
|
||||
|
||||
constructor() {
|
||||
this.logs = "";
|
||||
}
|
||||
|
||||
log(msg, severity) {
|
||||
var l = `[BD|${this.severity(severity)}][${_utils.dateString}] >>> ${msg}`;
|
||||
console.log(l);
|
||||
this.logs += `${l}${EOL}`;
|
||||
}
|
||||
|
||||
save() {
|
||||
try {
|
||||
_fs.writeFileSync('logs.log', this.logs);
|
||||
}catch(err) {
|
||||
this.log("Failed to save logs! " + err, 2);
|
||||
}
|
||||
}
|
||||
|
||||
severity(severity) {
|
||||
return {
|
||||
0: "INF",
|
||||
1: "WRN",
|
||||
2: "ERR"
|
||||
}[severity||0];
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
const _utils = new Utils(),
|
||||
_logger = new Logger(),
|
||||
_fs = require('fs'),
|
||||
{EOL} = require('os'),
|
||||
_https = require('https');
|
||||
|
||||
exports._utils = _utils;
|
||||
exports._logger = _logger;
|
|
@ -1,23 +0,0 @@
|
|||
{
|
||||
"name": "betterdiscord",
|
||||
"description": "Discord enhancement project. v2 preview",
|
||||
"version": "0.3.0",
|
||||
"homepage": "https://github.com/Jiiks/BetterDiscordApp",
|
||||
"license": "MIT",
|
||||
"main": "lib/main.js",
|
||||
"devDependencies": {
|
||||
"grunt": "^0.4.5",
|
||||
"load-grunt-tasks": "^3.5.0",
|
||||
"grunt-requirejs": "^0.4.2",
|
||||
"grunt-amdclean": "^0.1.2",
|
||||
"grunt-babel": "^6.0.0",
|
||||
"babel-preset-es2015": "^6.9.0",
|
||||
"babel-plugin-transform-remove-strict-mode": "^0.0.2",
|
||||
"grunt-contrib-concat": "^1.0.1",
|
||||
"grunt-contrib-sass": "^1.0.0",
|
||||
"grunt-contrib-uglify": "^1.0.1",
|
||||
"grunt-contrib-cssmin": "^1.0.1",
|
||||
"grunt-contrib-clean": "^1.0.0",
|
||||
"grunt-replace": "^1.0.1"
|
||||
}
|
||||
}
|
|
@ -1,20 +0,0 @@
|
|||
/* BetterDiscordApp Client Api
|
||||
* Version: 2:1.0
|
||||
* Author: Jiiks | https://jiiks.net
|
||||
* Date: 31/10/2016
|
||||
* Last Update: 31/10/2016
|
||||
* Github: https://github.com/Jiiks/BetterDiscordApp
|
||||
* Git: https://github.com/Jiiks/BetterDiscordApp.git
|
||||
* License: MIT
|
||||
*/
|
||||
|
||||
|
||||
define(() => {
|
||||
|
||||
class Api {
|
||||
|
||||
}
|
||||
|
||||
return new Api();
|
||||
|
||||
});
|
|
@ -1,50 +0,0 @@
|
|||
/* BetterDiscordApp Client Core
|
||||
* Version: 2:1.0
|
||||
* Author: Jiiks | https://jiiks.net
|
||||
* Date: 31/10/2016
|
||||
* Last Update: 31/10/2016
|
||||
* Github: https://github.com/Jiiks/BetterDiscordApp
|
||||
* Git: https://github.com/Jiiks/BetterDiscordApp.git
|
||||
* License: MIT
|
||||
*/
|
||||
|
||||
|
||||
define([
|
||||
"./modules/modules",
|
||||
"./utils",
|
||||
"./api",
|
||||
"./plugin",
|
||||
"./event"
|
||||
], (modules, utils, api, plugin, event) => {
|
||||
|
||||
class Core {
|
||||
|
||||
constructor(args) {
|
||||
this.utils = utils;
|
||||
this.event = event;
|
||||
this.modules = modules;
|
||||
this.beta = true;
|
||||
this.alpha = true;
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
init() {
|
||||
utils.log(`${this.__versionString} Initializing`);
|
||||
}
|
||||
|
||||
get __version() {
|
||||
return "2.0.0";
|
||||
}
|
||||
|
||||
get __versionString() {
|
||||
return `${this.__version}${this.alpha ? "A" : this.beta ? "B" : ""}`;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
window.$B = s => { return $(`[data-bd=${s}`); };
|
||||
|
||||
window.BD = new Core();
|
||||
BD.init();
|
||||
|
||||
});
|
|
@ -1,33 +0,0 @@
|
|||
/* BetterDiscordApp Event emitter
|
||||
* Version: 2:1.0
|
||||
* Author: Jiiks | https://jiiks.net
|
||||
* Date: 31/10/2016
|
||||
* Last Update: 31/10/2016
|
||||
* Github: https://github.com/Jiiks/BetterDiscordApp
|
||||
* Git: https://github.com/Jiiks/BetterDiscordApp.git
|
||||
* License: MIT
|
||||
*/
|
||||
|
||||
|
||||
define(() => {
|
||||
|
||||
const EventEmitter = new require('events').EventEmitter;
|
||||
|
||||
class Event {
|
||||
|
||||
constructor() {
|
||||
this.eventEmitter = new EventEmitter;
|
||||
}
|
||||
|
||||
on(eventName, callback) {
|
||||
this.eventEmitter.on(eventName, callback);
|
||||
}
|
||||
|
||||
emit(...args) {
|
||||
this.eventEmitter.emit(...args);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return new Event();
|
||||
});
|
|
@ -1,20 +0,0 @@
|
|||
/* BetterDiscordApp Client Module Defines
|
||||
* Version: 2:1.0
|
||||
* Author: Jiiks | https://jiiks.net
|
||||
* Date: 31/10/2016
|
||||
* Last Update: 31/10/2016
|
||||
* Github: https://github.com/Jiiks/BetterDiscordApp
|
||||
* Git: https://github.com/Jiiks/BetterDiscordApp.git
|
||||
* License: MIT
|
||||
*/
|
||||
|
||||
define([
|
||||
"./observermodule"
|
||||
], (observerModule) => {
|
||||
|
||||
const modules = {
|
||||
observerModule: observerModule
|
||||
};
|
||||
|
||||
return modules;
|
||||
});
|
|
@ -1,34 +0,0 @@
|
|||
/* BetterDiscordApp Client Observer
|
||||
* Version: 2:1.0
|
||||
* Author: Jiiks | https://jiiks.net
|
||||
* Date: 31/10/2016
|
||||
* Last Update: 31/10/2016
|
||||
* Github: https://github.com/Jiiks/BetterDiscordApp
|
||||
* Git: https://github.com/Jiiks/BetterDiscordApp.git
|
||||
* License: MIT
|
||||
*/
|
||||
|
||||
define([], () => {
|
||||
|
||||
class Observer {
|
||||
|
||||
constructor() {
|
||||
this.mutationObserver = new MutationObserver(this.observe);
|
||||
this.mutationObserver.observe(document, {
|
||||
childList: true,
|
||||
subtree: true
|
||||
});
|
||||
}
|
||||
|
||||
observe(mutations) {
|
||||
|
||||
mutations.forEach(mutation => {
|
||||
BD.event.emit("raw-mutation", mutation);
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return new Observer();
|
||||
});
|
|
@ -1,36 +0,0 @@
|
|||
/* BetterDiscordApp Plugin base class
|
||||
* Version: 2:1.0
|
||||
* Author: Jiiks | https://jiiks.net
|
||||
* Date: 31/10/2016
|
||||
* Last Update: 31/10/2016
|
||||
* Github: https://github.com/Jiiks/BetterDiscordApp
|
||||
* Git: https://github.com/Jiiks/BetterDiscordApp.git
|
||||
* License: MIT
|
||||
*/
|
||||
|
||||
|
||||
define(() => {
|
||||
|
||||
class Plugin {
|
||||
|
||||
constructor(args) {
|
||||
this.info = args;
|
||||
}
|
||||
|
||||
get author() {
|
||||
return this.info.author;
|
||||
}
|
||||
|
||||
get name() {
|
||||
return this.info.name;
|
||||
}
|
||||
|
||||
get version() {
|
||||
return this.info.version;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
return Plugin;
|
||||
|
||||
});
|
|
@ -1,48 +0,0 @@
|
|||
/* BetterDiscordApp Client Utilities
|
||||
* Version: 2:1.0
|
||||
* Author: Jiiks | https://jiiks.net
|
||||
* Date: 04/11/2016
|
||||
* Last Update: 31/10/2016
|
||||
* Github: https://github.com/Jiiks/BetterDiscordApp
|
||||
* Git: https://github.com/Jiiks/BetterDiscordApp.git
|
||||
* License: MIT
|
||||
*/
|
||||
|
||||
|
||||
define(() => {
|
||||
|
||||
class Utils {
|
||||
|
||||
constructor() {
|
||||
|
||||
}
|
||||
|
||||
log(msg) {
|
||||
console.log(`%c[BD] %c>> %c${msg}`, 'color:#3e82e5; font-weight:700', 'color:#000; font-weight:700', '')
|
||||
}
|
||||
|
||||
info(msg) {
|
||||
console.info(`%c[BD] %c>> %c${msg}`, 'color:#3e82e5; font-weight:700', 'color:#3e82e5; font-weight:700', '')
|
||||
}
|
||||
|
||||
warn(msg) {
|
||||
console.warn(`%c[BD] %c>> %c${msg}`, 'color:#3e82e5; font-weight:700', 'color:orange; font-weight:700', '')
|
||||
}
|
||||
|
||||
err(msg) {
|
||||
console.error(`%c[BD] %c>> %c${msg}`, 'color:#3e82e5; font-weight:700', 'color:red; font-weight:700', '')
|
||||
}
|
||||
|
||||
get dateString() {
|
||||
return new Date().toLocaleString("en-GB");
|
||||
}
|
||||
|
||||
get timeString() {
|
||||
return new Date().toTimeString().split(' ')[0];
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return new Utils();
|
||||
|
||||
});
|
Loading…
Reference in New Issue