#!/bin/bash
DIR="$(cd "$(dirname "$0")/.." && pwd)"
APP_DIR="$DIR/Resources/app"

# Dynamic port selection
PORT=5173
while lsof -i :$PORT >/dev/null 2>&1; do
    PORT=$((PORT+1))
done

NODE_BIN=$(which node 2>/dev/null)
if [ -z "$NODE_BIN" ]; then
    if [ -x "/opt/homebrew/bin/node" ]; then
        NODE_BIN="/opt/homebrew/bin/node"
    elif [ -x "/usr/local/bin/node" ]; then
        NODE_BIN="/usr/local/bin/node"
    fi
fi

cd "$APP_DIR"
PORT=$PORT NODE_ENV=production "$NODE_BIN" server/index.js &
SERVER_PID=$!

trap "kill $SERVER_PID 2>/dev/null" EXIT

# Wait for server readiness
for i in {1..30}; do
    if curl -s "http://127.0.0.1:$PORT/api/app/metadata" >/dev/null 2>&1; then
        break
    fi
    sleep 0.2
done

TARGET_URL="http://127.0.0.1:$PORT"

# App-mode window execution
if [ -d "/Applications/Google Chrome.app" ]; then
    "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" --app="$TARGET_URL" --user-data-dir="$HOME/Library/Application Support/DrCoder/chrome-profile" >/dev/null 2>&1 &
    WINDOW_PID=$!
    wait $WINDOW_PID
elif [ -d "/Applications/Microsoft Edge.app" ]; then
    "/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge" --app="$TARGET_URL" --user-data-dir="$HOME/Library/Application Support/DrCoder/edge-profile" >/dev/null 2>&1 &
    WINDOW_PID=$!
    wait $WINDOW_PID
else
    open "$TARGET_URL"
    wait $SERVER_PID
fi
