#!/usr/bin/bash

# Show Magic Trackpad monitoring status

# XDG Base Directory Specification
XDG_DATA_HOME="${XDG_DATA_HOME:-$HOME/.local/share}"
DATA_DIR="$XDG_DATA_HOME/trackpad-monitor"

# Read configuration for display values
XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}"
CONFIG_FILE="$XDG_CONFIG_HOME/trackpad-monitor/config"
CACHE_EXPIRY_DAYS=30  # Default
if [[ -f "$CONFIG_FILE" ]]; then
    while IFS='=' read -r key value; do
        [[ "$key" =~ ^#.*$ ]] && continue
        [[ -z "$key" ]] && continue
        value="${value%%#*}"
        value="${value#"${value%%[![:space:]]*}"}"
        value="${value%"${value##*[![:space:]]}"}"
        case "$key" in
            CACHE_EXPIRY_DAYS) CACHE_EXPIRY_DAYS="$value" ;;
        esac
    done < <(grep -v '^[[:space:]]*$' "$CONFIG_FILE")
fi

echo "=== Magic Trackpad Status ==="
echo

# Show monitored device
if [[ -f "$DATA_DIR/device-mac-cache" ]]; then
    MAC=$(cat "$DATA_DIR/device-mac-cache")
    echo "Monitored Device: $MAC"

    # Get device info (cache output to avoid multiple calls)
    DEVICE_INFO=$(bluetoothctl info "$MAC" 2>/dev/null)
    if [[ -n "$DEVICE_INFO" ]]; then
        NAME=$(echo "$DEVICE_INFO" | grep "Name:" | cut -d: -f2- | xargs)
        CONNECTED=$(echo "$DEVICE_INFO" | grep "Connected:" | awk '{print $2}')
        echo "Device Name: $NAME"
        echo "Currently Connected: $CONNECTED"
    fi
else
    echo "No device cached yet"
fi

echo

# Show last connected time
if [[ -f "$DATA_DIR/last-connected" ]]; then
    LAST_CONNECTED=$(cat "$DATA_DIR/last-connected")
    echo "Last Verified Connected: $LAST_CONNECTED"

    # Calculate time since (validate timestamp is numeric)
    TIMESTAMP=$(echo "$LAST_CONNECTED" | grep -oP '\(\K[0-9]+(?=\))' || true)
    if [[ -n "$TIMESTAMP" ]] && [[ "$TIMESTAMP" =~ ^[0-9]+$ ]]; then
        CURRENT=$(date +%s)
        SECONDS_AGO=$((CURRENT - TIMESTAMP))

        if [[ $SECONDS_AGO -lt 60 ]]; then
            echo "  (${SECONDS_AGO} seconds ago)"
        elif [[ $SECONDS_AGO -lt 3600 ]]; then
            echo "  ($((SECONDS_AGO / 60)) minutes ago)"
        else
            echo "  ($((SECONDS_AGO / 3600)) hours ago)"
        fi
    fi
else
    echo "Last Connected: Unknown"
fi

echo

# Show service status
echo "Service Status:"

# Check if service unit exists
SERVICE_FOUND=false
if systemctl --user list-unit-files magic-trackpad-monitor.service 2>/dev/null | grep -q "magic-trackpad-monitor.service"; then
    SERVICE_FOUND=true
fi

# Alternative check: see if systemctl can find the unit at all
if [ "$SERVICE_FOUND" = false ]; then
    if systemctl --user cat magic-trackpad-monitor.service &>/dev/null; then
        SERVICE_FOUND=true
    fi
fi

if [ "$SERVICE_FOUND" = false ]; then
    echo "  ✗ Service not installed"
    echo
    echo "The magic-trackpad-monitor.service is not installed."
    echo
    echo "To install it:"
    echo "  1. Copy magic-trackpad-monitor.service to ~/.config/systemd/user/"
    echo "  2. Run: systemctl --user daemon-reload"
    echo "  3. Run: systemctl --user enable magic-trackpad-monitor.service"
    echo "  4. Run: systemctl --user start magic-trackpad-monitor.service"
    echo
    read -p "Would you like to install it now? [y/N] " -n 1 -r
    echo
    if [[ $REPLY =~ ^[Yy]$ ]]; then
        # Find the service file
        SERVICE_FILE=""
        for path in "/usr/lib/systemd/user/magic-trackpad-monitor.service" \
                    "/usr/local/share/magic-trackpad-monitor/magic-trackpad-monitor.service" \
                    "$(dirname "$0")/../share/magic-trackpad-monitor/magic-trackpad-monitor.service" \
                    "$(dirname "$0")/magic-trackpad-monitor.service"; do
            if [[ -f "$path" ]]; then
                SERVICE_FILE="$path"
                break
            fi
        done

        if [[ -n "$SERVICE_FILE" ]]; then
            mkdir -p ~/.config/systemd/user
            cp "$SERVICE_FILE" ~/.config/systemd/user/
            if ! systemctl --user daemon-reload; then
                echo "Error: Failed to reload systemd daemon"
                exit 1
            fi
            if ! systemctl --user enable magic-trackpad-monitor.service; then
                echo "Error: Failed to enable service"
                exit 1
            fi
            if ! systemctl --user start magic-trackpad-monitor.service; then
                echo "Error: Failed to start service"
                exit 1
            fi
            echo "Service installed and started successfully!"
        else
            echo "Error: Could not find magic-trackpad-monitor.service file"
            echo "Please install the package or run the installer script"
        fi
    fi
else
    systemctl --user is-active magic-trackpad-monitor.service &>/dev/null
    if [[ $? -eq 0 ]]; then
        echo "  ✓ Running"
    else
        echo "  ✗ Not running"
        echo
        read -p "Would you like to start it now? [y/N] " -n 1 -r
        echo
        if [[ $REPLY =~ ^[Yy]$ ]]; then
            systemctl --user start magic-trackpad-monitor.service
            echo "Service started successfully!"
        fi
    fi

    systemctl --user is-enabled magic-trackpad-monitor.service &>/dev/null
    if [[ $? -eq 0 ]]; then
        echo "  ✓ Enabled (starts on boot)"
    else
        echo "  ✗ Not enabled"
        echo
        read -p "Would you like to enable it? [y/N] " -n 1 -r
        echo
        if [[ $REPLY =~ ^[Yy]$ ]]; then
            systemctl --user enable magic-trackpad-monitor.service
            echo "Service enabled successfully!"
        fi
    fi
fi

echo
echo "Cache expiry: $CACHE_EXPIRY_DAYS days"
if [[ -f "$DATA_DIR/device-mac-cache" ]]; then
    CACHE_AGE_DAYS=$(( ($(date +%s) - $(stat -c %Y "$DATA_DIR/device-mac-cache")) / 86400 ))
    echo "Cache age: ${CACHE_AGE_DAYS} days"
fi
