1
- import { ActionRowBuilder , AttachmentBuilder , ButtonBuilder , ButtonStyle , EmbedBuilder } from "discord.js" ;
1
+ import { ActionRowBuilder , AttachmentBuilder , ButtonBuilder , ButtonStyle , EmbedBuilder , StringSelectMenuBuilder , StringSelectMenuOptionBuilder } from "discord.js" ;
2
2
import Inventory from "../database/entities/app/Inventory" ;
3
3
import { CoreClient } from "../client/client" ;
4
4
import EmbedColours from "../constants/EmbedColours" ;
@@ -24,7 +24,8 @@ interface InventoryPageCards {
24
24
25
25
interface ReturnedInventoryPage {
26
26
embed : EmbedBuilder ,
27
- row : ActionRowBuilder < ButtonBuilder > ,
27
+ row1 : ActionRowBuilder < ButtonBuilder > ,
28
+ row2 : ActionRowBuilder < StringSelectMenuBuilder > ,
28
29
image : AttachmentBuilder ,
29
30
}
30
31
@@ -99,7 +100,7 @@ export default class InventoryHelper {
99
100
. setColor ( EmbedColours . Ok )
100
101
. setImage ( "attachment://page.png" ) ;
101
102
102
- const row = new ActionRowBuilder < ButtonBuilder > ( )
103
+ const row1 = new ActionRowBuilder < ButtonBuilder > ( )
103
104
. addComponents (
104
105
new ButtonBuilder ( )
105
106
. setCustomId ( `inventory ${ userid } ${ page - 1 } ` )
@@ -112,9 +113,23 @@ export default class InventoryHelper {
112
113
. setStyle ( ButtonStyle . Primary )
113
114
. setDisabled ( page + 1 == pages . length ) ) ;
114
115
116
+ let pageNum = 0 ;
117
+
118
+ const row2 = new ActionRowBuilder < StringSelectMenuBuilder > ( )
119
+ . addComponents (
120
+ new StringSelectMenuBuilder ( )
121
+ . setCustomId ( "inventory" )
122
+ . setPlaceholder ( `${ currentPage . name } (${ currentPage . seriesSubpage + 1 } )` )
123
+ . addOptions ( ...pages . map ( x =>
124
+ new StringSelectMenuOptionBuilder ( )
125
+ . setLabel ( `${ x . name } (${ x . seriesSubpage + 1 } )` . substring ( 0 , 100 ) )
126
+ . setDescription ( `Page ${ pageNum + 1 } ` )
127
+ . setDefault ( currentPage . id == x . id )
128
+ . setValue ( `${ userid } ${ pageNum ++ } ` ) ) ) ) ;
129
+
115
130
const buffer = await ImageHelper . GenerateCardImageGrid ( currentPage . cards . map ( x => ( { id : x . id , path : x . path } ) ) ) ;
116
131
const image = new AttachmentBuilder ( buffer , { name : "page.png" } ) ;
117
132
118
- return { embed, row , image } ;
133
+ return { embed, row1 , row2 , image } ;
119
134
}
120
135
}
0 commit comments