#!/usr/bin/env bash
# Installs Bisel on your watch from a Mac or Linux computer, over wireless debugging.
# It downloads Google's adb and the app to a temporary folder and removes them when it finishes.
set -euo pipefail
SITE=https://biselapp.netlify.app
APK_SHA=be8ab1f50b24afee203c1821227fee0c282be1518ab5f8eb98843f4d40c150ea
PKG=com.watchbridge

TMP=$(mktemp -d)
trap 'rm -rf "$TMP"' EXIT
case "$(uname -s)" in
  Darwin) TOOLS=platform-tools-latest-darwin.zip ;;
  *) TOOLS=platform-tools-latest-linux.zip ;;
esac

echo "Descargando adb (Google) y Bisel…"
curl -fsSL "https://dl.google.com/android/repository/$TOOLS" -o "$TMP/tools.zip"
unzip -q "$TMP/tools.zip" -d "$TMP"
ADB="$TMP/platform-tools/adb"
curl -fsSL "$SITE/bisel.apk" -o "$TMP/bisel.apk"
if [ "$(shasum -a 256 "$TMP/bisel.apk" | cut -d' ' -f1)" != "$APK_SHA" ]; then
  echo "La descarga de Bisel no coincide con la esperada. No se ha instalado nada."; exit 1
fi

echo
echo "En el reloj: Ajustes › Opciones de desarrollador › Depuración inalámbrica › Vincular nuevo dispositivo."
read -r -p "Dirección que muestra esa pantalla (IP:puerto): " PAIR
read -r -p "Código de 6 cifras: " CODE
"$ADB" pair "$PAIR" "$CODE"

echo
echo "Vuelve atrás en el reloj, a la pantalla principal de Depuración inalámbrica."
read -r -p "Dirección que muestra ahora (IP:puerto, es distinta): " ADDR
"$ADB" connect "$ADDR"
sleep 1

echo "Instalando…"
"$ADB" -s "$ADDR" install -r "$TMP/bisel.apk"
# Optional permissions only adb can give: brightness, always-on display, vibration, Do Not Disturb, background heart rate.
"$ADB" -s "$ADDR" shell appops set $PKG WRITE_SETTINGS allow || true
"$ADB" -s "$ADDR" shell pm grant $PKG android.permission.WRITE_SECURE_SETTINGS || true
"$ADB" -s "$ADDR" shell cmd notification allow_dnd $PKG || true
"$ADB" -s "$ADDR" shell pm grant $PKG android.permission.health.READ_HEART_RATE || true
"$ADB" -s "$ADDR" shell pm grant $PKG android.permission.health.READ_HEALTH_DATA_IN_BACKGROUND || true
"$ADB" disconnect "$ADDR" >/dev/null || true
"$ADB" kill-server || true

echo
echo "Listo. Ya puedes apagar la depuración inalámbrica. Abre Bisel en el reloj y sigue en el iPhone."
