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

APP_NAME="BySAD Desktop"
APP_ID="ar.com.byads.desktop"
BINARY_NAME="bysad_desktop"
INSTALL_DIR="${HOME}/.local/opt/${BINARY_NAME}"
ICON_DIR="${HOME}/.local/share/icons/hicolor/512x512/apps"
APPLICATIONS_DIR="${HOME}/.local/share/applications"
TMP_DIR="$(mktemp -d)"

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

echo "=========================================================="
echo "  Instalando / Actualizando ${APP_NAME} en tu PC Linux..."
echo "=========================================================="

pkill -x "${BINARY_NAME}" 2>/dev/null || true

mkdir -p "${INSTALL_DIR}" "${ICON_DIR}" "${APPLICATIONS_DIR}" "${HOME}/.local/share/icons"

echo "==> Descargando paquete oficial..."
curl -sL https://ale.byads.com.ar/files/BySAD_Desktop_Linux.tar.gz -o "${TMP_DIR}/bundle.tar.gz"

echo "==> Descomprimiendo archivos..."
tar -xzf "${TMP_DIR}/bundle.tar.gz" -C "${TMP_DIR}"
rm -rf "${INSTALL_DIR:?}"/*
cp -a "${TMP_DIR}/bundle/." "${INSTALL_DIR}/"
chmod +x "${INSTALL_DIR}/${BINARY_NAME}"

# Icono
if [[ -f "${INSTALL_DIR}/data/flutter_assets/assets/icon.png" ]]; then
  cp "${INSTALL_DIR}/data/flutter_assets/assets/icon.png" "${ICON_DIR}/${APP_ID}.png"
  cp "${INSTALL_DIR}/data/flutter_assets/assets/icon.png" "${HOME}/.local/share/icons/${APP_ID}.png"
fi

DESKTOP_FILE="${APPLICATIONS_DIR}/${APP_ID}.desktop"
cat >"${DESKTOP_FILE}" <<EOF
[Desktop Entry]
Version=1.0
Type=Application
Name=${APP_NAME}
Comment=Escritorio Remoto VPS y Android TV BySAD
Exec=${INSTALL_DIR}/${BINARY_NAME}
Icon=${ICON_DIR}/${APP_ID}.png
Terminal=false
Categories=Utility;Network;RemoteAccess;Development;
StartupNotify=true
StartupWMClass=${APP_ID}
EOF
chmod +x "${DESKTOP_FILE}"

DESKTOP_DIR=""
if command -v xdg-user-dir >/dev/null 2>&1; then
  DESKTOP_DIR="$(xdg-user-dir DESKTOP 2>/dev/null || true)"
fi
if [[ -z "${DESKTOP_DIR}" || "${DESKTOP_DIR}" == "${HOME}" ]]; then
  if [[ -d "${HOME}/Escritorio" ]]; then
    DESKTOP_DIR="${HOME}/Escritorio"
  elif [[ -d "${HOME}/Desktop" ]]; then
    DESKTOP_DIR="${HOME}/Desktop"
  fi
fi

if [[ -n "${DESKTOP_DIR}" && -d "${DESKTOP_DIR}" ]]; then
  cp "${DESKTOP_FILE}" "${DESKTOP_DIR}/${APP_NAME}.desktop"
  chmod +x "${DESKTOP_DIR}/${APP_NAME}.desktop"
  if command -v gio >/dev/null 2>&1; then
    gio set "${DESKTOP_DIR}/${APP_NAME}.desktop" metadata::trusted yes 2>/dev/null || true
  fi
fi

command -v update-desktop-database >/dev/null 2>&1 && update-desktop-database "${APPLICATIONS_DIR}" >/dev/null 2>&1 || true

echo "=========================================================="
echo "✔ ¡${APP_NAME} ha sido instalado / actualizado con éxito!"
echo "=========================================================="
