const { ActionRowBuilder, ButtonBuilder, ButtonStyle } = require('discord.js'); const GuildSettings = require('../../models/GuildSettings'); const { generatePreviewEmbed } = require('../../commands/setup'); const { setupSteps } = require('../../utils/setupPages'); module.exports = { customId: 'setup_preview', async execute(interaction) { try { const currentEmbed = interaction.message.embeds[0]; // Extract panel name from title by matching emojis const currentPanel = Object.entries(setupSteps).find(([_, step]) => currentEmbed.title === step.title )?.[0]; if (!currentPanel) { return await interaction.reply({ content: 'Could not determine current panel. Please try again.', ephemeral: true }); } // Store current panel in database const updatedSettings = await GuildSettings.findOneAndUpdate( { guildId: interaction.guildId }, { $set: { lastSetupPanel: currentPanel } }, { upsert: true, new: true } ); const embed = generatePreviewEmbed(updatedSettings); const row = new ActionRowBuilder() .addComponents( new ButtonBuilder() .setCustomId('setup_back') .setLabel('Back to Setup') .setStyle(ButtonStyle.Secondary) .setEmoji('⬅️') ); await interaction.update({ embeds: [embed], components: [row], ephemeral: true }); } catch (error) { console.error('Error in preview:', error); await interaction.reply({ content: 'An error occurred while showing preview.', ephemeral: true }); } } };