#!/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}"
PACKAGE_NAME="${PACKAGE_NAME:-com.cpt.electronicmenu.tv.debug}"
ADMIN_COMPONENT="$PACKAGE_NAME/com.cpt.electronicmenu.tv.KioskDeviceAdminReceiver"
SYSTEM_HOME_PACKAGE="${SYSTEM_HOME_PACKAGE:-com.mitv.tvhome}"
SYSTEM_HOME_COMPONENT="${SYSTEM_HOME_COMPONENT:-$SYSTEM_HOME_PACKAGE/.MainActivityUserMode}"

if [[ -z "${TV_SERIAL:-}" ]]; then
  echo "必须通过 TV_SERIAL 明确指定目标电视。" >&2
  exit 2
fi
if [[ "$PACKAGE_NAME" != *.debug ]]; then
  echo "拒绝操作：本脚本只允许移除 .debug 测试包的 Device Owner。" >&2
  exit 2
fi
if [[ "$TV_SERIAL" == *:* ]]; then
  "$ADB_BIN" connect "$TV_SERIAL" >/dev/null 2>&1 || true
fi
if [[ "$($ADB_BIN -s "$TV_SERIAL" get-state 2>&1 || true)" != "device" ]]; then
  echo "目标电视不可用：$TV_SERIAL" >&2
  exit 2
fi

PACKAGE_DUMP="$($ADB_BIN -s "$TV_SERIAL" shell dumpsys package "$PACKAGE_NAME" 2>/dev/null | tr -d '\r')"
if [[ "$PACKAGE_DUMP" != *"TEST_ONLY"* ]]; then
  echo "拒绝操作：$PACKAGE_NAME 未带 TEST_ONLY 标记。" >&2
  exit 3
fi
POLICY_DUMP="$($ADB_BIN -s "$TV_SERIAL" shell dumpsys device_policy 2>/dev/null | tr -d '\r')"
if [[ "$POLICY_DUMP" != *"$PACKAGE_NAME"* ]]; then
  echo "拒绝操作：$PACKAGE_NAME 不是当前 Device Owner。" >&2
  exit 3
fi

"$ADB_BIN" -s "$TV_SERIAL" shell dpm remove-active-admin --user 0 "$ADMIN_COMPONENT"
"$ADB_BIN" -s "$TV_SERIAL" shell pm enable --user 0 "$SYSTEM_HOME_PACKAGE"
"$ADB_BIN" -s "$TV_SERIAL" shell cmd package set-home-activity "$SYSTEM_HOME_COMPONENT" >/dev/null
"$ADB_BIN" -s "$TV_SERIAL" shell input keyevent HOME
echo "已移除 Debug Device Owner 并恢复小米系统桌面。"
