@@ -62,22 +62,24 @@ module.exports = {
6262 const voteSetup = VoteSetup . fromJSON ( interaction . guild , voteSetupJSON ) ;
6363 switch ( choice ) {
6464 case 'voteSend' :
65- await sendVote ( bot . settings [ interaction . guild . id ] , voteSetup ) ;
65+ interaction . deferUpdate ( ) ;
66+ await sendVote ( voteSetup , getRoleSettingsName ( bot . settings [ interaction . guild . id ] , voteSetup . role ) ) ;
6667 voteSetup . currentMemberIndex ++ ;
67- updateState ( 'currentMemberIndex' , voteSetup . currentMemberIndex ) ;
68- if ( voteSetup . currentMemberIndex >= voteSetup . members . length ) {
68+ updateState ( 'currentMemberIndex' , voteSetup . currentMemberIndex . toString ( ) ) ; // TODO debug why this isn't updating
69+ console . log ( voteSetup ) ;
70+ if ( voteSetup . currentMemberIndex > voteSetup . members . length ) {
6971 await message . delete ( ) ;
7072 } else {
71- await interaction . message . edit ( { embeds : [ getSetupEmbed ( voteSetup ) ] , components : [ generateVoteSetupButtons ( bot ) ] } ) ;
73+ await message . edit ( { embeds : [ getSetupEmbed ( voteSetup ) ] , components : [ generateVoteSetupButtons ( bot ) ] } ) ;
7274 }
7375 break ;
7476 case 'voteSkip' :
7577 voteSetup . currentMemberIndex ++ ;
76- updateState ( 'currentMemberIndex' , voteSetup . currentMemberIndex ) ;
78+ updateState ( 'currentMemberIndex' , voteSetup . currentMemberIndex . toString ( ) ) ;
7779 if ( voteSetup . currentMemberIndex >= voteSetup . members . length ) {
7880 await message . delete ( ) ;
7981 } else {
80- await interaction . message . edit ( { embeds : [ getSetupEmbed ( voteSetup ) ] , components : [ generateVoteSetupButtons ( bot ) ] } ) ;
82+ await message . edit ( { embeds : [ getSetupEmbed ( voteSetup ) ] , components : [ generateVoteSetupButtons ( bot ) ] } ) ;
8183 }
8284 break ;
8385 case 'voteAbort' :
@@ -86,6 +88,7 @@ module.exports = {
8688 case 'voteAddFeedbacks' : {
8789 // TODO add custom value with modal response
8890 // add function to grab custom feedback by message ID and process it
91+ // also make sure first 24 feedbacks show up in the select panel, since last is custom
8992 const { includedFeedbacks, unidentifiedFeedbacks, otherFeedbacks } = sortMemberFeedbacks ( voteSetup ) ;
9093 const addableFeedbacks = unidentifiedFeedbacks . concat ( otherFeedbacks ) . slice ( 0 , 25 ) ;
9194 let index = includedFeedbacks . length + 1 ;
@@ -157,6 +160,7 @@ class VoteSetup {
157160 static fromJSON ( guild , json ) {
158161 return new this ( {
159162 ...json ,
163+ currentMemberIndex : parseInt ( json . currentMemberIndex ) ,
160164 channel : guild . channels . cache . get ( json . channel ) ,
161165 members : json . members . map ( memberId => guild . members . cache . get ( memberId ) ) ,
162166 role : guild . roles . cache . get ( json . role )
@@ -191,20 +195,20 @@ function getSetupEmbed(voteSetup) {
191195 . setDescription ( `
192196 This vote will be for to <@${ member . id } > to ${ voteSetup . role }
193197 ` ) ;
194- const { includedFeedbacks, unidentifiedFeedbacks, otherFeedbacks } = sortMemberFeedbacks ( voteSetup . feedbacks , member ) ;
198+ const { includedFeedbacks, unidentifiedFeedbacks, otherFeedbacks } = sortMemberFeedbacks ( voteSetup ) ;
195199 let index = 1 ;
196200 // TODO add length check for 1024 character limit, add <type> feedback two as name and continue list
197201 embed . addFields ( [ {
198202 name : 'Included Feedback:' ,
199- value : includedFeedbacks . map ( feedback => getDisplayString ( index ++ , feedback ) ) . join ( '\n' ) || 'None'
203+ value : includedFeedbacks . map ( feedback => getSetupDisplayString ( index ++ , feedback ) ) . join ( '\n' ) || 'None'
200204 } ,
201205 {
202206 name : 'Unknown Tags:' ,
203- value : unidentifiedFeedbacks . map ( feedback => getDisplayString ( index ++ , feedback ) ) . join ( '\n' ) || 'None'
207+ value : unidentifiedFeedbacks . map ( feedback => getSetupDisplayString ( index ++ , feedback ) ) . join ( '\n' ) || 'None'
204208 } ,
205209 {
206210 name : 'Other Feedback:' ,
207- value : otherFeedbacks . map ( feedback => getDisplayString ( index ++ , feedback ) ) . join ( '\n' ) || 'None'
211+ value : otherFeedbacks . map ( feedback => getSetupDisplayString ( index ++ , feedback ) ) . join ( '\n' ) || 'None'
208212 } ] ) ;
209213 return embed ;
210214}
@@ -227,11 +231,16 @@ function sortMemberFeedbacks(voteSetup) {
227231 return { includedFeedbacks, unidentifiedFeedbacks, otherFeedbacks } ;
228232}
229233
230- function getDisplayString ( index , feedback ) {
234+ function getSetupDisplayString ( index , feedback ) {
231235 const tags = ( `${ feedback . dungeon ?. tag || '??' } ${ feedback . tier ?. tag || '??' } ` ) . padStart ( 11 ) ;
232236 return `\`${ index } .\` \`${ tags } \` ${ feedback . feedbackURL } <t:${ feedback . timeStamp } :f>` ;
233237}
234238
239+ function getVoteDisplayString ( index , feedback ) {
240+ const tags = ( `${ feedback . dungeon ?. tag || '??' } ${ feedback . tier ?. tag || '??' } ` ) . padStart ( 11 ) ;
241+ return `\`${ index } .\` \`${ tags } \` ${ feedback . feedbackURL } <t:${ feedback . timeStamp } :d>` ;
242+ }
243+
235244function getRoleSettingsName ( settings , role ) {
236245 return Object . keys ( settings . roles ) . find ( roleName => settings . roles [ roleName ] == role . id ) ;
237246}
@@ -248,10 +257,11 @@ async function sendVote(voteSetup, roleSettingsName) {
248257 . setAuthor ( { name : `${ member . displayName } to ${ voteSetup . role . name } ` , iconURL : member . user . displayAvatarURL ( { dynamic : true } ) } )
249258 . setDescription ( `${ member } \`${ member . displayName } \`` ) ;
250259 if ( embedStyling != undefined && embedStyling . image ) { embed . setThumbnail ( embedStyling . image ) ; }
251- const feedbacks = voteSetup . feedbacks . filter ( feedback => feedback . mentionedIDs . includes [ member . id ] && feedback . feedbackState == FeedbackState . Included ) ;
260+ const { includedFeedbacks } = sortMemberFeedbacks ( voteSetup ) ;
261+ let index = 1 ;
252262 embed . addFields ( {
253263 name : 'Feedback:' ,
254- value : getDisplayString ( feedbacks ) || 'None'
264+ value : includedFeedbacks . map ( feedback => getVoteDisplayString ( index ++ , feedback ) ) . join ( '\n' ) || 'None'
255265 } ) ;
256266 const voteMessage = await voteSetup . channel . send ( { embeds : [ embed ] } ) ;
257267 for ( const emoji of [ '✅' , '❌' , '👀' ] ) { voteMessage . react ( emoji ) ; }
0 commit comments