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

if [[ $# -lt 1 ]]; then
  echo "Usage: $0 <tv-ip>" >&2
  exit 2
fi

IP="$1"
SERIAL="$IP:5555"
APP="com.cpt.electronicmenu.tv"
SERVICE="$APP/com.cpt.electronicmenu.tv.AutoStartAccessibilityService"
XIAOAI_SERVICE="com.xiaomi.voicecontrol/.VoiceAccessibilityService"
ROOT_DIR="$(cd "$(dirname "$0")" && pwd)"
APK="$ROOT_DIR/downloads/electronic-menu-tv-rdfz-v1.3.11-xiaomi-3s-first-screen-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" "$@"
}

"$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 accessibility auto-start APK"
adb_target install -r "$APK"

log "Keep Xiaomi home enabled"
adb_target shell pm enable com.mitv.tvhome || true

log "Write Xiaomi and accessibility persistence settings"
adb_target shell settings put global disable_back_home_whitelist disable
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 "$XIAOAI_SERVICE:$SERVICE"
adb_target shell settings put secure accessibility_enabled 1
adb_target shell cmd deviceidle whitelist "+$APP" >/dev/null 2>&1 || true

log "Allow background-related appops when available"
adb_target shell appops set "$APP" SYSTEM_ALERT_WINDOW allow 2>/dev/null || true
adb_target shell appops set "$APP" RUN_IN_BACKGROUND allow 2>/dev/null || true
adb_target shell appops set "$APP" RUN_ANY_IN_BACKGROUND allow 2>/dev/null || true
adb_target shell appops set "$APP" START_FOREGROUND allow 2>/dev/null || true

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

log "Verify pre-reboot state"
adb_target shell settings get global disable_back_home_whitelist
adb_target shell settings get system rt_service_process_white_list
adb_target shell settings get secure enabled_accessibility_services
adb_target shell settings get secure accessibility_enabled
adb_target shell dumpsys deviceidle whitelist | grep "$APP" || true
adb_target shell dumpsys accessibility | grep -E 'AutoStartAccessibilityService|com.cpt.electronicmenu|Bound services|Enabled services|Crashed services' -n -C 2 || true
adb_target shell dumpsys activity activities | grep -E 'topResumedActivity|mResumedActivity|mFocusedApp|mCurrentFocus' || true

log "Done. Power off/on this TV and verify foreground is com.cpt.electronicmenu.tv/.MainActivity."
