#!/bin/bash
# Script de instalação StreamSync360 Linux

set -e

APP_NAME="StreamSync360"
ZIP_URL="https://static.controller360.com.br/upgrade/StreamSync360-linux.zip"
ZIP_FILE="/tmp/${APP_NAME}-linux.zip"
INSTALL_DIR="$HOME/.controllertech/$APP_NAME"
APPLICATIONS_DIR="$HOME/.local/share/applications"

GREEN="\033[1;32m"
YELLOW="\033[1;33m"
RED="\033[1;31m"
NC="\033[0m"

echo -e "${GREEN}✅ Validando dependências...${NC}"

for cmd in wget unzip; do
    if ! command -v "$cmd" >/dev/null 2>&1; then
        echo -e "${RED}❌ Erro: '$cmd' não está instalado.${NC}"
        exit 1
    fi
done

echo -e "${GREEN}✅ Baixando $APP_NAME...${NC}"
wget -O "$ZIP_FILE" "$ZIP_URL"

echo -e "${GREEN}🔧 Criando diretório de destino...${NC}"
mkdir -p "$INSTALL_DIR"

echo -e "${GREEN}🔧 Extraindo arquivos...${NC}"
unzip -o -d "$INSTALL_DIR" "$ZIP_FILE"

rm -f "$ZIP_FILE"

if [ ! -f "$INSTALL_DIR/appsettings.json" ]; then
    touch "$INSTALL_DIR/appsettings.json"
fi

if [ ! -f "$INSTALL_DIR/$APP_NAME" ]; then
    echo -e "${RED}❌ Erro: executável '$INSTALL_DIR/$APP_NAME' não encontrado após a extração.${NC}"
    exit 1
fi

if [ ! -f "$INSTALL_DIR/icon360.png" ]; then
    echo -e "${YELLOW}⚠️ Aviso: ícone '$INSTALL_DIR/icon360.png' não encontrado.${NC}"
fi

DESKTOP_DIR="$(xdg-user-dir DESKTOP 2>/dev/null || true)"

if [ -z "$DESKTOP_DIR" ]; then
    DESKTOP_DIR="$HOME/Desktop"
fi

mkdir -p "$DESKTOP_DIR"
mkdir -p "$APPLICATIONS_DIR"

DESKTOP_FILE="$DESKTOP_DIR/$APP_NAME.desktop"
APPLICATION_FILE="$APPLICATIONS_DIR/$APP_NAME.desktop"

echo -e "${GREEN}🔧 Criando lançador na Área de Trabalho...${NC}"

cat <<EOF > "$DESKTOP_FILE"
[Desktop Entry]
Name=$APP_NAME
Comment=Sincronizador do Controller360
Type=Application
Categories=System;
Exec=$INSTALL_DIR/$APP_NAME
Icon=$INSTALL_DIR/icon360.png
Path=$INSTALL_DIR
Terminal=true
StartupNotify=false
EOF

echo -e "${GREEN}🔧 Ajustando permissões...${NC}"

chmod -R u+rwX "$HOME/.controllertech"
chmod +x "$INSTALL_DIR/$APP_NAME"
chmod +x "$DESKTOP_FILE"

echo -e "${GREEN}🔧 Instalando lançador no menu de aplicações...${NC}"

cp "$DESKTOP_FILE" "$APPLICATION_FILE"
chmod +x "$APPLICATION_FILE"

if command -v update-desktop-database >/dev/null 2>&1; then
    update-desktop-database "$APPLICATIONS_DIR" 2>/dev/null || true
fi

echo -e "${GREEN}🔧 Tentando marcar o lançador como confiável...${NC}"

if command -v gio >/dev/null 2>&1; then
    gio set "$DESKTOP_FILE" "metadata::trusted" true 2>/dev/null || \
    gio set "$DESKTOP_FILE" "metadata::trusted" yes 2>/dev/null || true
fi

if command -v dbus-launch >/dev/null 2>&1 && command -v gio >/dev/null 2>&1; then
    dbus-launch gio set "$DESKTOP_FILE" "metadata::trusted" true 2>/dev/null || true
fi

if command -v desktop-file-validate >/dev/null 2>&1; then
    desktop-file-validate "$DESKTOP_FILE" 2>/dev/null || \
        echo -e "${YELLOW}⚠️ Aviso: o arquivo .desktop possui algum detalhe não validado pelo desktop-file-validate.${NC}"
fi

echo -e "${GREEN}✅ Instalação concluída com sucesso!${NC}"
echo -e "${GREEN}✅ Lançador criado em:${NC} $DESKTOP_FILE"
echo -e "${GREEN}✅ Atalho instalado no menu em:${NC} $APPLICATION_FILE"

echo -e "${YELLOW}⚠️ Observação: em algumas versões do GNOME/Ubuntu, pode ser necessário clicar com o botão direito no lançador e ativar 'Permitir execução' manualmente por política de segurança.${NC}"