#!/bin/bash

# Funktion zur Auswahl mit fuzzel oder choose
select_item() {
    local prompt="$1"
    local input="$2"
    if [[ "$OSTYPE" == "darwin"* ]]; then
        echo "$input" | choose -p "$prompt"
    else
        echo "$input" | fuzzel -d -p "$prompt"
    fi
}

# Funktion zum Bereinigen des ausgewählten Textes
clean_text() {
    local text="$1"
    if [[ "$text" == *": "* ]]; then
        echo "$text" | sed 's/^[^:]*: //'
    else
        echo "$text"
    fi
}

# Funktion zum Kopieren in die Zwischenablage
copy_to_clipboard() {
    local text="$1"
    if [[ "$OSTYPE" == "darwin"* ]]; then
        echo -n "$text" | pbcopy
    else
        echo -n "$text" | wl-copy
    fi
}

# Liste mit Name+User kombinieren und formatieren
entries=$(rbw list --fields name,user | awk -F'\t' '{print $1 " | " $2}')

# Auswahl des kombinierten Eintrags
selected=$(select_item "Wähle einen Login: " "$entries")

if [[ -n "$selected" ]]; then
    # Extrahiere Name und User aus der Auswahl
    name=$(echo "$selected" | awk -F' \\| ' '{print $1}')
    user=$(echo "$selected" | awk -F' \\| ' '{print $2}')

    # Hole Details mit beiden Parametern
    details=$(rbw get "$name" "$user" --full 2>/dev/null)

    if [[ -z "$details" ]]; then
        echo "Fehler beim Abrufen der Details"
        exit 1
    fi

    # Detailauswahl wie bisher
    selected_detail=$(select_item "Details für $name: " "$details")

    if [[ -n "$selected_detail" ]]; then
        cleaned_text=$(clean_text "$selected_detail")
        copy_to_clipboard "$cleaned_text"
        echo "In Zwischenablage kopiert: ${cleaned_text:0:20}..."

        # Passwortverarbeitung
        if [[ "$OSTYPE" != "darwin"* ]]; then
            choice=$(select_item "Passwort mit dotool eingeben?" "$(echo -e "Nein\nJa")")

            if [[ "$choice" == "Ja" ]]; then
                echo "Tippe Passwort in 5 Sekunden (Layout: DE)..."
                {
                    echo "typedelay 100"
                    echo "type $cleaned_text"
                } | DOTOOL_XKB_LAYOUT=de dotool && \
                    notify-send -t 5000 -u low "Eingabe abgeschlossen" "Inhalt wurde getippt"
            fi
        fi
    fi
fi