Fix freezing api and add updater css
This commit is contained in:
parent
32bf2be211
commit
5780cc23c2
31
.travis.yml
31
.travis.yml
|
@ -1,31 +0,0 @@
|
||||||
language: node_js
|
|
||||||
|
|
||||||
node_js:
|
|
||||||
- "node"
|
|
||||||
|
|
||||||
git:
|
|
||||||
autocrlf: true
|
|
||||||
|
|
||||||
branches:
|
|
||||||
only:
|
|
||||||
- development
|
|
||||||
|
|
||||||
install:
|
|
||||||
- npm ci
|
|
||||||
|
|
||||||
script:
|
|
||||||
- npm run lint-prod
|
|
||||||
- npm run test-prod
|
|
||||||
- npm run deploy
|
|
||||||
|
|
||||||
before_deploy: "echo 'node_modules' > .gitignore"
|
|
||||||
deploy:
|
|
||||||
provider: pages
|
|
||||||
skip_cleanup: true
|
|
||||||
github_token: $TRAVIS_ACCESS
|
|
||||||
keep_history: true
|
|
||||||
local_dir: .
|
|
||||||
name: BetterDiscord Deployment
|
|
||||||
target_branch: gh-pages-development
|
|
||||||
on:
|
|
||||||
branch: development
|
|
|
@ -6,7 +6,11 @@ import BdApi from "./modules/api/index";
|
||||||
|
|
||||||
// Perform some setup
|
// Perform some setup
|
||||||
secure();
|
secure();
|
||||||
window.BdApi = BdApi;
|
Object.defineProperty(window, "BdApi", {
|
||||||
|
value: BdApi,
|
||||||
|
writable: false,
|
||||||
|
configurable: false
|
||||||
|
});
|
||||||
window.global = window;
|
window.global = window;
|
||||||
|
|
||||||
// Add loading icon at the bottom right
|
// Add loading icon at the bottom right
|
||||||
|
|
|
@ -8,11 +8,11 @@ import DataStore from "../datastore";
|
||||||
*/
|
*/
|
||||||
class Data {
|
class Data {
|
||||||
|
|
||||||
|
#callerName = "";
|
||||||
|
|
||||||
constructor(callerName) {
|
constructor(callerName) {
|
||||||
if (!callerName) return;
|
if (!callerName) return;
|
||||||
this.save = this.save.bind(this, callerName);
|
this.#callerName = callerName;
|
||||||
this.load = this.load.bind(this, callerName);
|
|
||||||
this.delete = this.delete.bind(this, callerName);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -24,6 +24,11 @@ class Data {
|
||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
save(pluginName, key, data) {
|
save(pluginName, key, data) {
|
||||||
|
if (this.#callerName) {
|
||||||
|
data = key;
|
||||||
|
key = pluginName;
|
||||||
|
pluginName = this.#callerName;
|
||||||
|
}
|
||||||
return DataStore.setPluginData(pluginName, key, data);
|
return DataStore.setPluginData(pluginName, key, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -34,8 +39,12 @@ class Data {
|
||||||
* @param {string} key Which piece of data to load
|
* @param {string} key Which piece of data to load
|
||||||
* @returns {any} The stored data
|
* @returns {any} The stored data
|
||||||
*/
|
*/
|
||||||
load(pluginName, key, data) {
|
load(pluginName, key) {
|
||||||
return DataStore.setPluginData(pluginName, key, data);
|
if (this.#callerName) {
|
||||||
|
key = pluginName;
|
||||||
|
pluginName = this.#callerName;
|
||||||
|
}
|
||||||
|
return DataStore.getPluginData(pluginName, key);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -44,12 +53,16 @@ class Data {
|
||||||
* @param {string} pluginName Name of the plugin deleting data
|
* @param {string} pluginName Name of the plugin deleting data
|
||||||
* @param {string} key Which piece of data to delete
|
* @param {string} key Which piece of data to delete
|
||||||
*/
|
*/
|
||||||
delete(pluginName, key, data) {
|
delete(pluginName, key) {
|
||||||
return DataStore.setPluginData(pluginName, key, data);
|
if (this.#callerName) {
|
||||||
|
key = pluginName;
|
||||||
|
pluginName = this.#callerName;
|
||||||
|
}
|
||||||
|
return DataStore.deletePluginData(pluginName, key);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Object.freeze(Data);
|
Object.freeze(Data);
|
||||||
|
Object.freeze(Data.prototype);
|
||||||
export default Data;
|
export default Data;
|
|
@ -14,10 +14,11 @@ class DOM {
|
||||||
/** Document/window height */
|
/** Document/window height */
|
||||||
get screenHeight() {return Math.max(document.documentElement.clientHeight, window.innerHeight || 0);}
|
get screenHeight() {return Math.max(document.documentElement.clientHeight, window.innerHeight || 0);}
|
||||||
|
|
||||||
|
#callerName = "";
|
||||||
|
|
||||||
constructor(callerName) {
|
constructor(callerName) {
|
||||||
if (!callerName) return;
|
if (!callerName) return;
|
||||||
this.addStyle = this.addStyle.bind(this, callerName);
|
this.#callerName = callerName;
|
||||||
this.removeStyle = this.removeStyle.bind(this, callerName);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -27,10 +28,14 @@ class DOM {
|
||||||
* @param {string} css CSS to apply to the document
|
* @param {string} css CSS to apply to the document
|
||||||
*/
|
*/
|
||||||
addStyle(id, css) {
|
addStyle(id, css) {
|
||||||
if (arguments.length === 3) {
|
if (this.#callerName && arguments.length === 2) {
|
||||||
id = arguments[1];
|
id = arguments[1];
|
||||||
css = arguments[2];
|
css = arguments[2];
|
||||||
}
|
}
|
||||||
|
else if (this.#callerName) {
|
||||||
|
css = id;
|
||||||
|
id = this.#callerName;
|
||||||
|
}
|
||||||
|
|
||||||
DOMManager.injectStyle(id, css);
|
DOMManager.injectStyle(id, css);
|
||||||
}
|
}
|
||||||
|
@ -41,7 +46,13 @@ class DOM {
|
||||||
* @param {string} id ID uses for the style element
|
* @param {string} id ID uses for the style element
|
||||||
*/
|
*/
|
||||||
removeStyle(id) {
|
removeStyle(id) {
|
||||||
if (arguments.length === 2) id = arguments[1];
|
if (this.#callerName && arguments.length === 1) {
|
||||||
|
id = arguments[1];
|
||||||
|
}
|
||||||
|
else if (this.#callerName) {
|
||||||
|
id = this.#callerName;
|
||||||
|
}
|
||||||
|
|
||||||
DOMManager.removeStyle(id);
|
DOMManager.removeStyle(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -97,5 +108,5 @@ class DOM {
|
||||||
}
|
}
|
||||||
|
|
||||||
Object.freeze(DOM);
|
Object.freeze(DOM);
|
||||||
|
Object.freeze(DOM.prototype);
|
||||||
export default DOM;
|
export default DOM;
|
|
@ -10,13 +10,10 @@ import {default as MainPatcher} from "../patcher";
|
||||||
*/
|
*/
|
||||||
class Patcher {
|
class Patcher {
|
||||||
|
|
||||||
|
#callerName = "";
|
||||||
constructor(callerName) {
|
constructor(callerName) {
|
||||||
if (!callerName) return;
|
if (!callerName) return;
|
||||||
this.before = this.before.bind(this, callerName);
|
this.#callerName = callerName;
|
||||||
this.instead = this.instead.bind(this, callerName);
|
|
||||||
this.after = this.after.bind(this, callerName);
|
|
||||||
this.getPatchesByCaller = this.getPatchesByCaller.bind(this, callerName);
|
|
||||||
this.unpatchAll = this.unpatchAll.bind(this, callerName);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -29,6 +26,12 @@ class Patcher {
|
||||||
* @returns {function} Function that cancels the original patch.
|
* @returns {function} Function that cancels the original patch.
|
||||||
*/
|
*/
|
||||||
before(caller, moduleToPatch, functionName, callback) {
|
before(caller, moduleToPatch, functionName, callback) {
|
||||||
|
if (this.#callerName) {
|
||||||
|
callback = functionName;
|
||||||
|
functionName = moduleToPatch;
|
||||||
|
moduleToPatch = caller;
|
||||||
|
caller = this.#callerName;
|
||||||
|
}
|
||||||
return MainPatcher.pushChildPatch(caller, moduleToPatch, functionName, callback, {type: "before"});
|
return MainPatcher.pushChildPatch(caller, moduleToPatch, functionName, callback, {type: "before"});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -42,6 +45,12 @@ class Patcher {
|
||||||
* @returns {function} Function that cancels the original patch.
|
* @returns {function} Function that cancels the original patch.
|
||||||
*/
|
*/
|
||||||
instead(caller, moduleToPatch, functionName, callback) {
|
instead(caller, moduleToPatch, functionName, callback) {
|
||||||
|
if (this.#callerName) {
|
||||||
|
callback = functionName;
|
||||||
|
functionName = moduleToPatch;
|
||||||
|
moduleToPatch = caller;
|
||||||
|
caller = this.#callerName;
|
||||||
|
}
|
||||||
return MainPatcher.pushChildPatch(caller, moduleToPatch, functionName, callback, {type: "instead"});
|
return MainPatcher.pushChildPatch(caller, moduleToPatch, functionName, callback, {type: "instead"});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -55,6 +64,12 @@ class Patcher {
|
||||||
* @returns {function} Function that cancels the original patch.
|
* @returns {function} Function that cancels the original patch.
|
||||||
*/
|
*/
|
||||||
after(caller, moduleToPatch, functionName, callback) {
|
after(caller, moduleToPatch, functionName, callback) {
|
||||||
|
if (this.#callerName) {
|
||||||
|
callback = functionName;
|
||||||
|
functionName = moduleToPatch;
|
||||||
|
moduleToPatch = caller;
|
||||||
|
caller = this.#callerName;
|
||||||
|
}
|
||||||
return MainPatcher.pushChildPatch(caller, moduleToPatch, functionName, callback, {type: "after"});
|
return MainPatcher.pushChildPatch(caller, moduleToPatch, functionName, callback, {type: "after"});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -64,6 +79,7 @@ class Patcher {
|
||||||
* @returns {Array<function>} Array of all the patch objects.
|
* @returns {Array<function>} Array of all the patch objects.
|
||||||
*/
|
*/
|
||||||
getPatchesByCaller(caller) {
|
getPatchesByCaller(caller) {
|
||||||
|
if (this.#callerName) caller = this.#callerName;
|
||||||
if (typeof(caller) !== "string") return Logger.err("BdApi.Patcher", "Parameter 0 of getPatchesByCaller must be a string representing the caller");
|
if (typeof(caller) !== "string") return Logger.err("BdApi.Patcher", "Parameter 0 of getPatchesByCaller must be a string representing the caller");
|
||||||
return MainPatcher.getPatchesByCaller(caller);
|
return MainPatcher.getPatchesByCaller(caller);
|
||||||
}
|
}
|
||||||
|
@ -73,11 +89,12 @@ class Patcher {
|
||||||
* @param {string} caller ID of the original patches
|
* @param {string} caller ID of the original patches
|
||||||
*/
|
*/
|
||||||
unpatchAll(caller) {
|
unpatchAll(caller) {
|
||||||
|
if (this.#callerName) caller = this.#callerName;
|
||||||
if (typeof(caller) !== "string") return Logger.err("BdApi.Patcher", "Parameter 0 of unpatchAll must be a string representing the caller");
|
if (typeof(caller) !== "string") return Logger.err("BdApi.Patcher", "Parameter 0 of unpatchAll must be a string representing the caller");
|
||||||
MainPatcher.unpatchAll(caller);
|
MainPatcher.unpatchAll(caller);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Object.freeze(Patcher);
|
Object.freeze(Patcher);
|
||||||
|
Object.freeze(Patcher.prototype);
|
||||||
export default Patcher;
|
export default Patcher;
|
|
@ -0,0 +1,23 @@
|
||||||
|
.bd-filled-checkmark {
|
||||||
|
background: #43B581;
|
||||||
|
border-radius: 50%;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
padding: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bd-empty-updates {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
color: var(--header-primary);
|
||||||
|
font-weight: 500;
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bd-empty-updates svg {
|
||||||
|
fill: #43B581;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
Loading…
Reference in New Issue