From 664d3d1888005e74a2fc8c95ec5649b7696134e9 Mon Sep 17 00:00:00 2001 From: Ethan Lane Date: Fri, 2 Feb 2024 18:53:07 +0000 Subject: [PATCH] Fix inventory overriding the main array --- package-lock.json | 58 ++++++++++++++++++++++++++++++++++ package.json | 2 ++ src/buttonEvents/Inventory.ts | 6 ++-- src/commands/inventory.ts | 1 + src/helpers/InventoryHelper.ts | 5 ++- 5 files changed, 69 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7d0cd8c..c5ecb75 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,10 +10,12 @@ "license": "MIT", "dependencies": { "@discordjs/rest": "^2.0.0", + "@types/clone-deep": "^4.0.4", "@types/express": "^4.17.20", "@types/jest": "^29.0.0", "@types/uuid": "^9.0.0", "body-parser": "^1.20.2", + "clone-deep": "^4.0.1", "discord.js": "^14.3.0", "dotenv": "^16.0.0", "express": "^4.18.2", @@ -1785,6 +1787,11 @@ "@types/responselike": "^1.0.0" } }, + "node_modules/@types/clone-deep": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/clone-deep/-/clone-deep-4.0.4.tgz", + "integrity": "sha512-vXh6JuuaAha6sqEbJueYdh5zNBPPgG1OYumuz2UvLvriN6ABHDSW8ludREGWJb1MLIzbwZn4q4zUbUCerJTJfA==" + }, "node_modules/@types/connect": { "version": "3.4.38", "license": "MIT", @@ -3788,6 +3795,19 @@ "node": ">=0.8" } }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/clone-response": { "version": "1.0.3", "dev": true, @@ -6425,6 +6445,17 @@ "node": ">=8" } }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-promise": { "version": "2.2.2", "dev": true, @@ -6500,6 +6531,14 @@ "version": "2.0.0", "license": "ISC" }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/issue-regex": { "version": "4.1.0", "dev": true, @@ -7300,6 +7339,14 @@ "json-buffer": "3.0.1" } }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/kleur": { "version": "3.0.3", "license": "MIT", @@ -10241,6 +10288,17 @@ "sha.js": "bin.js" } }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/shebang-command": { "version": "2.0.0", "license": "MIT", diff --git a/package.json b/package.json index f0194d2..c649afd 100644 --- a/package.json +++ b/package.json @@ -26,10 +26,12 @@ "funding": "https://ko-fi.com/vylpes", "dependencies": { "@discordjs/rest": "^2.0.0", + "@types/clone-deep": "^4.0.4", "@types/express": "^4.17.20", "@types/jest": "^29.0.0", "@types/uuid": "^9.0.0", "body-parser": "^1.20.2", + "clone-deep": "^4.0.1", "discord.js": "^14.3.0", "dotenv": "^16.0.0", "express": "^4.18.2", diff --git a/src/buttonEvents/Inventory.ts b/src/buttonEvents/Inventory.ts index b89d9fa..44f5374 100644 --- a/src/buttonEvents/Inventory.ts +++ b/src/buttonEvents/Inventory.ts @@ -9,7 +9,7 @@ export default class Inventory extends ButtonEvent { const userid = interaction.customId.split(" ")[1]; const page = interaction.customId.split(" ")[2]; - const member = interaction.guild.members.cache.find(x => x.id == userid) || interaction.member; + const member = interaction.guild.members.cache.find(x => x.id == userid) || await interaction.guild.members.fetch(userid); if (!member) { await interaction.reply("Unable to find user."); @@ -20,10 +20,12 @@ export default class Inventory extends ButtonEvent { const embed = await InventoryHelper.GenerateInventoryPage(member.user.username, member.user.id, Number(page)); await interaction.update({ + content: `${member.user.username} - ${member.user.id}`, embeds: [ embed.embed ], components: [ embed.row ], }); - } catch { + } catch (e) { + console.error(e); await interaction.reply("No page for user found."); } } diff --git a/src/commands/inventory.ts b/src/commands/inventory.ts index 868b14d..9ef2c2d 100644 --- a/src/commands/inventory.ts +++ b/src/commands/inventory.ts @@ -33,6 +33,7 @@ export default class Inventory extends Command { const embed = await InventoryHelper.GenerateInventoryPage(user.username, user.id, pageNumber); await interaction.reply({ + content: `${user.username} - ${user.id}`, embeds: [ embed.embed ], components: [ embed.row ], }); diff --git a/src/helpers/InventoryHelper.ts b/src/helpers/InventoryHelper.ts index 3f4e4e9..1103694 100644 --- a/src/helpers/InventoryHelper.ts +++ b/src/helpers/InventoryHelper.ts @@ -3,6 +3,7 @@ import Inventory from "../database/entities/app/Inventory"; import { CoreClient } from "../client/client"; import EmbedColours from "../constants/EmbedColours"; import { CardRarity, CardRarityToString } from "../constants/CardRarity"; +import cloneDeep from "clone-deep"; interface InventoryPage { id: number, @@ -24,7 +25,9 @@ export default class InventoryHelper { const inventory = await Inventory.FetchAllByUserId(userid); - const allSeriesClaimed = CoreClient.Cards + const clientCards = cloneDeep(CoreClient.Cards); + + const allSeriesClaimed = clientCards .sort((a, b) => a.id - b.id) .filter(x => { x.cards = x.cards