aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/relationshipNotifier
diff options
context:
space:
mode:
authorV <vendicated@riseup.net>2023-04-22 03:18:19 +0200
committerGitHub <noreply@github.com>2023-04-22 01:18:19 +0000
commit63fc354d483b86857bbee7f540c66ba614fc0f1f (patch)
tree6ebe100e5ff63254adfdb0c44cb473dcc339cf35 /src/plugins/relationshipNotifier
parentc6f0c84935db37e2a18578a081404d84292fe36a (diff)
downloadVencord-63fc354d483b86857bbee7f540c66ba614fc0f1f.tar.gz
Vencord-63fc354d483b86857bbee7f540c66ba614fc0f1f.tar.bz2
Vencord-63fc354d483b86857bbee7f540c66ba614fc0f1f.zip
feat: auto-managed flux subscriptions via plugin.flux (#959)
Diffstat (limited to 'src/plugins/relationshipNotifier')
-rw-r--r--src/plugins/relationshipNotifier/events.ts41
-rw-r--r--src/plugins/relationshipNotifier/index.ts25
2 files changed, 16 insertions, 50 deletions
diff --git a/src/plugins/relationshipNotifier/events.ts b/src/plugins/relationshipNotifier/events.ts
deleted file mode 100644
index 0c6914d..0000000
--- a/src/plugins/relationshipNotifier/events.ts
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Vencord, a modification for Discord's desktop app
- * Copyright (c) 2023 Vendicated and contributors
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
-*/
-
-import { FluxEvents } from "@webpack/types";
-
-import { onChannelDelete, onGuildDelete, onRelationshipRemove } from "./functions";
-import { syncAndRunChecks, syncFriends, syncGroups, syncGuilds } from "./utils";
-
-export const FluxHandlers: Partial<Record<FluxEvents, Array<(data: any) => void>>> = {
- GUILD_CREATE: [syncGuilds],
- GUILD_DELETE: [onGuildDelete],
- CHANNEL_CREATE: [syncGroups],
- CHANNEL_DELETE: [onChannelDelete],
- RELATIONSHIP_ADD: [syncFriends],
- RELATIONSHIP_UPDATE: [syncFriends],
- RELATIONSHIP_REMOVE: [syncFriends, onRelationshipRemove],
- CONNECTION_OPEN: [syncAndRunChecks]
-};
-
-export function forEachEvent(fn: (event: FluxEvents, handler: (data: any) => void) => void) {
- for (const event in FluxHandlers) {
- for (const cb of FluxHandlers[event]) {
- fn(event as FluxEvents, cb);
- }
- }
-}
diff --git a/src/plugins/relationshipNotifier/index.ts b/src/plugins/relationshipNotifier/index.ts
index 6319142..7300fba 100644
--- a/src/plugins/relationshipNotifier/index.ts
+++ b/src/plugins/relationshipNotifier/index.ts
@@ -18,12 +18,10 @@
import { Devs } from "@utils/constants";
import definePlugin from "@utils/types";
-import { FluxDispatcher } from "@webpack/common";
-import { forEachEvent } from "./events";
-import { removeFriend, removeGroup, removeGuild } from "./functions";
+import { onChannelDelete, onGuildDelete, onRelationshipRemove, removeFriend, removeGroup, removeGuild } from "./functions";
import settings from "./settings";
-import { syncAndRunChecks } from "./utils";
+import { syncAndRunChecks, syncFriends, syncGroups, syncGuilds } from "./utils";
export default definePlugin({
name: "RelationshipNotifier",
@@ -55,15 +53,24 @@ export default definePlugin({
}
],
+ flux: {
+ GUILD_CREATE: syncGuilds,
+ GUILD_DELETE: onGuildDelete,
+ CHANNEL_CREATE: syncGroups,
+ CHANNEL_DELETE: onChannelDelete,
+ RELATIONSHIP_ADD: syncFriends,
+ RELATIONSHIP_UPDATE: syncFriends,
+ RELATIONSHIP_REMOVE(e) {
+ onRelationshipRemove(e);
+ syncFriends();
+ },
+ CONNECTION_OPEN: syncAndRunChecks
+ },
+
async start() {
setTimeout(() => {
syncAndRunChecks();
}, 5000);
- forEachEvent((ev, cb) => FluxDispatcher.subscribe(ev, cb));
- },
-
- stop() {
- forEachEvent((ev, cb) => FluxDispatcher.unsubscribe(ev, cb));
},
removeFriend,