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

SDK_ROOT="${ANDROID_SDK_ROOT:-$HOME/Library/Android/sdk}"
ADB_BIN="${ADB_BIN:-$SDK_ROOT/platform-tools/adb}"
SYSTEM_HOME_PACKAGE="${SYSTEM_HOME_PACKAGE:-com.mitv.tvhome}"
SYSTEM_HOME_COMPONENT="${SYSTEM_HOME_COMPONENT:-$SYSTEM_HOME_PACKAGE/.MainActivityUserMode}"
APP_PACKAGE="${APP_PACKAGE:-com.cpt.electronicmenu.tv}"
APP_HOME_ALIAS="$APP_PACKAGE/com.cpt.electronicmenu.tv.ManagedHomeActivity"

if [[ -z "${TV_SERIAL:-}" ]]; then
  echo "必须通过 TV_SERIAL 明确指定目标电视。" >&2
  exit 2
fi
if [[ "$TV_SERIAL" == *:* ]]; then
  "$ADB_BIN" connect "$TV_SERIAL" >/dev/null 2>&1 || true
fi
STATE="$($ADB_BIN -s "$TV_SERIAL" get-state 2>&1 || true)"
if [[ "$STATE" != "device" ]]; then
  echo "目标电视不可用：${TV_SERIAL}（状态：${STATE}）" >&2
  exit 2
fi

"$ADB_BIN" -s "$TV_SERIAL" shell cmd package install-existing --user 0 "$SYSTEM_HOME_PACKAGE" >/dev/null 2>&1 || true
"$ADB_BIN" -s "$TV_SERIAL" shell pm enable --user 0 "$SYSTEM_HOME_PACKAGE"
"$ADB_BIN" -s "$TV_SERIAL" shell pm disable "$APP_HOME_ALIAS" >/dev/null 2>&1 || true
if ! "$ADB_BIN" -s "$TV_SERIAL" shell cmd package set-home-activity "$SYSTEM_HOME_COMPONENT"; then
  "$ADB_BIN" -s "$TV_SERIAL" shell pm set-home-activity "$SYSTEM_HOME_COMPONENT"
fi
"$ADB_BIN" -s "$TV_SERIAL" shell input keyevent HOME

HOME_COMPONENT="$($ADB_BIN -s "$TV_SERIAL" shell cmd package resolve-activity --brief -a android.intent.action.MAIN -c android.intent.category.HOME 2>/dev/null | tr -d '\r' | tail -1)"
echo "恢复后的默认 Home：${HOME_COMPONENT:-未回读到}"
if [[ "$HOME_COMPONENT" != "$SYSTEM_HOME_PACKAGE"/* ]]; then
  echo "系统桌面已启用，但默认 Home 回读不一致，请在电视默认应用设置中手动选择。" >&2
  exit 3
fi
echo "系统桌面已恢复。"
