diff options
| author | V <vendicated@riseup.net> | 2023-04-22 03:18:19 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-04-22 01:18:19 +0000 |
| commit | 63fc354d483b86857bbee7f540c66ba614fc0f1f (patch) | |
| tree | 6ebe100e5ff63254adfdb0c44cb473dcc339cf35 /src/plugins/relationshipNotifier | |
| parent | c6f0c84935db37e2a18578a081404d84292fe36a (diff) | |
| download | Vencord-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.ts | 41 | ||||
| -rw-r--r-- | src/plugins/relationshipNotifier/index.ts | 25 |
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, |
