diff --git a/Plugins/InAppNotifications/CHANGELOG.md b/Plugins/InAppNotifications/CHANGELOG.md
index 040b529..afad7ea 100644
--- a/Plugins/InAppNotifications/CHANGELOG.md
+++ b/Plugins/InAppNotifications/CHANGELOG.md
@@ -1,4 +1,7 @@
# [InAppNotifications](https://1lighty.github.io/BetterDiscordStuff/?plugin=InAppNotifications "InAppNotifications") Changelog
+### 1.0.2
+- Desktop notifications now don't show if Discord is focused, while in-app ones do.
+
### 1.0.1
- Emotes and custom emotes now show properly (not BD emotes tho lol)
- Changed title to show channel name and guild name instead of category
diff --git a/Plugins/InAppNotifications/InAppNotifications.plugin.js b/Plugins/InAppNotifications/InAppNotifications.plugin.js
index 5608835..ff42c28 100644
--- a/Plugins/InAppNotifications/InAppNotifications.plugin.js
+++ b/Plugins/InAppNotifications/InAppNotifications.plugin.js
@@ -1,4 +1,4 @@
-//META{"name":"InAppNotifications","source":"https://github.com/1Lighty/BetterDiscordPlugins/blob/master/Plugins/InAppNotifications/InAppNotifications.plugin.js","website":"https://1lighty.github.io/BetterDiscordStuff/?plugin=InAppNotifications","authorId":"239513071272329217","invite":"NYvWdN5","donate":"https://paypal.me/lighty13"}*//
+//META{"name":"InAppNotifications","source":"https://github.com/1Lighty/BetterDiscordPlugins/blob/master/Plugins/InAppNotifications/InAppNotifications.plugin.js","website":"https://1lighty.github.io/BetterDiscordStuff/?plugin=InAppNotifications"}*//
/*@cc_on
@if (@_jscript)
@@ -41,7 +41,7 @@ var InAppNotifications = (() => {
twitter_username: ''
}
],
- version: '1.0.1',
+ version: '1.0.2',
description: 'Show a notification in Discord when someone sends a message, just like on mobile.',
github: 'https://github.com/1Lighty',
github_raw: 'https://raw.githubusercontent.com/1Lighty/BetterDiscordPlugins/master/Plugins/InAppNotifications/InAppNotifications.plugin.js'
@@ -56,9 +56,9 @@ var InAppNotifications = (() => {
],
changelog: [
{
- title: 'fixes',
- type: 'fixed',
- items: ['Emotes and custom emotes now show properly (not BD emotes tho lol)', 'Changed title to show channel name and guild name instead of category']
+ title: 'was requested',
+ type: 'added',
+ items: ["Desktop notifications now don't show if Discord is focused, while in-app ones do."]
}
]
};
@@ -77,6 +77,7 @@ var InAppNotifications = (() => {
const Messages = (WebpackModules.getByProps('Messages') || {}).Messages;
const SysMessageUtils = WebpackModules.getByProps('getSystemMessageUserJoin', 'stringify');
const MessageParseUtils = (WebpackModules.getByProps('parseAndRebuild', 'default') || {}).default;
+ const CUser = WebpackModules.getByPrototypes('getAvatarSource', 'isLocalBot');
return class InAppNotifications extends Plugin {
constructor() {
@@ -101,8 +102,8 @@ var InAppNotifications = (() => {
oMESSAGE_CREATE(e);
} catch (e) {
this.errorCount++;
+ Logger.stacktrace('Error in MESSAGE_CREATE dispatch handler', e);
if (this.errorCount >= 10) {
- Logger.stacktrace('Error in MESSAGE_CREATE dispatch handler', e);
PluginUpdater.checkForUpdate(this.name, this.version, this._config.info.github_raw);
XenoLib.Notifications.error(`[**${this.name}**] Plugin is throwing errors and is in a broken state, please update it or ${GuildStore.getGuild(XenoLib.supportServerId) ? 'go to <#639665366380838924>' : '[join my support server](https://discord.gg/NYvWdN5)'} for further assistance.`, { timeout: 0 });
try {
@@ -111,13 +112,11 @@ var InAppNotifications = (() => {
}
}
};
- try {
- ModalStack.popWithKey(`${this.name}_DEP_MODAL`);
- } catch (e) {}
}
onStart() {
this.errorCount = 0;
Dispatcher.subscribe('MESSAGE_CREATE', this.MESSAGE_CREATE);
+ this.patchAll();
PluginUtilities.addStyle(
this.short + '-CSS',
`
@@ -152,6 +151,7 @@ var InAppNotifications = (() => {
onStop() {
Dispatcher.unsubscribe('MESSAGE_CREATE', this.MESSAGE_CREATE);
+ Patcher.unpatchAll();
PluginUtilities.removeStyle(this.short + '-CSS');
}
@@ -253,7 +253,11 @@ var InAppNotifications = (() => {
MESSAGE_CREATE({ channelId, message }) {
const iChannel = ChannelStore.getChannel(channelId);
- const iAuthor = UserStore.getUser(message.author.id);
+ let iAuthor = UserStore.getUser(message.author.id);
+ if (!iAuthor) {
+ iAuthor = new CUser(message.author);
+ UserStore.getUsers()[message.author.id] = iAuthor;
+ }
if (!iChannel || !iAuthor) return;
if (!this.shouldNotify(message, iChannel, iAuthor)) return;
const notif = this.makeTextChatNotification(iChannel, message, iAuthor);
@@ -291,6 +295,18 @@ var InAppNotifications = (() => {
);
}
+ /* PATCHES */
+
+ patchAll() {
+ Utilities.suppressErrors(this.patchShouldNotify.bind(this), 'shouldNotify patch')();
+ }
+
+ patchShouldNotify() {
+ Patcher.after(WebpackModules.getByProps('shouldNotify'), 'shouldNotify', () => (WindowInfo.isFocused() ? false : undefined));
+ }
+
+ /* PATCHES */
+
showChangelog(footer) {
XenoLib.showChangelog(`${this.name} has been updated!`, this.version, this._config.changelog);
}
@@ -335,8 +351,8 @@ var InAppNotifications = (() => {
const i = (i, n) => ((i = i.split('.').map(i => parseInt(i))), (n = n.split('.').map(i => parseInt(i))), !!(n[0] > i[0]) || !!(n[0] == i[0] && n[1] > i[1]) || !!(n[0] == i[0] && n[1] == i[1] && n[2] > i[2])),
n = (n, e) => n && n._config && n._config.info && n._config.info.version && i(n._config.info.version, e),
e = BdApi.getPlugin('ZeresPluginLibrary'),
- o = BdApi.getPlugin('XenoLib');
- n(e, '1.2.11') && (ZeresPluginLibraryOutdated = !0), n(o, '1.3.14') && (XenoLibOutdated = !0);
+ author = BdApi.getPlugin('XenoLib');
+ n(e, '1.2.10') && (ZeresPluginLibraryOutdated = !0), n(author, '1.3.11') && (XenoLibOutdated = !0);
}
} catch (i) {
console.error('Error checking if libraries are out of date', i);
@@ -344,9 +360,6 @@ var InAppNotifications = (() => {
return !global.ZeresPluginLibrary || !global.XenoLib || ZeresPluginLibraryOutdated || XenoLibOutdated
? class {
- constructor() {
- this._XL_PLUGIN = true;
- }
getName() {
return this.name.replace(/\s+/g, '');
}
@@ -361,80 +374,96 @@ var InAppNotifications = (() => {
}
stop() {}
load() {
- const a = BdApi.findModuleByProps('isModalOpen');
- if (a && a.isModalOpen(`${this.name}_DEP_MODAL`)) return;
- const b = !global.XenoLib,
- c = !global.ZeresPluginLibrary,
- d = (b && c) || ((b || c) && (XenoLibOutdated || ZeresPluginLibraryOutdated)),
+ const a = !global.XenoLib,
+ b = !global.ZeresPluginLibrary,
+ c = (a && b) || ((a || b) && (XenoLibOutdated || ZeresPluginLibraryOutdated)) || XenoLibOutdated || ZeresPluginLibraryOutdated,
+ d = (() => {
+ let d = '';
+ return a || b ? (d += `Missing${XenoLibOutdated || ZeresPluginLibraryOutdated ? ' and outdated' : ''} `) : (XenoLibOutdated || ZeresPluginLibraryOutdated) && (d += `Outdated `), (d += `${c ? 'Libraries' : 'Library'} `), d;
+ })(),
e = (() => {
- let a = '';
- return b || c ? (a += `Missing${XenoLibOutdated || ZeresPluginLibraryOutdated ? ' and outdated' : ''} `) : (XenoLibOutdated || ZeresPluginLibraryOutdated) && (a += `Outdated `), (a += `${d ? 'Libraries' : 'Library'} `), a;
+ let d = `The ${c ? 'libraries' : 'library'} `;
+ return a || XenoLibOutdated ? ((d += 'XenoLib '), (b || ZeresPluginLibraryOutdated) && (d += 'and ZeresPluginLibrary ')) : (b || ZeresPluginLibraryOutdated) && (d += 'ZeresPluginLibrary '), (d += `required for ${this.name} ${c ? 'are' : 'is'} ${a || b ? 'missing' : ''}${XenoLibOutdated || ZeresPluginLibraryOutdated ? (a || b ? ' and/or outdated' : 'outdated') : ''}.`), d;
})(),
- f = (() => {
- let a = `The ${d ? 'libraries' : 'library'} `;
- return b || XenoLibOutdated ? ((a += 'XenoLib '), (c || ZeresPluginLibraryOutdated) && (a += 'and ZeresPluginLibrary ')) : (c || ZeresPluginLibraryOutdated) && (a += 'ZeresPluginLibrary '), (a += `required for ${this.name} ${d ? 'are' : 'is'} ${b || c ? 'missing' : ''}${XenoLibOutdated || ZeresPluginLibraryOutdated ? (b || c ? ' and/or outdated' : 'outdated') : ''}.`), a;
- })(),
- g = BdApi.findModuleByProps('push', 'update', 'pop', 'popWithKey'),
- h = BdApi.findModuleByProps('Sizes', 'Weights'),
- i = BdApi.findModule(a => a.defaultProps && a.key && 'confirm-modal' === a.key()),
- j = () => BdApi.getCore().alert(e, `${f}
Due to a slight mishap however, you'll have to download the libraries yourself. After opening the links, do CTRL + S to download the library.
${c || ZeresPluginLibraryOutdated ? '
Click here to download ZeresPluginLibrary' : ''}${b || XenoLibOutdated ? '
Click here to download XenoLib' : ''}`);
- if (!g || !i || !h) return j();
- class k extends BdApi.React.PureComponent {
+ f = BdApi.findModuleByProps('push', 'update', 'pop', 'popWithKey'),
+ g = BdApi.findModuleByProps('Sizes', 'Weights'),
+ h = BdApi.findModule(a => a.defaultProps && a.key && 'confirm-modal' === a.key()),
+ i = () => BdApi.getCore().alert(d, `${e}
Due to a slight mishap however, you'll have to download the libraries yourself. After opening the links, do CTRL + S to download the library.
${b || ZeresPluginLibraryOutdated ? '
Click here to download ZeresPluginLibrary' : ''}${a || XenoLibOutdated ? '
Click here to download XenoLib' : ''}`);
+ if (!f || !h || !g) return i();
+ let j;
+ const k = (() => {
+ if (!global.pluginModule || !global.BDEvents) return;
+ if (a || XenoLibOutdated) {
+ const a = () => {
+ BDEvents.off('xenolib-loaded', a), f.popWithKey(j), pluginModule.reloadPlugin(this.name);
+ };
+ return BDEvents.on('xenolib-loaded', a), () => BDEvents.off('xenolib-loaded', a);
+ }
+ const b = a => {
+ 'ZeresPluginLibrary' !== a || (BDEvents.off('plugin-loaded', b), BDEvents.off('plugin-reloaded', b), f.popWithKey(j), pluginModule.reloadPlugin(this.name));
+ };
+ return BDEvents.on('plugin-loaded', b), BDEvents.on('plugin-reloaded', b), () => (BDEvents.off('plugin-loaded', b), BDEvents.off('plugin-reloaded', b));
+ })();
+ class l extends BdApi.React.PureComponent {
constructor(a) {
super(a), (this.state = { hasError: !1 });
}
- componentDidCatch(a) {
+ componentDidCatch(a, b) {
console.error(`Error in ${this.props.label}, screenshot or copy paste the error above to Lighty for help.`), this.setState({ hasError: !0 }), 'function' == typeof this.props.onError && this.props.onError(a);
}
render() {
return this.state.hasError ? null : this.props.children;
}
}
- class l extends i {
- submitModal() {
- this.props.onConfirm();
- }
- }
- let m = !1;
- const n = g.push(
- a =>
+ j = f.push(a =>
+ BdApi.React.createElement(
+ l,
+ {
+ label: 'missing dependency modal',
+ onError: () => {
+ f.popWithKey(j), i();
+ }
+ },
BdApi.React.createElement(
- k,
- {
- label: 'missing dependency modal',
- onError: () => {
- g.popWithKey(n), j();
- }
- },
- BdApi.React.createElement(
- l,
- Object.assign(
- {
- header: e,
- children: [BdApi.React.createElement(h, { color: h.Colors.PRIMARY, children: [`${f} Please click Download Now to download ${d ? 'them' : 'it'}.`] })],
- red: !1,
- confirmText: 'Download Now',
- cancelText: 'Cancel',
- onConfirm: () => {
- if (m) return;
- m = !0;
- const a = require('request'),
- b = require('fs'),
- c = require('path'),
- d = () => {
- (global.XenoLib && !XenoLibOutdated) || a('https://raw.githubusercontent.com/1Lighty/BetterDiscordPlugins/master/Plugins/1XenoLib.plugin.js', (a, d, e) => (a ? j() : void b.writeFile(c.join(window.ContentManager.pluginsFolder, '1XenoLib.plugin.js'), e, () => {})));
+ h,
+ Object.assign(
+ {
+ header: d,
+ children: [BdApi.React.createElement(g, { color: g.Colors.PRIMARY, children: [`${e} Please click Download Now to download ${c ? 'them' : 'it'}.`] })],
+ red: !1,
+ confirmText: 'Download Now',
+ cancelText: 'Cancel',
+ onConfirm: () => {
+ k();
+ const a = require('request'),
+ b = require('fs'),
+ c = require('path'),
+ d = a => {
+ if (!global.BDEvents) return a();
+ const b = c => {
+ 'ZeresPluginLibrary' !== c || (BDEvents.off('plugin-loaded', b), BDEvents.off('plugin-reloaded', b), a());
};
- !global.ZeresPluginLibrary || ZeresPluginLibraryOutdated ? a('https://rauenzi.github.io/BDPluginLibrary/release/0PluginLibrary.plugin.js', (a, e, f) => (a ? j() : void (b.writeFile(c.join(window.ContentManager.pluginsFolder, '0PluginLibrary.plugin.js'), f, () => {}), d()))) : d();
- }
- },
- a
- )
+ BDEvents.on('plugin-loaded', b), BDEvents.on('plugin-reloaded', b);
+ },
+ e = () => {
+ if (!global.pluginModule || (!global.BDEvents && !global.XenoLib)) return;
+ if ((global.XenoLib && !XenoLibOutdated) || !global.BDEvents) return pluginModule.reloadPlugin(this.name);
+ const a = () => {
+ BDEvents.off('xenolib-loaded', a), pluginModule.reloadPlugin(this.name);
+ };
+ BDEvents.on('xenolib-loaded', a);
+ },
+ f = () => (global.XenoLib && !XenoLibOutdated ? e() : void a('https://raw.githubusercontent.com/1Lighty/BetterDiscordPlugins/master/Plugins/1XenoLib.plugin.js', (a, d, f) => (a ? i() : void (e(), b.writeFile(c.join(window.ContentManager.pluginsFolder, '1XenoLib.plugin.js'), f, () => {})))));
+ !global.ZeresPluginLibrary || ZeresPluginLibraryOutdated ? a('https://rauenzi.github.io/BDPluginLibrary/release/0PluginLibrary.plugin.js', (a, e, g) => (a ? i() : void (d(f), b.writeFile(c.join(window.ContentManager.pluginsFolder, '0PluginLibrary.plugin.js'), g, () => {})))) : f();
+ }
+ },
+ a
)
- ),
- void 0,
- `${this.name}_DEP_MODAL`
+ )
+ )
);
}
+
start() {}
get [Symbol.toStringTag]() {
return 'Plugin';