XL v1.3.6

This commit is contained in:
_Lighty_ 2020-01-28 20:58:28 +01:00
parent eca01e5c4c
commit a581ed00d8
1 changed files with 22 additions and 34 deletions

View File

@ -41,7 +41,7 @@ var XenoLib = (() => {
twitter_username: '' twitter_username: ''
} }
], ],
version: '1.3.5', version: '1.3.6',
description: 'Simple library to complement plugins with shared code without lowering performance.', description: 'Simple library to complement plugins with shared code without lowering performance.',
github: 'https://github.com/1Lighty', github: 'https://github.com/1Lighty',
github_raw: 'https://raw.githubusercontent.com/1Lighty/BetterDiscordPlugins/master/Plugins/1XenoLib.plugin.js' github_raw: 'https://raw.githubusercontent.com/1Lighty/BetterDiscordPlugins/master/Plugins/1XenoLib.plugin.js'
@ -50,7 +50,7 @@ var XenoLib = (() => {
{ {
title: 'Boring changes', title: 'Boring changes',
type: 'Added', type: 'Added',
items: ['Fixed notifications system not loading properly.'] items: ['Nudged notifications downwards a bit', 'Fixed conditional error related to notifications']
} }
], ],
defaultConfig: [ defaultConfig: [
@ -125,6 +125,12 @@ var XenoLib = (() => {
} }
}; };
XenoLib.getClass = arg => {
const args = arg.split(' ');
return WebpackModules.getByProps(...args)[args[args.length - 1]];
};
XenoLib.getSingleClass = arg => XenoLib.getClass(arg).split(' ')[0];
const LibrarySettings = XenoLib.loadData(config.info.name, 'settings', DefaultLibrarySettings); const LibrarySettings = XenoLib.loadData(config.info.name, 'settings', DefaultLibrarySettings);
PluginUtilities.addStyle( PluginUtilities.addStyle(
@ -137,11 +143,11 @@ var XenoLib = (() => {
.xenoLib-color-picker .xenoLib-button:hover { .xenoLib-color-picker .xenoLib-button:hover {
width: 128px; width: 128px;
} }
.xenoLib-color-picker .xenoLib-button .text-2sI5Sd { .xenoLib-color-picker .xenoLib-button .${XenoLib.getSingleClass('recording text')} {
opacity: 0; opacity: 0;
transform: translate3d(200%,0,0); transform: translate3d(200%,0,0);
} }
.xenoLib-color-picker .xenoLib-button:hover .text-2sI5Sd { .xenoLib-color-picker .xenoLib-button:hover .${XenoLib.getSingleClass('recording text')} {
opacity: 1; opacity: 1;
transform: translateZ(0); transform: translateZ(0);
} }
@ -184,7 +190,7 @@ var XenoLib = (() => {
overflow: hidden; overflow: hidden;
} }
.xenoLib-notification-content-wrapper { .xenoLib-notification-content-wrapper {
padding: 20px 20px 0 20px; padding: 22px 20px 0 20px;
} }
.xenoLib-centering-bottomLeft .xenoLib-notification-content-wrapper:first-of-type, .xenoLib-centering-bottomMiddle .xenoLib-notification-content-wrapper:first-of-type, .xenoLib-centering-bottomRight .xenoLib-notification-content-wrapper:first-of-type { .xenoLib-centering-bottomLeft .xenoLib-notification-content-wrapper:first-of-type, .xenoLib-centering-bottomMiddle .xenoLib-notification-content-wrapper:first-of-type, .xenoLib-centering-bottomRight .xenoLib-notification-content-wrapper:first-of-type {
padding: 0 20px 20px 20px; padding: 0 20px 20px 20px;
@ -282,12 +288,6 @@ var XenoLib = (() => {
); );
XenoLib.getUser = WebpackModules.getByProps('getUser', 'acceptAgreements').getUser; XenoLib.getUser = WebpackModules.getByProps('getUser', 'acceptAgreements').getUser;
XenoLib.getClass = arg => {
const args = arg.split(' ');
return WebpackModules.getByProps(...args)[args[args.length - 1]];
};
XenoLib.getSingleClass = arg => XenoLib.getClass(arg).split(' ')[0];
XenoLib.joinClassNames = WebpackModules.getModule(e => e.default && e.default.default); XenoLib.joinClassNames = WebpackModules.getModule(e => e.default && e.default.default);
XenoLib.authorId = '239513071272329217'; XenoLib.authorId = '239513071272329217';
@ -560,22 +560,9 @@ var XenoLib = (() => {
somemoremenus.forEach(menu => { somemoremenus.forEach(menu => {
if (!menu) return Logger.warn('Special context menu is undefined!'); if (!menu) return Logger.warn('Special context menu is undefined!');
const origDef = menu.exports.default; const origDef = menu.exports.default;
const originalFunc = Utilities.getNestedProp(menu, 'exports.BDFDBpatch.default.originalMethod') || menu.exports.default;
Patcher.after(menu.exports, 'default', (_, [props], ret) => handleContextMenu({ props }, ret, true)); Patcher.after(menu.exports, 'default', (_, [props], ret) => handleContextMenu({ props }, ret, true));
/* make it friendly to other plugins and libraries that search by string
note: removing this makes BDFDB shit itself
*/
Patcher.instead(menu.exports.default, 'toString', (_, args, __) => originalFunc.toString(...args));
/* if BDFDB already patched it, patch the function BDFDB is storing in case it decides to unaptch
this is to prevent BDFDB from removing our patch
this function is never called in BDFDB, it's only stored for restore
*/
if (origDef.isBDFDBpatched && menu.exports.BDFDBpatch && typeof menu.exports.BDFDBpatch.default.originalMethod === 'function') { if (origDef.isBDFDBpatched && menu.exports.BDFDBpatch && typeof menu.exports.BDFDBpatch.default.originalMethod === 'function') {
Patcher.after(menu.exports.BDFDBpatch.default, 'originalMethod', (_, [props], ret) => handleContextMenu({ props }, ret, true)); Patcher.after(menu.exports.BDFDBpatch.default, 'originalMethod', (_, [props], ret) => handleContextMenu({ props }, ret, true));
/* make it friendly to other plugins and libraries that search by string
note: removing this makes BDFDB shit itself
*/
Patcher.instead(menu.exports.BDFDBpatch.default.originalMethod, 'toString', (_, args, __) => originalFunc.toString(...args));
} }
}); });
XenoLib.__contextPatches.__contextPatched = true; XenoLib.__contextPatches.__contextPatched = true;
@ -617,7 +604,7 @@ var XenoLib = (() => {
...options ...options
}); });
XenoLib.createContextMenuGroup = (children, options) => React.createElement(ContextMenuItemsGroup, { children, ...options }); XenoLib.createContextMenuGroup = (children, options) => React.createElement(ContextMenuItemsGroup, { children, ...options });
XenoLib.DiscordUtils = WebpackModules.getByProps('bindAll', 'debounce'); XenoLib._ = XenoLib.DiscordUtils = WebpackModules.getByProps('bindAll', 'debounce');
const dialog = require('electron').remote.dialog; const dialog = require('electron').remote.dialog;
const showSaveDialog = dialog.showSaveDialogSync || dialog.showSaveDialog; const showSaveDialog = dialog.showSaveDialogSync || dialog.showSaveDialog;
@ -651,7 +638,7 @@ var XenoLib = (() => {
path: props.path, path: props.path,
error: null error: null
}; };
XenoLib.DiscordUtils.bindAll(this, ['handleOnBrowse', 'handleChange']); XenoLib._.bindAll(this, ['handleOnBrowse', 'handleChange']);
this.delayedCallVerifyPath = new DelayedCall(500, () => this.delayedCallVerifyPath = new DelayedCall(500, () =>
FsModule.access(this.state.path, FsModule.constants.W_OK, error => { FsModule.access(this.state.path, FsModule.constants.W_OK, error => {
const invalid = (error && error.message.match(/.*: (.*), access '/)[1]) || null; const invalid = (error && error.message.match(/.*: (.*), access '/)[1]) || null;
@ -717,7 +704,7 @@ var XenoLib = (() => {
constructor(props) { constructor(props) {
super(props); super(props);
this.state = { value: props.value }; this.state = { value: props.value };
XenoLib.DiscordUtils.bindAll(this, ['handleChange']); XenoLib._.bindAll(this, ['handleChange']);
} }
handleChange(value) { handleChange(value) {
this.setState({ value }); this.setState({ value });
@ -753,7 +740,7 @@ var XenoLib = (() => {
value: props.value, value: props.value,
multiInputFocused: false multiInputFocused: false
}; };
XenoLib.DiscordUtils.bindAll(this, ['handleChange', 'handleColorPicker', 'handleReset']); XenoLib._.bindAll(this, ['handleChange', 'handleColorPicker', 'handleReset']);
} }
handleChange(value) { handleChange(value) {
if (!value.length) { if (!value.length) {
@ -935,7 +922,7 @@ var XenoLib = (() => {
const notif = state.data.find(n => n.content === content && n.timeout === options.timeout); const notif = state.data.find(n => n.content === content && n.timeout === options.timeout);
if (notif) { if (notif) {
id = notif.id; id = notif.id;
Dispatcher.dispatch({ type: 'XL_NOTIFS_DUPLICATE', id: notif.id }); Dispatcher.dirtyDispatch({ type: 'XL_NOTIFS_DUPLICATE', id: notif.id });
return state; return state;
} }
} }
@ -948,7 +935,7 @@ var XenoLib = (() => {
return id; return id;
}, },
remove(id) { remove(id) {
Dispatcher.dispatch({ type: 'XL_NOTIFS_REMOVE', id }); Dispatcher.dirtyDispatch({ type: 'XL_NOTIFS_REMOVE', id });
}, },
/** /**
* @param {Number} id Notification ID * @param {Number} id Notification ID
@ -966,7 +953,7 @@ var XenoLib = (() => {
state.data[idx] = Object.assign(state.data[idx], options); state.data[idx] = Object.assign(state.data[idx], options);
return state; return state;
}); });
Dispatcher.dispatch({ type: 'XL_NOTIFS_UPDATE', id, ...options }); Dispatcher.dirtyDispatch({ type: 'XL_NOTIFS_UPDATE', id, ...options });
} }
}; };
XenoLib.Notifications = utils; XenoLib.Notifications = utils;
@ -997,7 +984,7 @@ var XenoLib = (() => {
this._animationCancel = () => {}; this._animationCancel = () => {};
this._oldOffsetHeight = 0; this._oldOffsetHeight = 0;
this._initialProgress = !this.props.timeout ? (this.state.loading && this.state.progress !== -1 ? this.state.progress : 100) : 0; this._initialProgress = !this.props.timeout ? (this.state.loading && this.state.progress !== -1 ? this.state.progress : 100) : 0;
XenoLib.DiscordUtils.bindAll(this, ['closeNow', 'handleResizeEvent', 'handleDispatch']); XenoLib._.bindAll(this, ['closeNow', 'handleResizeEvent', 'handleDispatch']);
} }
componentDidMount() { componentDidMount() {
this._unsubscribe = api.subscribe(_ => this.checkOffScreen()); this._unsubscribe = api.subscribe(_ => this.checkOffScreen());
@ -1099,7 +1086,7 @@ var XenoLib = (() => {
} }
const isSettingHeight = this._ref.offsetHeight !== this._contentRef.offsetHeight; const isSettingHeight = this._ref.offsetHeight !== this._contentRef.offsetHeight;
await next({ opacity: 1, height: this._contentRef.offsetHeight }); await next({ opacity: 1, height: this._contentRef.offsetHeight });
if (isSettingHeight) Dispatcher.dispatch({ type: 'XL_NOTIFS_ANIMATED' }); if (isSettingHeight) Dispatcher.dirtyDispatch({ type: 'XL_NOTIFS_ANIMATED' });
if (this.state.resetBar || this.state.hovered) { if (this.state.resetBar || this.state.hovered) {
await next({ progress: 0 }); /* shit gets reset */ await next({ progress: 0 }); /* shit gets reset */
this.state.resetBar = false; this.state.resetBar = false;
@ -1165,6 +1152,7 @@ var XenoLib = (() => {
}, },
onClick: e => { onClick: e => {
if (!this.props.onClick) return; if (!this.props.onClick) return;
if (e.target && e.target.getAttribute('role') === 'button') return;
this.props.onClick(); this.props.onClick();
this.closeNow(); this.closeNow();
}, },
@ -1367,7 +1355,7 @@ var XenoLib = (() => {
const DOMElement = document.querySelector('.xenoLib-notifications'); const DOMElement = document.querySelector('.xenoLib-notifications');
if (DOMElement) { if (DOMElement) {
DOMElement.className = XenoLib.joinClassNames('xenoLib-notifications', `xenoLib-centering-${LibrarySettings.notifications.position}`); DOMElement.className = XenoLib.joinClassNames('xenoLib-notifications', `xenoLib-centering-${LibrarySettings.notifications.position}`);
Dispatcher.dispatch({ type: 'XL_NOTIFS_ANIMATED' }); Dispatcher.dirtyDispatch({ type: 'XL_NOTIFS_ANIMATED' });
} }
} }
} }