package net.viper.status.modules.chat;

import java.util.Map;

/**
 * Ersetzt Emoji-Shortcuts (:smile:, :heart:, …) durch Unicode-Zeichen.
 *
 * Bedrock-Spieler (Geyser) unterst\u00fctzen Unicode-Emojis ebenfalls,
 * da sie als regul\u00e4re UTF-8 Zeichen in TextComponents \u00fcbertragen werden.
 */
public class EmojiParser {

    private final Map<String, String> mappings;
    private final boolean enabled;

    public EmojiParser(Map<String, String> mappings, boolean enabled) {
        this.mappings = mappings;
        this.enabled  = enabled;
    }

    /**
     * Konvertiert alle bekannten Emoji-Shortcuts in der Nachricht zu Unicode.
     * Nicht erkannte Shortcuts bleiben unver\u00e4ndert.
     *
     * @param message Die Originalnachricht des Spielers
     * @return Nachricht mit ersetzten Emojis
     */
    public String parse(String message) {
        if (!enabled || message == null || message.isEmpty()) return message;

        String result = message;
        for (Map.Entry<String, String> entry : mappings.entrySet()) {
            result = result.replace(entry.getKey(), entry.getValue());
        }
        return result;
    }

    /**
     * Gibt eine lesbare Liste aller Emojis zur\u00fcck (f\u00fcr /emoji list).
     */
    public String buildEmojiList() {
        if (mappings.isEmpty()) return "&cKeine Emojis konfiguriert.";
        StringBuilder sb = new StringBuilder();
        sb.append("&eVerf\u00fcgbare Emojis:\n");
        int i = 0;
        for (Map.Entry<String, String> entry : mappings.entrySet()) {
            sb.append("&7").append(entry.getKey()).append(" &f→ ").append(entry.getValue());
            if (i < mappings.size() - 1) sb.append("  ");
            i++;
        }
        return sb.toString();
    }
}