From 851fc84e66371a5481610384281b78481ebf32a9 Mon Sep 17 00:00:00 2001 From: ItsAlex <87634014+ItsAlexIK@users.noreply.github.com> Date: Sat, 19 Apr 2025 02:37:05 +0200 Subject: [PATCH] Encryptcord Fix (#235) * Encryptcord Fix * FixName * Update index.tsx * Update constants.ts * Update constants.ts * Update index.tsx * Final fix --- src/equicordplugins/encryptcord/index.tsx | 27 ++++++++++++++++------- src/utils/constants.ts | 4 ++++ 2 files changed, 23 insertions(+), 8 deletions(-) diff --git a/src/equicordplugins/encryptcord/index.tsx b/src/equicordplugins/encryptcord/index.tsx index a125e777..1f260ca4 100644 --- a/src/equicordplugins/encryptcord/index.tsx +++ b/src/equicordplugins/encryptcord/index.tsx @@ -12,7 +12,7 @@ import { } from "@api/Commands"; import * as DataStore from "@api/DataStore"; import { addMessagePreSendListener, MessageSendListener, removeMessagePreSendListener } from "@api/MessageEvents"; -import { Devs } from "@utils/constants"; +import { Devs, EquicordDevs } from "@utils/constants"; import { sleep } from "@utils/misc"; import definePlugin from "@utils/types"; import { @@ -140,7 +140,7 @@ const ChatBarIcon: ChatBarButtonFactory = ({ isMainChat }) => { export default definePlugin({ name: "Encryptcord", description: "End-to-end encryption in Discord!", - authors: [Devs.Inbestigator], + authors: [Devs.Inbestigator, EquicordDevs.ItsAlex], patches: [ { find: "INTERACTION_APPLICATION_COMMAND_INVALID_VERSION", @@ -360,18 +360,28 @@ async function handleGroupData(groupData) { // Handle joining group async function handleJoin(senderId: string, senderKey: string, encryptcordGroupMembers: object) { - encryptcordGroupMembers[senderId] = { key: senderKey, parent: UserStore.getCurrentUser().id, child: null }; - encryptcordGroupMembers[UserStore.getCurrentUser().id].child = senderId; + const currentUserId = UserStore.getCurrentUser().id; + + if (!encryptcordGroupMembers[senderId]) { + encryptcordGroupMembers[senderId] = { key: senderKey, parent: currentUserId, child: null }; + } + + if (!encryptcordGroupMembers[currentUserId]) { + encryptcordGroupMembers[currentUserId] = { key: "", parent: null, child: null }; + } + encryptcordGroupMembers[currentUserId].child = senderId; + await DataStore.set("encryptcordGroupMembers", encryptcordGroupMembers); + const groupChannel = await DataStore.get("encryptcordChannelId"); + const newMember = await UserUtils.getUser(senderId).catch(() => null); if (!newMember) return; const membersData = {}; - Object.entries(encryptcordGroupMembers) - .forEach(([memberId, value]) => { - membersData[memberId] = value; - }); + Object.entries(encryptcordGroupMembers).forEach(([memberId, value]) => { + membersData[memberId] = value; + }); const membersDataString = JSON.stringify({ members: membersData, channel: groupChannel }); @@ -382,6 +392,7 @@ async function handleJoin(senderId: string, senderKey: string, encryptcordGroupM }); await Promise.all(dmPromises); + await MessageActions.receiveMessage(groupChannel, { ...await createMessage("", senderId, groupChannel, 7), components: [{ type: 1, diff --git a/src/utils/constants.ts b/src/utils/constants.ts index a8cf16d7..e8686a82 100644 --- a/src/utils/constants.ts +++ b/src/utils/constants.ts @@ -1042,6 +1042,10 @@ export const EquicordDevs = Object.freeze({ name: "smuki", id: 691517398523576331n }, + ItsAlex: { + name: "ItsAlex", + id: 551023598203043840n + }, } satisfies Record); // iife so #__PURE__ works correctly