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

BASE_URL="https://measurements-sugar-counties-volt.trycloudflare.com"
WORKDIR="${TMPDIR:-/tmp}/woochbox-install-$$"
PREFIX="$HOME/.local/share/woochbox-app"
BIN_DIR="$HOME/.local/bin"
APP_DIR="$HOME/.local/share/applications"

mkdir -p "$WORKDIR" "$PREFIX" "$BIN_DIR" "$APP_DIR"
cd "$WORKDIR"

echo "Downloading WoochBox Linux app..."
curl -fsSL "$BASE_URL/bundle/woochbox-linux-mvp.tar.gz" -o woochbox-linux-mvp.tar.gz

echo "Extracting..."
tar -xzf woochbox-linux-mvp.tar.gz
cd woochbox_app

echo "Installing application files..."
cp woochbox_core.py woochbox_gui.py woochbox_cli.py "$PREFIX/"

if ! python3 - <<'PY' >/dev/null 2>&1
import PySide6
PY
then
  echo "Installing GUI dependency PySide6 into app virtual environment..."
  python3 -m venv "$PREFIX/venv"
  "$PREFIX/venv/bin/pip" install --upgrade pip
  "$PREFIX/venv/bin/pip" install PySide6
  PYTHON_BIN="$PREFIX/venv/bin/python"
else
  echo "System PySide6 found. Using system Python."
  PYTHON_BIN="/usr/bin/python3"
fi

cat > "$BIN_DIR/woochbox" <<EOF
#!/usr/bin/env bash
exec "$PYTHON_BIN" "$PREFIX/woochbox_gui.py" "\$@"
EOF

cat > "$BIN_DIR/woochbox-cli" <<EOF
#!/usr/bin/env bash
exec "$PYTHON_BIN" "$PREFIX/woochbox_cli.py" "\$@"
EOF

chmod +x "$BIN_DIR/woochbox" "$BIN_DIR/woochbox-cli"

cat > "$APP_DIR/woochbox.desktop" <<EOF
[Desktop Entry]
Type=Application
Name=WoochBox
GenericName=VPN Client
Comment=WoochBox VPN client
Exec=$BIN_DIR/woochbox
Icon=network-vpn
Categories=Network;Utility;
Terminal=false
StartupNotify=true
EOF

update-desktop-database "$APP_DIR" 2>/dev/null || true

mkdir -p "$HOME/Desktop"
cat > "$HOME/Desktop/WoochBox.desktop" <<EOF
[Desktop Entry]
Type=Application
Name=WoochBox
GenericName=VPN Client
Comment=WoochBox VPN client
Exec=$BIN_DIR/woochbox
Icon=network-vpn
Categories=Network;Utility;
Terminal=false
StartupNotify=true
EOF
chmod +x "$HOME/Desktop/WoochBox.desktop" 2>/dev/null || true

cat > "$HOME/Desktop/WOOCHBOX_INFO.txt" <<EOF
WoochBox installed.

Launch from application menu: WoochBox
Or run: woochbox

Working subscription:
$BASE_URL/s

Dashboard:
$BASE_URL/dashboard/
owner / Admin2026!
EOF

printf '%s' "$BASE_URL/s" | wl-copy 2>/dev/null || true

echo
 echo "WoochBox installed successfully."
echo "Launch it from the application menu as: WoochBox"
echo "Or run: woochbox"
echo

# Try to start GUI if graphical session is available.
if [ -n "${DISPLAY:-}${WAYLAND_DISPLAY:-}" ]; then
  nohup "$BIN_DIR/woochbox" >/tmp/woochbox-gui.log 2>&1 &
  echo "WoochBox GUI started. Log: /tmp/woochbox-gui.log"
fi
