#!/bin/bash
# DYNR Module: Rclone Wizard v2.3.7

run_rclone_wizard() {
    BLUE='\033[38;5;45m'; PURPLE='\033[38;5;127m'; GOLD='\033[38;5;178m'; RED='\033[38;5;196m'; NC='\033[0m'
    LOG_DIR="$HOME/.dynr/logs/rclone-wizard"
    mkdir -p "$LOG_DIR"

    # --- Log Viewer ---
    view_logs() {
        if [ ! "$(ls -A "$LOG_DIR" 2>/dev/null)" ]; then
            echo -e "${RED}No logs found in $LOG_DIR${NC}"; sleep 1; return
        fi
        local selected_log=$(ls -t "$LOG_DIR" | fzf --height 15 --reverse --header "Select Log (q to exit)")
        [[ -n "$selected_log" ]] && less -R "$LOG_DIR/$selected_log"
    }

    # --- Navigation Engine ---
    navigate_path() {
        local type=$1; local base=$2; local current_dir="/"
        while true; do
            echo -e "${PURPLE}Navigation: ${GOLD}$type${NC} | ${BLUE}Path: ${GOLD}${base}${current_dir}${NC}" >&2
            if [[ "$type" == "LOCAL" ]]; then
                local options=$(find "$current_dir" -maxdepth 1 -type d -not -path "$current_dir" -exec basename {} \; 2>/dev/null)
            else
                local options=$(rclone lsd "${base}${current_dir}" 2>/dev/null | awk '{print substr($0, 32)}')
            fi
            local choice=$(printf "✅ SELECT THIS FOLDER\n..\nQUIT\n%s" "$options" | fzf --height 15 --reverse --header "Targeting Folder...")
            case "$choice" in
                "✅ SELECT THIS FOLDER") echo "${current_dir}"; return ;;
                "..") current_dir=$(dirname "$current_dir"); [[ "$current_dir" != "/" ]] && current_dir="${current_dir}/"; clear >&2 ;;
                "QUIT"|"") echo "CANCEL"; return ;;
                *) current_dir="${current_dir%/}/${choice}/"; current_dir=$(echo "$current_dir" | tr -s '/'); clear >&2 ;;
            esac
        done
    }

    clear
    echo -e "${PURPLE}=================================================${NC}"
    echo -e "${BLUE}    🐉  DYNASTY REVOLUTION: RCLONE WIZARD    🐉    ${NC}"
    echo -e "${PURPLE}=================================================${NC}"

    OPTIONS=("🚀 New Transfer (Copy or Move)" "📜 View Transfer Logs" "List Existing Remotes" "Configure New Remote" "Exit Wizard")
    CHOICE=$(printf "%s\n" "${OPTIONS[@]}" | fzf --height 40% --reverse --prompt="Select Stance > ")

    case "$CHOICE" in
        "🚀 New Transfer (Copy or Move)")
            REMOTES=$(rclone listremotes)
            # --- SOURCE ---
            S_BASE=$(printf "QUIT\nLOCAL_FILESYSTEM\n%s" "$REMOTES" | fzf --prompt="Select Source > ")
            [[ "$S_BASE" == "QUIT" || -z "$S_BASE" ]] && { run_rclone_wizard; return; }
            [[ "$S_BASE" != "LOCAL_FILESYSTEM" && "$S_BASE" != *":" ]] && S_BASE="${S_BASE}:"
            S_SUB=$(navigate_path "$([[ "$S_BASE" == "LOCAL_FILESYSTEM" ]] && echo "LOCAL" || echo "REMOTE")" "$S_BASE")
            [[ "$S_SUB" == "CANCEL" ]] && { run_rclone_wizard; return; }
            F_SRC="$([[ "$S_BASE" == "LOCAL_FILESYSTEM" ]] && echo "$S_SUB" || echo "${S_BASE}${S_SUB}")"

            # --- DESTINATION ---
            D_BASE=$(printf "QUIT\nLOCAL_FILESYSTEM\n%s" "$REMOTES" | fzf --prompt="Select Destination > ")
            [[ "$D_BASE" == "QUIT" || -z "$D_BASE" ]] && { run_rclone_wizard; return; }
            [[ "$D_BASE" != "LOCAL_FILESYSTEM" && "$D_BASE" != *":" ]] && D_BASE="${D_BASE}:"
            D_SUB=$(navigate_path "$([[ "$D_BASE" == "LOCAL_FILESYSTEM" ]] && echo "LOCAL" || echo "REMOTE")" "$D_BASE")
            [[ "$D_SUB" == "CANCEL" ]] && { run_rclone_wizard; return; }
            F_DEST="$([[ "$D_BASE" == "LOCAL_FILESYSTEM" ]] && echo "$D_SUB" || echo "${D_BASE}${D_SUB}")"

            # --- METHOD ---
            METHOD_CHOICE=$(printf "COPY (Safe - Keep Source)\nMOVE (Transfer & Delete Source)" | fzf --height 5 --reverse --prompt="Select Method > ")
            [[ -z "$METHOD_CHOICE" ]] && { run_rclone_wizard; return; }
            CMD=$([[ "$METHOD_CHOICE" == "COPY"* ]] && echo "copy" || echo "move")

            clear
            echo -e "${RED}🛡️  DYNASTY DATA SAFETY LOCK${NC}"
            echo -e "-------------------------------------------------"
            echo -e "${BLUE}FROM:   ${GOLD}\"$F_SRC\"${NC}"
            echo -e "${BLUE}TO:     ${GOLD}\"$F_DEST\"${NC}"
            echo -e "${BLUE}ACTION: ${PURPLE}${CMD^^}${NC}"
            echo -e "-------------------------------------------------"
            [[ "$CMD" == "move" ]] && echo -e "${RED}⚠️  WARNING: Files will be deleted from source after transfer!${NC}"
            read -p "Type 'SAFE' to manifest: " VAL

            if [[ "$VAL" == "SAFE" ]]; then
                TS=$(date +"%Y%m%d_%H%M%S"); LOG_FILE="$LOG_DIR/${CMD}_$TS.log"
                echo "Action: $CMD" > "$LOG_FILE"
                rclone "$CMD" -vP "$F_SRC" "$F_DEST" 2>&1 | tee -a "$LOG_FILE"
                read -p "Process Complete. Enter to return..."
            else
                echo -e "${RED}Aborted.${NC}"; sleep 1
            fi
            ;;
        "📜 View Transfer Logs") view_logs ;;
        "List Existing Remotes") rclone listremotes | sed 's/^/  ☁️  /' ;;
        "Configure New Remote") rclone config ;;
        *) dynr; return ;;
    esac
    run_rclone_wizard
}