mirror of https://github.com/NovaGM/Modules.git
106 lines
3.2 KiB
JavaScript
106 lines
3.2 KiB
JavaScript
import * as webpackModules from '@goosemod/webpack';
|
|
import { createItem, removeItem } from '@goosemod/settings';
|
|
import { version } from './goosemodModule.json';
|
|
|
|
var searchHook;
|
|
var parseHook;
|
|
var useEmojiSelectHandlerHook;
|
|
|
|
let settings = {
|
|
emojisize: '64',
|
|
};
|
|
|
|
const emojisModule = webpackModules.findByProps('getDisambiguatedEmojiContext', 'search');
|
|
const messageEmojiParserModule = webpackModules.findByProps(
|
|
'parse',
|
|
'parsePreprocessor',
|
|
'unparse',
|
|
);
|
|
const emojiPickerModule = webpackModules.findByProps('useEmojiSelectHandler');
|
|
|
|
let originalFunctions = {
|
|
original_search: undefined,
|
|
original_parse: undefined,
|
|
original_useEmojiSelectHandler: undefined,
|
|
};
|
|
|
|
export default {
|
|
goosemodHandlers: {
|
|
onImport: async () => {
|
|
searchHook = originalFunctions.original_search = emojisModule.search;
|
|
emojisModule.search = function () {
|
|
return searchHook.apply(this, arguments);
|
|
};
|
|
|
|
parseHook = originalFunctions.original_parse = messageEmojiParserModule.parse;
|
|
messageEmojiParserModule.parse = function () {
|
|
return parseHook.apply(this, arguments);
|
|
};
|
|
|
|
useEmojiSelectHandlerHook = originalFunctions.original_useEmojiSelectHandler =
|
|
emojiPickerModule.useEmojiSelectHandler;
|
|
emojiPickerModule.useEmojiSelectHandler = function () {
|
|
return useEmojiSelectHandlerHook.apply(this, arguments);
|
|
};
|
|
|
|
searchHook = function () {
|
|
let result = originalFunctions.original_search.apply(this, arguments);
|
|
result.unlocked.push(...result.locked);
|
|
result.locked = [];
|
|
return result;
|
|
};
|
|
|
|
parseHook = function () {
|
|
let result = originalFunctions.original_parse.apply(this, arguments);
|
|
if (result.invalidEmojis.length !== 0) {
|
|
for (let emoji of result.invalidEmojis) {
|
|
result.content = result.content.replace(
|
|
`<${emoji.animated ? 'a' : ''}:${emoji.originalName || emoji.name}:${emoji.id}>`,
|
|
`${emoji.url}&size=${settings.emojisize}&width=16`,
|
|
);
|
|
}
|
|
result.invalidEmojis = [];
|
|
}
|
|
return result;
|
|
};
|
|
|
|
useEmojiSelectHandlerHook = function (args) {
|
|
const { onSelectEmoji, closePopout } = args;
|
|
return function (data, state) {
|
|
const emoji = data.emoji;
|
|
if (emoji != null && emoji.available) {
|
|
onSelectEmoji(emoji, state.isFinalSelection);
|
|
if (state.isFinalSelection) closePopout();
|
|
}
|
|
};
|
|
};
|
|
|
|
createItem('FreeNitro', [
|
|
version,
|
|
|
|
{
|
|
type: 'header',
|
|
text: 'Change the emoji size to your liking!',
|
|
},
|
|
{
|
|
type: 'text-input',
|
|
text: 'Emoji Size',
|
|
initialValue: () => settings.emojisize,
|
|
oninput: (value) => {
|
|
settings.emojisize = value;
|
|
},
|
|
},
|
|
]);
|
|
},
|
|
|
|
getSettings: () => [settings],
|
|
|
|
onRemove: async () => {
|
|
searchHook = originalFunctions.original_search;
|
|
parseHook = originalFunctions.original_parse;
|
|
useEmojiSelectHandlerHook = originalFunctions.original_useEmojiSelectHandler;
|
|
removeItem('FreeNitro');
|
|
},
|
|
},
|
|
};
|