MAR v2.0.6

This commit is contained in:
_Lighty_ 2020-02-27 21:04:51 +01:00
parent b668463c39
commit d957a306da
2 changed files with 60 additions and 62 deletions

View File

@ -1,4 +1,7 @@
# [MentionAliasesRedux](https://1lighty.github.io/BetterDiscordStuff/?plugin=MentionAliasesRedux "MentionAliasesRedux") Changelog # [MentionAliasesRedux](https://1lighty.github.io/BetterDiscordStuff/?plugin=MentionAliasesRedux "MentionAliasesRedux") Changelog
### 2.0.7
- Fixed tag not showing within chat
### 2.0.6 ### 2.0.6
- Fixed menu button not showing - Fixed menu button not showing
- Fixed misc error spam - Fixed misc error spam

View File

@ -50,7 +50,7 @@ var MentionAliasesRedux = (() => {
{ {
title: "bug b' gone", title: "bug b' gone",
type: 'fixed', type: 'fixed',
items: ['Fixed menu button not showing', 'Fixed misc error spam'] items: ['Fixed tag not showing within chat']
} }
], ],
defaultConfig: [ defaultConfig: [
@ -262,7 +262,7 @@ var MentionAliasesRedux = (() => {
} }
} }
class SetAliasModal extends (WebpackModules.getByDisplayName('ChangeNickname') || class fuck {}) { class SetAliasModal extends (WebpackModules.getByDisplayName('ChangeNickname') || (Logger.error('Failed to find modal "ChangeNickname"'), class fuck {})) {
constructor(props) { constructor(props) {
super(props); super(props);
this.handleSubmit = this.handleSubmitPatch.bind(this); this.handleSubmit = this.handleSubmitPatch.bind(this);
@ -398,6 +398,19 @@ var MentionAliasesRedux = (() => {
super(); super();
XenoLib._.bindAll(this, ['openAliasesPopout', 'queryAliases', 'setAlias', 'setGroup', 'handleSetAliasDispatch', 'handleSetGroupDispatch', 'getUserAlias', 'forceUpdateAll', 'handleContextMenu']); XenoLib._.bindAll(this, ['openAliasesPopout', 'queryAliases', 'setAlias', 'setGroup', 'handleSetAliasDispatch', 'handleSetGroupDispatch', 'getUserAlias', 'forceUpdateAll', 'handleContextMenu']);
XenoLib.changeName(__filename, 'MentionAliasesRedux'); XenoLib.changeName(__filename, 'MentionAliasesRedux');
const oOnStart = this.onStart.bind(this);
this.onStart = () => {
try {
oOnStart();
} catch (e) {
Logger.stacktrace('Failed to start!', e);
PluginUpdater.checkForUpdate(this.name, this.version, this._config.info.github_raw);
XenoLib.Notifications.error(`[**${this.name}**] Failed to start! Please update it, press CTRL + R, or ${GuildStore.getGuild(XenoLib.supportServerId) ? 'go to <#639665366380838924>' : '[join my support server](https://discord.gg/NYvWdN5)'} for further assistance.`, { timeout: 0 });
try {
this.onStop();
} catch (e) {}
}
};
} }
onStart() { onStart() {
this.__menuBroken = false; this.__menuBroken = false;
@ -462,6 +475,7 @@ var MentionAliasesRedux = (() => {
Dispatcher.unsubscribe('MA_SET_GROUP', this.handleSetGroupDispatch); Dispatcher.unsubscribe('MA_SET_GROUP', this.handleSetGroupDispatch);
PluginUtilities.removeStyle(this.short + '-CSS'); PluginUtilities.removeStyle(this.short + '-CSS');
this.toggleTagCSS(true); this.toggleTagCSS(true);
this.forceRerenderMessages();
} }
buildSetting(data) { buildSetting(data) {
@ -653,6 +667,20 @@ var MentionAliasesRedux = (() => {
return ret; return ret;
} }
async forceRerenderMessages() {
if (ZeresPluginLibrary.DiscordAPI.currentChannel) {
const Messages = await ReactComponents.getComponentByName('Messages', `.${XenoLib.getSingleClass('messages messagesWrapper')}`);
const unpatch = ZeresPluginLibrary.Patcher.after(this.name + 'RERENDER', Messages.component.prototype, 'render', (_this, _, ret) => {
unpatch();
const scroller = Utilities.getNestedProp(ret, 'props.children.1');
if (!scroller) return;
/* crash repellent */
scroller.props.children[1].forEach(e => (e.key = DiscordModules.KeyGenerator()));
});
Messages.forceUpdateAll();
}
}
/* PATCHES */ /* PATCHES */
patchAll() { patchAll() {
@ -696,67 +724,34 @@ var MentionAliasesRedux = (() => {
} }
patchMessageUsername() { patchMessageUsername() {
const MessageModule = WebpackModules.getByProps('MessageUsername', 'Message'); const MessageHeader = WebpackModules.getByIndex(WebpackModules.getIndex(e => e.default && e.default.toString().indexOf('.ComponentActions.ANIMATE_CHAT_AVATAR') !== -1));
if (MessageModule) { Patcher.after(MessageHeader, 'default', (_, [props], ret) => {
Patcher.after(MessageModule.MessageUsername.prototype, 'render', (_this, _, ret) => { const forceUpdate = React.useState()[1];
if (!_this.props.message.author || !this.settings.display.displayMessageTags) return; React.useEffect(
const alias = this.getUserAlias(_this.props.message.author.id); function() {
if (!alias) return; const e = function() {
const oChildren = ret.props.children; forceUpdate({});
ret.props.children = e => { };
const ret2 = oChildren(e); Dispatcher.subscribe('MAR_FORCE_UPDATE', e); /* this will make it easier to update the message later */
if (DiscordAPI.UserSettings.displayCompact && !this.settings.display.displayRightCompact) ret2.props.children.unshift(this.createAlias(alias, MessageCompactTagClassname)); return function() {
else ret2.props.children.push(this.createAlias(alias, MessageCozyTagClassname)); Dispatcher.unsubscribe('MAR_FORCE_UPDATE', e);
return ret2; };
}; },
}); [props.message.id, forceUpdate]
/* reason for div:not is so it doesn't match anything that is not an actual message, like pins */
const Message = new ReactComponents.ReactComponent('Message', MessageModule.Message, `.${XenoLib.getSingleClass('messageEditorCompact container', true)} > div:not(.${XenoLib.getSingleClass('marginCompactIndent content', true)})`);
this.patchedModules.push(Message);
Message.forceUpdateAll();
} else {
const MessageHeader = WebpackModules.getByIndex(WebpackModules.getIndex(e => e.displayName === 'MessageHeader'));
Patcher.after(MessageHeader, 'default', (_, [props], ret) => {
const forceUpdate = React.useState()[1];
React.useEffect(
function() {
const e = function() {
forceUpdate({});
};
Dispatcher.subscribe('MAR_FORCE_UPDATE', e); /* this will make it easier to update the message later */
return function() {
Dispatcher.unsubscribe('MAR_FORCE_UPDATE', e);
};
},
[props.message.id, forceUpdate]
);
if (!props.message.author || !this.settings.display.displayMessageTags) return;
const alias = this.getUserAlias(props.message.author.id);
if (!alias) return;
const username = Utilities.getNestedProp(
Utilities.findInReactTree(ret.props.children, e => e && e.props && Array.isArray(e.props.children) && e.props.children.findIndex(m => m && m.type && m.type.displayName === 'Popout') !== -1),
'props.children'
);
if (!username) return; /* eh? */
if (DiscordAPI.UserSettings.displayCompact && !this.settings.display.displayRightCompact) username.unshift(this.createAlias(alias, MessageCompactTagClassname));
else username.push(this.createAlias(alias, MessageCozyTagClassname));
});
if (!DiscordAPI.currentChannel) return;
const ChannelCache = WebpackModules.getByProps('_channelMessages');
const CachedChannel = ChannelCache.get(DiscordAPI.currentChannel.id);
ChannelCache.commit(
CachedChannel.mutate(e => {
e._array.forEach((message, index) => {
const cloned = XenoLib._.clone(message);
/* we change the reference, nothing else */
/* this is to force React.memo to render once more */
e._array[index] = cloned;
e._map[message.id] = cloned;
});
})
); );
MessageStore._changeCallbacks.forEach(e => e()); if (!props.message.author || !this.settings.display.displayMessageTags) return;
} const alias = this.getUserAlias(props.message.author.id);
if (!alias) return;
const username = Utilities.getNestedProp(
Utilities.findInReactTree(ret.props.children, e => e && e.props && Array.isArray(e.props.children) && e.props.children.findIndex(m => m && m.type && m.type.displayName === 'Popout') !== -1),
'props.children'
);
if (!username) return; /* eh? */
if (DiscordAPI.UserSettings.displayCompact && !this.settings.display.displayRightCompact) username.unshift(this.createAlias(alias, MessageCompactTagClassname));
else username.push(this.createAlias(alias, MessageCozyTagClassname));
});
if (!DiscordAPI.currentChannel) return;
this.forceRerenderMessages();
} }
async patchMemberListItem(promiseState) { async patchMemberListItem(promiseState) {