Get rid of obsolete polyfills, fix patcher path, update injectSnippets

pull/2/head
BakedPVP 4 years ago
parent d963727379
commit fabc7e237b

@ -1,9 +1,6 @@
// Perform checks
require('./env_check')();
// And then do stuff
require('../polyfills');
const { writeFile } = require('fs').promises;
const { resolve } = require('path');
const main = require('./main.js');

@ -18,7 +18,7 @@ exports.inject = async ({ getAppDir }) => {
await Promise.all([
writeFile(
join(appDir, 'index.js'),
`require(\`${__dirname.replace(RegExp(sep.repeat(2), 'g'), '/')}/../src/patcher/index.js\`)`
`require(\`${__dirname.replace(RegExp(sep.repeat(2), 'g'), '/')}/../src/patcher\`)`
),
writeFile(
join(appDir, 'package.json'),

@ -1,7 +0,0 @@
require('fs')
.readdirSync(__dirname)
.filter(file => file !== 'index.js')
.forEach(filename => {
const moduleName = filename.split('.')[0];
exports[moduleName] = require(`${__dirname}/${filename}`);
});

@ -1,66 +0,0 @@
const util = require('util');
if (!util.promisify) {
const kCustomPromisifiedSymbol = Symbol('util.promisify.custom');
const kCustomPromisifyArgsSymbol = Symbol('customPromisifyArgs');
function promisify (original) {
if (typeof original !== 'function') {
throw new TypeError(`expected type function, got ${typeof original}`);
}
if (original[kCustomPromisifiedSymbol]) {
const fun = original[kCustomPromisifiedSymbol];
if (typeof fun !== 'function') {
throw new TypeError(`expected type function for util.promisify.custom, got ${typeof fun}`);
}
return Object.defineProperty(fun, kCustomPromisifiedSymbol, {
value: fun,
enumerable: false,
writable: false,
configurable: true
});
}
/*
* Names to create an object from in case the callback receives multiple
* arguments, e.g. ['stdout', 'stderr'] for child_process.exec.
*/
const argumentNames = original[kCustomPromisifyArgsSymbol];
function fn (...args) {
return new Promise((resolve, reject) => {
original.call(this, ...args, (err, ...values) => {
if (err) {
return reject(err);
}
if (argumentNames !== void 0 && values.length > 1) {
const obj = {};
for (let i = 0; i < argumentNames.length; i++) {
obj[argumentNames[i]] = values[i];
}
resolve(obj);
} else {
resolve(values[0]);
}
});
});
}
Object.setPrototypeOf(fn, Object.getPrototypeOf(original));
Object.defineProperty(fn, kCustomPromisifiedSymbol, {
value: fn,
enumerable: false,
writable: false,
configurable: true
});
return Object.defineProperties(
fn,
Object.getOwnPropertyDescriptors(original)
);
}
promisify.custom = kCustomPromisifiedSymbol;
util.promisify = promisify;
}

@ -13,14 +13,14 @@ $module: (
border-style: none,
border-width: 0,
'logo': (
icon: var('vz-logo-discord'),
image: logo('discord'),
color: #fff,
'hover': (
color: var('vz-main-nav-logo-icon-color'),
color: var('vz-main-nav-logo-image-color'),
animation: 'vz-main-nav-logo-hover .2s forwards'
),
'active': (
color: var('vz-main-nav-logo-icon-color'),
color: var('vz-main-nav-logo-image-color'),
animation: 'vz-main-nav-logo-active .1s forwards'
)
),
@ -100,7 +100,7 @@ $module: (
}
&__logo {
@include size(70px, var('vz-main-nav-height'));
@include mask(var('vz-main-nav-logo-icon'), var('vz-main-nav-logo-color'), $size: 50%);
@include mask(var('vz-main-nav-logo-image'), var('vz-main-nav-logo-color'), $size: 50%);
position: relative;
display: flex;
align-items: center;

@ -1,10 +1,10 @@
/* eslint-disable prefer-destructuring */
const { Plugin } = require('vizality/entities');
const { React, getModuleByDisplayName } = require('vizality/webpack');
const { inject, uninject } = require('vizality/injector');
const { React, getModuleByDisplayName } = require('vizality/webpack');
const { classNames } = require('vizality/util');
const { Tooltip } = require('vizality/components');
module.exports = class ChannelMembersActivityIcons extends Plugin {
module.exports = class MembersActivityIcons extends Plugin {
startPlugin () {
this.loadStylesheet('style.scss');
@ -13,22 +13,14 @@ module.exports = class ChannelMembersActivityIcons extends Plugin {
async _injectActivityIcons () {
const MemberListItem = await getModuleByDisplayName('MemberListItem');
inject('channelMembersActivityIcons-members', MemberListItem.prototype, 'render', (_, res) => {
if (!res ||
!res.props ||
!res.props.subText ||
!res.props.subText.props ||
!res.props.subText.props.activities.length
) {
return res;
}
inject('vz-members-activity-icons', MemberListItem.prototype, 'render', (originalArgs, returnValue) => {
const { activities } = returnValue.props.subText.props;
if (!activities) return returnValue;
for (const activity of res.props.subText.props.activities) {
if (activity.application_id &&
activity.assets &&
activity.assets.small_image
) {
res.props.children =
for (const activity of activities) {
if (activity.application_id && activity.assets && activity.assets.small_image) {
returnValue.props.children =
React.createElement(Tooltip, {
text: activity.name,
position: 'left'
@ -39,13 +31,13 @@ module.exports = class ChannelMembersActivityIcons extends Plugin {
}
));
res.props.className += ' vz-hasActivityIcon';
returnValue.props.className = classNames(returnValue.props.className, 'vz-hasActivityIcon');
return res;
return returnValue;
}
if (activity.type && activity.type === 2) {
res.props.children =
returnValue.props.children =
React.createElement(Tooltip, {
text: 'Spotify',
position: 'left'
@ -56,17 +48,17 @@ module.exports = class ChannelMembersActivityIcons extends Plugin {
}
));
res.props.className += ' vz-hasActivityIcon';
returnValue.props.className = classNames(returnValue.props.className, 'vz-hasActivityIcon');
return res;
return returnValue;
}
}
return res;
return returnValue;
});
}
pluginWillUnload () {
uninject('channelMembersActivityIcons-members');
uninject('vz-members-activity-icons');
}
};

@ -3,7 +3,7 @@ const { writeFile, readFile } = require('fs').promises;
const { React, constants: { Permissions }, getModule, getModuleByDisplayName, i18n: { Messages } } = require('vizality/webpack');
const { PopoutWindow, Icons: { Plugin: PluginIcon, Theme } } = require('vizality/components');
const { inject, uninject } = require('vizality/injector');
const { forceUpdateElement } = require('vizality/util');
const { findInReactTree, forceUpdateElement } = require('vizality/util');
const { Plugin } = require('vizality/entities');
const { MAGIC_CHANNELS: { CSS_SNIPPETS, STORE_PLUGINS, STORE_THEMES } } = require('vizality/constants');
const { join } = require('path');
@ -144,37 +144,19 @@ module.exports = class ModuleManager extends Plugin {
}
async _injectSnippets () {
const Message = await getModule(m => m.default && m.default.displayName === 'Message');
inject('vz-module-manager-snippets', Message, 'default', (args, res) => {
if (!res.props.children[2] || !res.props.children[2].props.children || res.props.children[2].props.children.type.__vizality_modm === 'owo') {
return res;
}
res.props.children[2].props.children.type.__vizality_modm = 'owo';
const renderer = res.props.children[2].props.children.type.type;
res.props.children[2].props.children.type.type = (props) => {
const res = renderer(props);
const actions = res && res.props.children && res.props.children.props.children && res.props.children.props.children[1];
if (actions) {
const renderer = actions.type;
actions.type = (props) => {
const res = renderer(props);
if (props.channel.id === CSS_SNIPPETS && (/```(?:(?:s?css)|(?:styl(?:us)?)|less)/i).test(props.message.content)) {
res.props.children.unshift(
React.createElement(SnippetButton, {
message: props.message,
main: this
})
);
}
return res;
};
}
return res;
};
return res;
const MiniPopover = await getModule(m => m.default && m.default.displayName === 'MiniPopover');
inject('vz-module-manager-snippets', MiniPopover, 'default', (originalArgs, returnValue) => {
const props = findInReactTree(returnValue, r => r && r.canReact && r.message);
if (!props || props.channel.id !== CSS_SNIPPETS) return returnValue;
returnValue.props.children.unshift(
React.createElement(SnippetButton, {
message: props.message,
main: this
})
);
});
Message.default.displayName = 'Message';
}
async _applySnippet (message) {

@ -1 +0,0 @@
require('./patcher/index.js');

@ -1,5 +1,3 @@
require('../polyfills');
const { remote, ipcRenderer } = require('electron');
const { join } = require('path');
const { existsSync, mkdirSync, open, write } = require('fs');

Loading…
Cancel
Save