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

if [[ $# -lt 1 ]]; then
  echo "Usage: $0 <tv-ip>" >&2
  echo "Run only after factory reset / fresh setup with ADB enabled and authorized." >&2
  exit 2
fi

IP="$1"
SERIAL="$IP:5555"
APP="com.cpt.electronicmenu.tv"
ADMIN="$APP/.KioskDeviceAdminReceiver"
ROOT_DIR="$(cd "$(dirname "$0")" && pwd)"
APK="$ROOT_DIR/downloads/electronic-menu-tv-rdfz-v1.3.10-xiaomi-accessibility-autostart-release-signed.apk"
ADB="${ADB:-/Users/sunqianqian/Library/Android/sdk/platform-tools/adb}"

log() {
  printf '[%s] %s\n' "$(date '+%F %T')" "$*"
}

adb_target() {
  "$ADB" -s "$SERIAL" "$@"
}

log "Connect $SERIAL"
"$ADB" connect "$SERIAL" >/dev/null || true
state="$("$ADB" devices | awk -v serial="$SERIAL" '$1 == serial {print $2}')"
if [[ "$state" != "device" ]]; then
  echo "$SERIAL is not ready: ${state:-missing}" >&2
  exit 3
fi

log "Install APK"
adb_target install -r "$APK"

if ! adb_target shell pm list features | grep -q '^feature:android.software.device_admin$'; then
  echo "$SERIAL does not expose android.software.device_admin; Device Owner mode is not available on this TV firmware." >&2
  echo "Use the Xiaomi accessibility/whitelist setup or an external same-network watchdog instead." >&2
  exit 4
fi

log "Activate device admin"
adb_target shell dpm set-active-admin "$ADMIN"

log "Set device owner"
adb_target shell dpm set-device-owner "$ADMIN"

log "Apply app and Xiaomi startup settings"
adb_target shell settings put system start_3rd_app "$APP"
adb_target shell settings put system rt_service_process_white_list "com.xiaomi.voicecontrol,$APP"
adb_target shell settings put system rt_pkg_white_list "com.ktcp.video,com.xiaodianshi.tv.yst,com.gitvdemo.video,com.cibn.tv,com.ixigua.android.tv.wasu,com.tencent.qqmusictv,com.kwai.tv.yst,com.hunantv.license,$APP"
adb_target shell settings put global 3rd_app_show_loading_page "com.cibn.tv:com.gitvdemo.video:com.ktcp.video:com.hunantv.license:com.xiaodianshi.tv.yst:net.myvst.v2:com.huya.nftv:com.m1905.tv:$APP"
adb_target shell settings put secure enabled_accessibility_services "com.xiaomi.voicecontrol/.VoiceAccessibilityService:$APP/$APP.AutoStartAccessibilityService"
adb_target shell settings put secure accessibility_enabled 1

log "Start app"
adb_target shell monkey -p "$APP" -c android.intent.category.LAUNCHER 1 >/dev/null || true
sleep 5

log "Verify device owner and foreground"
adb_target shell dumpsys device_policy | grep -E "$APP|Device Owner|admin=|ComponentInfo" -n || true
adb_target shell dumpsys activity activities | grep -E 'topResumedActivity|mResumedActivity|mFocusedApp|mCurrentFocus' || true

log "Reboot for verification"
adb_target reboot
sleep 60
"$ADB" connect "$SERIAL" >/dev/null 2>&1 || true
adb_target shell getprop sys.boot_completed || true
adb_target shell dumpsys activity activities | grep -E 'topResumedActivity|mResumedActivity|mFocusedApp|mCurrentFocus' || true
