From cb57b245214a19cb6a141b75719f4c115507d625 Mon Sep 17 00:00:00 2001 From: Ethan Lane Date: Wed, 20 Dec 2023 19:31:21 +0000 Subject: [PATCH] Fix pagination bugs --- src/buttonEvents/Inventory.ts | 14 +++++++++----- src/commands/inventory.ts | 20 +++++++++++++++----- src/helpers/InventoryHelper.ts | 8 ++++---- 3 files changed, 28 insertions(+), 14 deletions(-) diff --git a/src/buttonEvents/Inventory.ts b/src/buttonEvents/Inventory.ts index f1fc2ea..63ea5a4 100644 --- a/src/buttonEvents/Inventory.ts +++ b/src/buttonEvents/Inventory.ts @@ -7,11 +7,15 @@ export default class Inventory extends ButtonEvent { const userid = interaction.customId.split(' ')[1]; const page = interaction.customId.split(' ')[2]; - const embed = await InventoryHelper.GenerateInventoryPage(interaction.user.username, userid, Number(page)); + try { + const embed = await InventoryHelper.GenerateInventoryPage(interaction.user.username, userid, Number(page)); - await interaction.reply({ - embeds: [ embed.embed ], - components: [ embed.row ], - }); + await interaction.update({ + embeds: [ embed.embed ], + components: [ embed.row ], + }); + } catch { + await interaction.reply("No page for user found."); + } } } \ No newline at end of file diff --git a/src/commands/inventory.ts b/src/commands/inventory.ts index e0359b2..39d0881 100644 --- a/src/commands/inventory.ts +++ b/src/commands/inventory.ts @@ -18,11 +18,21 @@ export default class Inventory extends Command { public override async execute(interaction: CommandInteraction) { const page = interaction.options.get('page'); - const embed = await InventoryHelper.GenerateInventoryPage(interaction.user.username, interaction.user.id, page ? Number(page.value) : 0); + try { + let pageNumber = 0; - await interaction.reply({ - embeds: [ embed.embed ], - components: [ embed.row ], - }); + if (page && page.value) { + pageNumber = Number(page.value) - 1; + } + + const embed = await InventoryHelper.GenerateInventoryPage(interaction.user.username, interaction.user.id, pageNumber); + + await interaction.reply({ + embeds: [ embed.embed ], + components: [ embed.row ], + }); + } catch { + await interaction.reply("No page for user found."); + } } } \ No newline at end of file diff --git a/src/helpers/InventoryHelper.ts b/src/helpers/InventoryHelper.ts index 06a7768..ad4bf85 100644 --- a/src/helpers/InventoryHelper.ts +++ b/src/helpers/InventoryHelper.ts @@ -21,7 +21,7 @@ interface InventoryPageCards { export default class InventoryHelper { public static async GenerateInventoryPage(username: string, userid: string, page: number): Promise<{ embed: EmbedBuilder, row: ActionRowBuilder }> { - const cardsPerPage = 9; + const cardsPerPage = 15; const inventory = await Inventory.FetchAllByUserId(userid); @@ -77,8 +77,8 @@ export default class InventoryHelper { const embed = new EmbedBuilder() .setTitle(username) - .setDescription(currentPage.cards.map(x => `[${x.id}] ${x.name} (${CardRarityToString(x.type)}) x${x.quantity}`).join('\n')) - .setFooter({ text: `${currentPage.name} (${currentPage.seriesSubpage + 1}) ยท Page ${page} of ${pages.length}` }) + .setDescription(`**${currentPage.name} (${currentPage.seriesSubpage + 1})**\n${currentPage.cards.map(x => `[${x.id}] ${x.name} (${CardRarityToString(x.type)}) x${x.quantity}`).join('\n')}`) + .setFooter({ text: `Page ${page + 1} of ${pages.length}` }) .setColor(EmbedColours.Ok); const row = new ActionRowBuilder() @@ -92,7 +92,7 @@ export default class InventoryHelper { .setCustomId(`inventory ${userid} ${page + 1}`) .setLabel("Next") .setStyle(ButtonStyle.Primary) - .setDisabled(page == pages.length)); + .setDisabled(page + 1 == pages.length)); return { embed, row }; }