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 { console.log('Preview Button Clicked'); 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) { console.error('Current panel not found in embed:', currentEmbed.title); return await interaction.reply({ content: 'Could not determine current panel. Please try again.', ephemeral: true }); } console.log('Found Panel:', currentPanel); // First find or create the settings document let settings = await GuildSettings.findOne({ guildId: interaction.guildId }); if (!settings) { settings = new GuildSettings({ guildId: interaction.guildId }); } // Update the lastSetupPanel field settings.lastSetupPanel = currentPanel; // Save the document await settings.save(); // Verify the save const verifySettings = await GuildSettings.findOne({ guildId: interaction.guildId }); console.log('Verified Settings:', { guildId: verifySettings.guildId, lastSetupPanel: verifySettings.lastSetupPanel, hasLastSetupPanel: !!verifySettings.lastSetupPanel }); const embed = generatePreviewEmbed(settings); 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 }); } } };