#!/usr/bin/env bash
# Phone Agent APK install helper commands.
#
# Usage:
#   source ./phoneagent-apk-aliases.sh
#   pa-apk-devices
#   pa-apk-install phone-agent.apk
#   pa-apk-setup
#   pa-plans

export PA_APK_FILE="${PA_APK_FILE:-phone-agent.apk}"
export PA_APK_PACKAGE="${PA_APK_PACKAGE:-com.agentphone.app}"
export PA_SITE_URL="${PA_SITE_URL:-https://phonerelay.dev}"

pa-apk-require-adb() {
  if ! command -v adb >/dev/null 2>&1; then
    echo "adb not found. Install Android platform-tools first."
    return 127
  fi
}

pa-apk-devices() {
  pa-apk-require-adb || return $?
  adb devices
  echo
  echo "If the list is empty: enable Developer options + USB debugging, then accept the RSA prompt on the phone."
}

pa-apk-install() {
  pa-apk-require-adb || return $?
  local apk="${1:-$PA_APK_FILE}"
  if [ ! -f "$apk" ]; then
    echo "APK not found: $apk"
    echo "Put the APK in this folder, or run: pa-apk-install /path/to/app.apk"
    return 2
  fi
  adb install -r "$apk"
}

pa-apk-clean-install() {
  pa-apk-require-adb || return $?
  local apk="${1:-$PA_APK_FILE}"
  adb uninstall "$PA_APK_PACKAGE" || true
  adb install "$apk"
}

pa-apk-uninstall() {
  pa-apk-require-adb || return $?
  adb uninstall "$PA_APK_PACKAGE"
}

pa-apk-info() {
  pa-apk-require-adb || return $?
  adb shell dumpsys package "$PA_APK_PACKAGE" | sed -n '1,80p'
}

pa-apk-open() {
  pa-apk-require-adb || return $?
  adb shell monkey -p "$PA_APK_PACKAGE" -c android.intent.category.LAUNCHER 1
}

pa-apk-setup() {
  local url="${PA_SITE_URL%/}/setup.html"
  echo "$url"
  if command -v xdg-open >/dev/null 2>&1; then
    xdg-open "$url" >/dev/null 2>&1 &
  elif command -v open >/dev/null 2>&1; then
    open "$url" >/dev/null 2>&1 &
  fi
}

pa-apk-webchat() {
  local url="${PA_SITE_URL%/}/app/webchat/chat.html"
  echo "$url"
  if command -v xdg-open >/dev/null 2>&1; then
    xdg-open "$url" >/dev/null 2>&1 &
  elif command -v open >/dev/null 2>&1; then
    open "$url" >/dev/null 2>&1 &
  fi
}

pa-site-open() {
  local url="$1"
  echo "$url"
  if command -v xdg-open >/dev/null 2>&1; then
    xdg-open "$url" >/dev/null 2>&1 &
  elif command -v open >/dev/null 2>&1; then
    open "$url" >/dev/null 2>&1 &
  fi
}

pa-plans() {
  pa-site-open "${PA_SITE_URL%/}/subscribe.html"
}

pa-account() {
  pa-site-open "${PA_SITE_URL%/}/account.html"
}

pa-private-docs() {
  pa-site-open "${PA_SITE_URL%/}/docs/private-server.html"
}

pa-apk-help() {
  cat <<'EOF'
Phone Agent APK commands:
  pa-apk-devices              Show connected Android devices
  pa-apk-install [apk]        Install/update the APK with adb install -r
  pa-apk-clean-install [apk]  Uninstall package, then install APK
  pa-apk-uninstall            Remove Phone Agent from the connected phone
  pa-apk-info                 Show installed package info
  pa-apk-open                 Launch Phone Agent on the phone
  pa-apk-setup                Open setup page in desktop browser
  pa-apk-webchat              Open WebChat in desktop browser
  pa-plans                    Open Plans / paid upgrades
  pa-account                  Open subscriber account
  pa-private-docs             Open Private Server docs

Env overrides:
  PA_APK_FILE=phone-agent.apk
  PA_APK_PACKAGE=com.agentphone.app
  PA_SITE_URL=https://phonerelay.dev
EOF
}

alias pa-adb='pa-apk-devices'
alias pa-install='pa-apk-install'
alias pa-reinstall='pa-apk-clean-install'

echo "Phone Agent APK aliases loaded: pa-apk-devices, pa-apk-install, pa-apk-clean-install, pa-apk-setup, pa-apk-webchat, pa-plans"
