#!/usr/bin/env bash
# Startar om Expo-tmux-sessionen för LAN-telefontest.
# Sourcar .env.telefontest så att REACT_NATIVE_PACKAGER_HOSTNAME och
# API_BASE_URL sätts innan app.config.ts läser dem.
#
# Användning (från repo-root):
#   ./scripts/expo-lan.sh
#
# Krav: tmux, pnpm, apps/mobile/package.json

set -euo pipefail

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
REPO_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)"
ENV_FILE="${REPO_ROOT}/.env.telefontest"
LOG_FILE="${REPO_ROOT}/logs/expo.log"
SESSION_NAME="expo"

if [[ ! -f "${ENV_FILE}" ]]; then
  echo "❌ ${ENV_FILE} saknas. Skapa den med minst:"
  echo "   REACT_NATIVE_PACKAGER_HOSTNAME=<datorns LAN-IP>"
  echo "   API_BASE_URL=http://<datorns LAN-IP>:4000"
  exit 1
fi

# Sourca env-filen i nuvarande shell så variablerna blir tillgängliga.
set -a
# shellcheck source=/dev/null
. "${ENV_FILE}"
set +a

# Kontrollera att obligatoriska variabler finns.
if [[ -z "${REACT_NATIVE_PACKAGER_HOSTNAME:-}" || -z "${API_BASE_URL:-}" ]]; then
  echo "❌ .env.telefontest måste innehålla REACT_NATIVE_PACKAGER_HOSTNAME och API_BASE_URL"
  exit 1
fi

mkdir -p "$(dirname "${LOG_FILE}")"

echo "🔄 Dödar gammal tmux-session '${SESSION_NAME}' (om den finns)..."
tmux kill-session -t "${SESSION_NAME}" 2>/dev/null || true

echo "🚀 Startar Expo på ${REACT_NATIVE_PACKAGER_HOSTNAME}:8081 (API: ${API_BASE_URL})..."
# Starta utan pipe/tee — Expo skriver QR-kod och exp://-raden till terminalen
# och kan hänga om stdout är omdirigerad. Loggning sker istället via tmux capture.
tmux new-session -d -s "${SESSION_NAME}" \
  "cd '${REPO_ROOT}/apps/mobile' && REACT_NATIVE_PACKAGER_HOSTNAME='${REACT_NATIVE_PACKAGER_HOSTNAME}' API_BASE_URL='${API_BASE_URL}' pnpm start"

echo "⏳ Väntar på att Expo ska publicera exp://-raden..."
for i in {1..45}; do
  sleep 1
  if tmux capture-pane -t "${SESSION_NAME}" -p 2>/dev/null | grep -m1 "exp://${REACT_NATIVE_PACKAGER_HOSTNAME}:8081" >/dev/null 2>&1; then
    # Spara en loggsnapshot
    tmux capture-pane -t "${SESSION_NAME}" -p > "${LOG_FILE}"
    echo "✅ Expo kör på exp://${REACT_NATIVE_PACKAGER_HOSTNAME}:8081"
    echo "   Loggsnapshot: ${LOG_FILE}"
    echo "   Kör 'tmux attach -t ${SESSION_NAME}' för live-loggar."
    exit 0
  fi
done

echo "⚠️  Expo verkar ha startat men exp://${REACT_NATIVE_PACKAGER_HOSTNAME}:8081 syns inte ännu."
echo "   Kör 'tmux attach -t ${SESSION_NAME}' för att se vad som händer."
exit 0
