const { ActionRowBuilder, ButtonBuilder, ButtonStyle } = require('discord.js'); const GuildSettings = require('../../models/GuildSettings'); const { generateSetupEmbed } = require('../../utils/setupPages'); const { isSetupComplete } = require('../../utils/setupChecks'); module.exports = { customId: 'setup_back', async execute(interaction) { try { console.log('Back Button Clicked'); const settings = await GuildSettings.findOne({ guildId: interaction.guildId }); console.log('Retrieved Settings:', { guildId: settings?.guildId, lastSetupPanel: settings?.lastSetupPanel, hasSettings: !!settings, hasLastSetupPanel: !!settings?.lastSetupPanel }); if (!settings?.lastSetupPanel) { console.log('No lastSetupPanel found'); return await interaction.reply({ content: 'Could not determine previous panel. Please start over.', ephemeral: true }); } console.log('Generating embed for panel:', settings.lastSetupPanel); const embed = generateSetupEmbed(settings.lastSetupPanel, settings); const row = new ActionRowBuilder() .addComponents( new ButtonBuilder() .setCustomId(`setup_${settings.lastSetupPanel}`) .setLabel(`Configure ${settings.lastSetupPanel.charAt(0).toUpperCase() + settings.lastSetupPanel.slice(1)}`) .setStyle(ButtonStyle.Primary) .setEmoji(getStepEmoji(settings.lastSetupPanel)), new ButtonBuilder() .setCustomId('setup_next') .setLabel('Next') .setStyle(ButtonStyle.Secondary) .setEmoji('➡️') .setDisabled(!isStepConfigured(settings, settings.lastSetupPanel)) ); const controlRow = new ActionRowBuilder() .addComponents( new ButtonBuilder() .setCustomId('setup_preview') .setLabel('Preview Settings') .setStyle(ButtonStyle.Secondary) .setEmoji('👁️'), new ButtonBuilder() .setCustomId('setup_complete') .setLabel('Complete Setup') .setStyle(ButtonStyle.Success) .setEmoji('✅') .setDisabled(!isSetupComplete(settings)) ); await interaction.update({ embeds: [embed], components: [row, controlRow], ephemeral: true }); } catch (error) { console.error('Error in setup back:', error); await interaction.reply({ content: 'An error occurred while returning to setup.', ephemeral: true }); } } }; function getStepEmoji(step) { const emojis = { 'category': '🗂️', 'logs': '📝', 'roles': '👥', 'types': '📋', 'message': '✏️', 'panels': '📝' }; return emojis[step] || '⚙️'; } function isStepConfigured(settings, step) { const conditions = { 'category': settings?.ticketCategory, 'logs': settings?.logChannel, 'roles': settings?.staffRoles?.length, 'types': settings?.ticketTypes?.length, 'message': settings?.ticketMessage, 'panels': settings?.ticketPanels?.length }; return conditions[step] || false; }