import { ButtonInteraction } from "discord.js";
import { lootdropService } from "@shared/modules/economy/lootdrop.service";
import { UserError } from "@shared/lib/errors";
import { getLootdropClaimedMessage } from "./lootdrop.view";
import { terminalService } from "@modules/system/terminal.service";
import { LOOTDROP_CUSTOM_IDS } from "./economy.types";

export async function handleLootdropInteraction(interaction: ButtonInteraction) {
    if (interaction.customId === LOOTDROP_CUSTOM_IDS.CLAIM) {
        await interaction.deferReply({ ephemeral: true });

        const result = await lootdropService.tryClaim(interaction.message.id, interaction.user.id, interaction.user.username);

        if (!result.success) {
            throw new UserError(result.error || "Failed to claim.");
        }

        // Update terminal display after successful claim
        terminalService.update();

        await interaction.editReply({
            content: `🎉 You successfully claimed **${result.amount} ${result.currency}**!`
        });

        const { content, files, components } = await getLootdropClaimedMessage(
            interaction.user.id,
            interaction.user.username,
            interaction.user.displayAvatarURL({ extension: "png" }),
            result.amount || 0,
            result.currency || "Coins"
        );

        await interaction.message.edit({
            content,
            embeds: [],
            files,
            components
        });
    }
}
