#!/usr/bin/env bash
set -euo pipefail

GLANCE_PACKAGES=(
    com.glance.lockscreenM
    com.glance.ailockscreen
    com.glance.ai
)

die() {
    echo "error: $*" >&2
    exit 1
}

require_adb() {
    command -v adb >/dev/null 2>&1 || die "adb not found — install Android platform-tools"
}

wait_for_device() {
    echo "Waiting for an authorized ADB device..."
    adb wait-for-device

    for _ in $(seq 1 30); do
        if adb devices | awk 'NR>1 && $2=="device" { found=1 } END { exit !found }'; then
            return 0
        fi
        if adb devices | grep -q unauthorized; then
            echo "Tap Allow on the phone's USB debugging prompt."
        fi
        sleep 2
    done

    die "no authorized device — enable USB debugging and tap Allow"
}

adb_setting() {
    local key="$1"
    local value="$2"
    adb shell settings put secure "$key" "$value" >/dev/null
}

remove_package() {
    local pkg="$1"
    echo "=== $pkg ==="

    if ! adb shell pm list packages -a 2>/dev/null | tr -d '\r' | grep -q "^package:${pkg}$"; then
        echo "not present on device, skipping"
        return 0
    fi

    adb shell pm disable-user --user 0 "$pkg" 2>/dev/null | tr -d '\r' || true
    adb shell pm install-existing --user 0 "$pkg" 2>/dev/null | tr -d '\r' || true

    if adb shell pm uninstall --user 0 "$pkg" 2>/dev/null | tr -d '\r' | grep -qi success; then
        echo "removed for user 0"
    else
        echo "uninstall failed; package may already be removed or blocked as a system app"
    fi

    adb shell pm clear "$pkg" 2>/dev/null | tr -d '\r' || true
}

main() {
    require_adb
    wait_for_device

    echo "Device: $(adb shell getprop ro.product.manufacturer | tr -d '\r') $(adb shell getprop ro.product.model | tr -d '\r')"

    echo "Disabling Glance lock screen settings..."
    adb_setting state_glance_lockscreen 0
    adb_setting state_space_lockscreen 0

    for pkg in "${GLANCE_PACKAGES[@]}"; do
        remove_package "$pkg"
    done

    echo
    echo "Done. Remaining glance packages (if any):"
    if adb shell pm list packages -a 2>/dev/null | tr -d '\r' | grep -i glance; then
        echo "Some packages may still exist in the system image without root."
    else
        echo "(none)"
    fi

    echo
    echo "Lock screen toggles:"
    echo "  state_glance_lockscreen=$(adb shell settings get secure state_glance_lockscreen | tr -d '\r')"
    echo "  state_space_lockscreen=$(adb shell settings get secure state_space_lockscreen | tr -d '\r')"
}

main "$@"