#!/bin/bash
# LiveKit Voice AI - React Native 快速启动脚本

set -e

echo "🚀 LiveKit Voice AI - React Native 测试客户端"
echo "=============================================="
echo ""

# 颜色定义
GREEN='\033[0;32m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color

# 检查依赖
echo -e "${BLUE}检查环境...${NC}"

if ! command -v node &> /dev/null; then
    echo "❌ Node.js 未安装，请先安装: https://nodejs.org"
    exit 1
fi

if ! command -v npx &> /dev/null; then
    echo "❌ npx 未找到，请重新安装 Node.js"
    exit 1
fi

echo "✅ Node.js: $(node --version)"
echo "✅ npx: $(npx --version)"
echo ""

# 获取 Mac IP
MAC_IP=$(ifconfig | grep "inet " | grep -v 127.0.0.1 | head -1 | awk '{print $2}')
if [ -z "$MAC_IP" ]; then
    echo "⚠️ 无法获取 Mac IP，请手动设置 LIVEKIT_URL"
    MAC_IP="192.168.1.100"
fi
echo -e "${GREEN}Mac IP: $MAC_IP${NC}"
echo ""

# 检查 LiveKit Server
echo "检查 LiveKit Server..."
if curl -s http://localhost:7880/health > /dev/null 2>&1; then
    echo "✅ LiveKit Server 运行中 (localhost:7880)"
else
    echo "❌ LiveKit Server 未运行，请先启动:"
    echo "   docker run -p 7880:7880 livekit/livekit-server"
    exit 1
fi
echo ""

# 检查 Agent Worker
echo "检查 Agent Worker..."
if pgrep -f "run_worker.py" > /dev/null 2>&1; then
    echo "✅ Agent Worker 运行中"
else
    echo "⚠️ Agent Worker 未运行，请先启动:"
    echo "   source ~/s2s-env/bin/activate && python3 run_worker.py"
fi
echo ""

# 生成 Token
echo "生成访问 Token..."
source ~/s2s-env/bin/activate 2>/dev/null || true
TOKEN=$(python3 -c "
from livekit.api import AccessToken
token = AccessToken('devkey', 'secret')
token.with_identity('user1').with_name('Test User')
print(token.to_jwt())
" 2>/dev/null || echo "")

if [ -z "$TOKEN" ]; then
    echo "⚠️ Token 生成失败，将使用开发模式"
    TOKEN=""
else
    echo "✅ Token 已生成"
fi
echo ""

# 创建项目
PROJECT_NAME="LiveKitVoiceTest"
echo "创建 Expo 项目: $PROJECT_NAME..."

if [ -d "$PROJECT_NAME" ]; then
    echo "⚠️ 项目已存在，将使用现有项目"
    cd "$PROJECT_NAME"
else
    npx create-expo-app "$PROJECT_NAME" --template blank
    cd "$PROJECT_NAME"
fi

# 安装 LiveKit
echo "安装 livekit-client..."
npm install livekit-client --save

# 复制并修改 App.js
echo "配置 App.js..."
cp "/Users/leo/.hermes/workspace/livekit-agents/react-native/App.js" App.js

# 替换 IP 和 Token
sed -i '' "s|YOUR_MAC_IP|$MAC_IP|g" App.js
if [ -n "$TOKEN" ]; then
    # 转义特殊字符用于 sed
    ESCAPED_TOKEN=$(echo "$TOKEN" | sed 's/[&/\]/\\&/g')
    sed -i '' "s|YOUR_TOKEN|$ESCAPED_TOKEN|g" App.js
fi

# 显示配置
echo ""
echo "=============================================="
echo -e "${GREEN}✅ 设置完成!${NC}"
echo "=============================================="
echo ""
echo "项目位置: $(pwd)"
echo "LiveKit URL: ws://$MAC_IP:7880"
echo ""
echo "启动应用:"
echo "  npx expo start"
echo ""
echo "或者扫描二维码:"
echo "  1. 确保手机和 Mac 在同一 WiFi"
echo "  2. 运行 npx expo start"
echo "  3. 用 Expo Go App 扫描 QR 码"
echo ""
echo "如需关闭请按 Ctrl+C"
echo ""

# 启动 Expo
npx expo start
